我想允许我的应用程序用户在应用程序中使用自己的字体,方法是将它们复制到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];
希望它能对遇到这个问题的人有所帮助!