3

ここからiPhoneアプリのプロジェクトにカスタムフォントをロードする方法をすでに知ってい ます。コードからこれを行う方法があるかどうか尋ねたいですか? 私の問題は、アプリにリソースフォルダーがあり、フォントファイル名があり、それを「myfont.ttf」と呼ぶことです。

code からttf ファイルを取得して plist ファイルに入れたいのですが、さらにfontWithName:size:メソッドの表示名を知りたいです。これを達成する方法はありますか?

4

3 に答える 3

14

これは古い質問ですが、他の誰かがこれに出くわした場合に備えて、とにかくこれを行う方法があります.


+ (void)loadFontAtPath:(NSString*)path{
    NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
    if(data == nil){
        NSLog(@"Failed to load font. Data at path is null");
        return;
    }
    CFErrorRef error;
    CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
    CGFontRef font = CGFontCreateWithDataProvider(provider);
    if(!CTFontManagerRegisterGraphicsFont(font, &error)){
        CFStringRef errorDescription = CFErrorCopyDescription(error);
        NSLog(@"Failed to load font: %@", errorDescription);
        CFRelease(errorDescription);
    }
    CFRelease(font);
    CFRelease(provider);
}

これにより、実行時に指定されたパスにフォントが読み込まれ、plist に追加せずに通常と同じように使用できます。

于 2013-01-28T04:21:26.973 に答える
4

はい、できます。ただし、CoreText および/または CoreGraphics で多くの作業を行う必要があります。

これを行うのに役立つ Zynga の素敵なクラスがあります: https://github.com/zynga/FontLabel

サンプル プロジェクトは、.plist を使用せずにバンドルから .ttf ファイルをロードし、アプリケーション内でこれらのフォントを使用する方法を示しています。

コードは有効で、最初から良い点です。

編集: 前のアプローチでは CoreGraphics を使用していますが、これは優れていますが、Core Text を使用する方がはるかに優れています。この質問に対する興味深い回答を見つけました: Core Text を使用してファイルからフォント (TTF) を読み込むにはどうすればよいですか?

CoreText フレームワークの経験がない場合は、Apple ドキュメント内の公式の紹介をお読みください。

于 2012-04-25T09:32:34.847 に答える