从ttf文件获取字体

在我的iOS应用程序中,我使用从文件dynamic加载的自定义字体。

要在代码中使用它们,我需要知道加载的字体的家庭。 那么,有没有办法做到这一点?

更新:

我不能硬编码字体系列,导致我的应用程序从服务器加载它。 当然,还有一种方法可以在服务器响应中传递字体系列,但是现在我正在寻找一个不影响服务器的更好的版本(不需要更改它)。

你提到你从服务器上获取你的字体。 我find了一个能够在Linux服务器上使用脚本将其closures的答案: https : //stackoverflow.com/a/8005077/1126783

在文档中,请参阅“ 获取可用字体名称”一节 。 你可以列出你想要的家庭的所有姓氏和个人字体名称。 我通常只是暂停debugging器,并从命令行自己调用函数。 这是获取iOS将使用的名称最安全的方法。 或者你在说下载字体并加载它们? 这需要的不仅仅是知道他们的名字。

编辑好吧,然后你正在下载字体。 在这种情况下,你将不得不放入核心文本的世界。 看到这个参考开始(注意称为“注册字体”的function)。 如果您注册成功,则会使用上述方法显示。

我从堆栈溢出的地方得到这个代码。 希望能帮助到你。 它列出所有加载的字体名称…

 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; NSArray *fontNames; NSInteger indFamily, indFont; for (indFamily=0; indFamily<[familyNames count]; ++indFamily) { NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); fontNames = [[NSArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [familyNames objectAtIndex:indFamily]]]; for (indFont=0; indFont<[fontNames count]; ++indFont) { NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]); } } 

字体加载我没有…

 NSData *fontData = [NSData dataWithContentsOfFile:filePath]; if (fontData) { // create font from loaded data and get it's postscript name CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((CFDataRef)fontData); CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider); NSString *postScriptName = (NSString *)CGFontCopyPostScriptName(loadedFont); // if the font with same postscript name wasn't already registered - do it if (postScriptName && ![UIFont fontWithName:postScriptName size:10]) { NSError *error; if (!CTFontManagerRegisterGraphicsFont(loadedFont, (CFErrorRef *)&error)) { NSLog(@"Can't load font: %@", error); } } CGFontRelease(loadedFont); CGDataProviderRelease(fontDataProvider); }