【问题标题】:Having trouble installing specific font in an iOS app - incompatible TTF?在 iOS 应用程序中安装特定字体时遇到问题 - 不兼容的 TTF?
【发布时间】:2013-04-05 01:55:10
【问题描述】:

在我的代码库中有一些字体文件用于字体 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);
   }
 }

我检查了目标的“复制捆绑资源”构建阶段,看到字体已添加到列表中。

我尝试添加我在另一个应用程序中使用过的另一种字体“chess-merida-unicode.ttf”,以检查我是否正确添加了字体 - 我将其复制到应用程序并将其添加到由提供的字体数组中应用程序,看到它出现在“Copy Bundle Resources”列表中,使用上面的代码sn-p报告它是可用的。

接下来我查看了 OS X 中的字体 - 双击确实打开了 Font Book 但字体没有打开或添加。当我尝试将所有 Nubian 字体作为新集合拖到 Font Book 中时,它报告了所有文件的问题,特别是在字体文件中包含的表格中。

选择所有字体,然后选择继续没有做任何事情。

我下载了一个名为 Font Agent Pro 的第三方应用程序的试用版,它也无法加载这些字体。

我找到了一个名为 fonts.com 的粗略网站并下载了另一个 Nubian-Medium ("ufonts.com_nubian-medium_1_.ttf") - Xcode 能够识别该文件。

我检查了这些文件的权限,并确保它们都是 rw 的,没有变化。

此时您会怀疑文件只是损坏或损坏,但它们正在网页上使用(这也是项目的一部分)并且工作正常。我还可以采取哪些其他步骤?我该怎么做才能将这些文件添加到 iOS 项目中?如果有某些类型的 TTF 不能在 iOS 项目中使用,我如何检查它们是否属于那种类型?

【问题讨论】:

  • 您尝试过使用 MyFonts.com 的帮助吗? myfonts.com/help
  • 没有,但我读过其他人的经验,他们没有收到 myfonts 的回复。
  • 好吧,如果你不问,你肯定不会得到回应。为什么不至少尝试一下?也许您忽略了一些简单的事情。
  • 两个原因——原来和myfonts做交易的人不愿意,问题就解决了。 (答案贴在下面)。

标签: ios xcode fonts truetype


【解决方案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];

【讨论】:

  • 感谢您的回复 - 是的,这些是我用来安装字体的步骤并且它们有效(如问题中所述)。我不知道的是如何找出我已经拥有的字体文件有什么问题,为什么这些字体文件不起作用。这才是真正的问题。快速搜索发现了数十个可供下载的 Nubian 变体,但我们拥有的文件已获得许可。
  • 字体文件有时可能会有所不同,只需双击它将在弹出窗口中打开的字体文件,并且在标题栏中会显示字体的实际名称,只有该名称可以在您的应用程序中使用,不是文件名。
  • 不是字体名。字体名称是从项目窗格中显示的字体名称复制和粘贴的。
  • 有时会发生您使用的实际字体名称和 .ttf 的文件名不同。这就是为什么
  • 您看到打印出所有可用字体名称的代码了吗?没有打印 Nubian(或任何变体)。它没有加载。 Font Book 无法加载它的事实也帮助我认为这是字体的问题,而不是我试图将它包含在项目中的方式。
【解决方案2】:

答案似乎是这些字体是"web" fonts。我不知道如何区分,因为 TTF 文件看起来就像“桌面”字体。学习如何做到这一点是这个问题的目的。

实际上,从某人的硬盘驱动器中挖掘出一个旧存档会发现另一个使用 TTF 字体的存档。这些字体仍然有 8.3 个文件名,并且都是作为它们自己的字体系列的成员创建的(因此 Nubian-Medium 和 Nubian-MediumItalic 没有任何关系)。我将它们重新命名,然后通过 RoboFonts 的试用来纠正家庭关系。这导致 TTF 都在 Nubian 家族中。然后发现了一个奇怪的问题,使用这种字体创建的 UILabel 在框架顶部带有 1 像素的水平线。再次执行该过程但选择生成 OTF 输出摆脱了这条线。

字体很简单,但如果不是,那么它们真的很难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    相关资源
    最近更新 更多