2011-04-27 5 views
14

ダウンロードしたフォントでテキストを描画しようとしていました。私はAPIのドキュメントを見て、Webを検索しました。私は解決策を見つけましたが、問題はそれがCoreGraphicsレベルのフレームワークにのみ適用可能であるということです。そこでCGFontUIFontに変換する方法を探しましたが、これを行う方法はありませんでした。なぜUIFontとCGFont/CTFontは完全に分離されていますか?

同じフォントファイルから作成されていても、UIFontとは完全に分離されています。 CGFontCTFontは相互に変換可能ですが、UIFontの場合、唯一の方法は名前とサイズのような属性で再作成しています。また、適用可能なコードも分離されています。

たとえば、CATextLayerは、CGFont/CTFont - UIFontのみを受け入れます。しかし、すべてのUIKitコントロールはUIFontだけを受け入れます。

なぜこの分離が存在するのですか?または私は間違っていますか? (UIKitクラスでダウンロードしたフォントを使用する方法?)

答えて

17

短い答え:

(反転)フレームワークビットを掘った後、

より詳細な回答を「アップルだけの人々が知っています」

  • UIKit.frameworkはすべてCGFontタイプでを使用していません
  • UIKit.framework使用が代わりにCTFontGSFontをCoreText ...
  • GSFontGraphicsServicesプライベートフレームワーク
  • GraphicsServices ...から来ている...だからここCGFont

を使用私の推測です(完全になるかもしれません間違った)

  • UIFont>GSFontは>CoreGraphics>CGFont
  • UIKit>GraphicsServices(プライベート):少なくともフォントに関する

    、アップルのエンジニアは、obscur GraphicsServicesつを介して、UIKitCoreGraphicsフレームワーク間の抽象化レイヤを設定しています。>iOS(プライベート)>Mac OSX

  • iOS:彼らはこれをしなかったのはなぜ

    、私は、Mac OSXから来CoreGraphics、と言うでしょう、iOSデバイスのために最適ではなかった、とUIKit iOSのみで、両apiの間にレイヤーを追加しました。またはもっと一般的には、彼らはCoreGraphicsから完全にUIKitを分離する予定です... MacOSXのiOS ...誰が知っていますか? リンゴの人々は私の短い答え:)、あなたがthisを読んで興味があるかもしれませんUIKitでカスタムフォントの使用について

ありません。