我想允许我的应用程序用户在应用程序中使用自己的字体,方法是将它们复制到Documents目录中(通过iTunes)。但是,我找不到以这种方式使用自定义字体的方法,因为正确的方法取决于使用应用程序的 Info.plist 中的 UIAppFonts 键。

有什么方法可以在运行时覆盖它吗?

谢谢。

最佳答案

我知道这是一个老问题,但是我今天尝试这样做,并找到了使用CoreText和CGFont的方法。

首先,请确保您添加了CoreText框架,

#import <CoreText/CoreText.h>

然后应该这样做(在本例中,我使用的是先前下载并保存到Documents目录内的fonts目录中的字体):
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * documentsDirectory = [paths objectAtIndex:0];
    NSString * fontPath = [documentsDirectory stringByAppendingPathComponent:@"Fonts/Chalkduster.ttf"];
    NSURL * url = [NSURL fileURLWithPath:fontPath];
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);
    CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
    NSString * newFontName = (__bridge NSString *)CGFontCopyPostScriptName(newFont);
    CGDataProviderRelease(fontDataProvider);
    CFErrorRef error;
    CTFontManagerRegisterGraphicsFont(newFont, &error);
    CGFontRelease(newFont);

    UIFont * finalFont = [UIFont fontWithName:newFontName size:20.0f];

希望它能对遇到这个问题的人有所帮助!

09-17 21:55