我从 Xcode app-info.plist 在我的 iOS 应用程序中添加了一些自定义的真字体(使用“应用程序提供的字体”键)。
iOS 自动将它们识别为应用程序中的可用字体,我可以使用 [UIFont familyNames] 获取所有字体系列的名称,包括 iOS 提供的系统字体。
但我想知道哪些字体来自 iOS 系统字体,哪些字体来自我在捆绑包中添加的自定义字体。
是否有任何编程方法可以将捆绑字体与系统字体区分开来,或者只是一种获取所有捆绑字体名称的方法?
我从 Xcode app-info.plist 在我的 iOS 应用程序中添加了一些自定义的真字体(使用“应用程序提供的字体”键)。
iOS 自动将它们识别为应用程序中的可用字体,我可以使用 [UIFont familyNames] 获取所有字体系列的名称,包括 iOS 提供的系统字体。
但我想知道哪些字体来自 iOS 系统字体,哪些字体来自我在捆绑包中添加的自定义字体。
是否有任何编程方法可以将捆绑字体与系统字体区分开来,或者只是一种获取所有捆绑字体名称的方法?
这是从另一个答案中公然扯掉的 它应该为您提供捆绑字体中的所有字体名称。
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSArray* fontFiles = [infoDict objectForKey:@"UIAppFonts"];
for (NSString *fontFile in fontFiles) {
NSLog(@"file name: %@", fontFile);
NSURL *url = [[NSBundle mainBundle] URLForResource:fontFile withExtension:NULL];
NSData *fontData = [NSData dataWithContentsOfURL:url];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)fontData);
CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString *fullName = CFBridgingRelease(CGFontCopyFullName(loadedFont));
CGFontRelease(loadedFont);
CGDataProviderRelease(fontDataProvider);
NSLog(@"font name: %@", fullName);
}
这个答案会给你正确的字体名称,但如果你只是想要信息 plist 中的字体名称:
NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSArray *arrayOfFontStringNames = infoDict[@"UIAppFonts"];