在iOS应用程序中安装特定字体时遇到问题 - TTF不兼容?

3
我的代码库中有一些与Nubian和Nubian-Alt字体相关的字体文件。这些字体是经过许可和付费的,需要使用它们。然而,我无法在iOS中使用此字体,即使在Finder中该字体预览正常并被识别为TrueType字体,在Font Book中也无法打开它。
我开始尝试将Nubian-Medium添加到iOS应用程序中——使用应用程序Info.plist中的“应用程序提供的字体”键。但是,在使用以下命令生成的列表中,该字体没有出现:
 for (NSString *familyName in [UIFont familyNames]) {
   for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
     NSLog(@"%@", fontName);
   }
 }

我检查了Target的“复制包资源”构建阶段,并看到字体已添加到列表中。 我尝试添加另一个我在另一个应用程序中使用过的字体“chess-merida-unicode.ttf”,以检查我是否正确地添加了字体 - 我将其复制到应用程序并将其添加到应用程序提供的字体数组中,看到它出现在“复制包资源”列表中,并使用上面的代码片段报告为可用。
接下来我在OS X中查看字体 - 双击确实会打开Font Book,但字体没有被打开或添加。当我尝试将所有Nubian字体拖到Font Book中作为新集合时,它报告了所有文件的问题,特别是在字体文件中包含的表格中。
选择所有字体然后选择继续没有任何作用。
我下载了一个名为Font Agent Pro的第三方应用程序的试用版,它也无法加载这些字体。
我找到了一个靠不住的网站fonts.com,并下载了另一个Nubian-Medium(“ufonts.com_nubian-medium_1_.ttf”) - Xcode能够识别该文件。
我检查了这些文件的权限并确保它们对所有人都具有读写权限,但没有变化。
此时你可能认为这些文件只是损坏或损坏了,但它们正在网页上使用(也是项目的一部分),并且运行良好。我可以采取什么其他步骤?我该如何将这些文件添加到iOS项目中?如果有某些无法在iOS项目中使用的TTF,我该如何检查这些是否是这种类型?

你尝试过使用MyFonts.com的帮助吗?http://www.myfonts.com/help/ - djangodude
没有,但我已经阅读了其他人在与myfonts联系时未收到回复的经验。 - Adam Eberbach
如果你不问,肯定得不到回应。为什么不至少试一下呢?也许有些简单的东西你忽略了。 - djangodude
两个原因 - 最初与myfonts进行交易的人不想解决问题,问题已经得到解决(答案如下)。 - Adam Eberbach
2个回答

4
步骤1:从http://www.fontpalace.com/font-download/Nubian-Thin/下载努比亚字体。
步骤2:在项目中添加字体.ttf文件。
步骤3:注册应用程序的字体,在info.plist文件中设置Fonts provided by application键,具体详情见屏幕截图。
步骤4:创建标签并将字体分配给它,如下所示。
UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
[lbl setText:@"I am Nubian-Thin"];
[lbl setFont:[UIFont fontWithName:@"Nubian-Thin" size:26.0f]];

[self.view addSubview:lbl];

See The Screenshot for more reference


1
字体文件有时可能会有变化,只需双击字体文件,它将在弹出窗口中打开,在标题栏中会显示实际的字体名称,只能在您的应用程序中使用该名称,而不是文件名。 - Dipen Panchasara
这不是字体名称。字体名称是从项目窗格中复制并粘贴的。 - Adam Eberbach
有时候,您使用的实际字体名称和.ttf文件的文件名可能会有所不同。这就是为什么。 - Dipen Panchasara
你看到打印出所有可用字体名称的代码了吗?没有Nubian(或任何变体)被打印。它没有被加载。Font Book也无法加载它的事实帮助我认为这是字体的问题,而不是我尝试将其包含在项目中的方式的问题。 - Adam Eberbach
你能看到字体列表顶部的警告吗?它清楚地说明了字体配置可能存在问题。这可能是导致问题的原因。 - Dipen Panchasara
显示剩余2条评论

2
答案似乎是这些字体是"Web"字体。如果给出一个看起来像“桌面”字体的TTF文件,我不知道如何区分它们之间的区别。学习如何做到这一点是这个问题的目的。

实际上,从某人的硬盘中挖出旧存档时,发现了另一个具有可用TTF字体的存档。这些字体仍然具有8.3文件名,并且都作为其自己的字体系列成员创建(因此Nubian-Medium和Nubian-MediumItalic没有任何关系)。我将它们重命名,然后通过RoboFonts的试用版来纠正字体系列关系。结果得到了所有在Nubian系列中的TTF文件。然后发现一个奇怪的问题,即使用此字体创建的UILabel带有一个顶部带有1像素水平线条的框架。再次进行该过程,但选择生成OTF输出可以消除该线条。

字体很容易,除非它们不是,然后它们就变得非常困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接