我的老板想要一个更小的包装尺寸。我们拥有的最大资源是大约 5MB 的后备字体(用于 CJK 字符)。目前我已经设法从手机中读取了后备字体。这是一个 OpenGL 应用程序,我们使用 FreeType 进行字体渲染,所以这就是我不使用 UIFont 的原因。我有有效的代码,但我想知道读取/System/Library/Fonts/CGFontCache.plist是否是被 AppStore 拒绝的理由:
void AddSystemFontToCache(const char* fontName, const int& fontStyle)
{
NSString *nsFontName = [NSString stringWithCString:fontName encoding:NSASCIIStringEncoding];
NSDictionary *nsFontsDict = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/Fonts/CGFontCache.plist"];
NSDictionary *nsTraitsDict = [nsFontsDict valueForKey:@"TraitMappings"];
NSDictionary *nsMappingDict = [nsTraitsDict valueForKey:nsFontName];
NSDictionary *nsFaceNamesDict = [nsFontsDict valueForKey:@"Names"];
NSString* nsFacePath = [nsFaceNamesDict valueForKey:[nsMappingDict valueForKey:nsFontStyle]];
// This function uses FT_New_Face to read the font
AddFontToCache(fontName, [nsFacePath cStringUsingEncoding:NSASCIIStringEncoding]);
}