ttf 字体在界面生成器或模拟器中不适用于 iPhone

Posted

技术标签:

【中文标题】ttf 字体在界面生成器或模拟器中不适用于 iPhone【英文标题】:ttf font not available for iPhone in interface builder or simulator 【发布时间】:2011-05-28 18:12:04 【问题描述】:

我在我的 Xcode 项目中添加了一个字体文件 (.ttf) 到资源中。此外,我将它添加到 info.plist 中的 UIAppFonts 中。

但当我想使用这种字体时,我什至不认为它是 IB 中的一种选择。

在我的系统上安装字体后,我开始在 IB 中看到它,但仍然 - 更改为它不会改变任何东西 - 一些默认系统字体显示在 Interface Builder 以及 iPhone 模拟器中。

为了能够使用我自己的字体,我还应该做些什么?

【问题讨论】:

【参考方案1】:

要在 ios 中使用自定义字体,您必须以编程方式设置它们。

例如,假设您将一个名为 swellfont.ttf 的字体文件添加到您的项目中。 然后,您将进入您的 App-Info.plist 文件并将文件的全名添加到由 UIAppFonts 键入的数组的下一个索引中,正如您所提到的。

<key>UIAppFonts</key>
<array>
    <string>swellfont.ttf</string>
</array>

然后,使用字体:

label.font = [UIFont fontWithName:@"swellfont" size:12];

假设标签是 UILabel 并且 swellfont.ttf 不是 protected。重要的是要注意 UIFont 的 fontWithName 不是指文件名,而是它想要字体的实际名称。如果您使用 FontForge 打开字体,您可以通过从菜单栏中选择元素 > 字体信息来查看此信息。可能有更聪明的方法可以找出这些信息。

【讨论】:

应该注意字符串参数应该是字体名称而不是字体文件的文件名(可能相同也可能不同)。这种区别让我转动了一段时间。 是的 - 我在您评论时添加了该信息。这也给了我不少问题。有点混乱!苹果在“名称”的定义上玩得又快又松。 :) 这就是我出错的地方...多亏了这个,它现在可以工作了。谢谢 :D - 重要的是要注意 UIFont 的 fontWithName 不是指文件名,而是它想要字体的实际名称。 我遇到了一个问题,即使按照这些步骤操作,字体仍然不可用。我需要将字体文件添加到我的 Copy Bundle Resources 构建阶段以将其包含在构建中。 感谢 Ryan,我也遇到了同样的问题,必须将字体添加到“复制捆绑资源”中才能正常工作!谢谢【参考方案2】:

我在一个 APP 中使用 2 种字体。第一个自动添加到“复制捆绑资源”中,另一个没有。我必须自己添加那个。

代码调用:

[labelName setFont:[UIFont fontWithName:@"OneGreatBigFont" size:40]];

【讨论】:

以上是关于ttf 字体在界面生成器或模拟器中不适用于 iPhone的主要内容,如果未能解决你的问题,请参考以下文章

Font BebasNeue不适用于iOS 11

斜体字体不适用于 XCode

@font-face 不适用于斜体/粗体字体

如何将Ttf或其他字体转换为.Xnb / XNA Game Studio字体?

字体ttf文件无法与IE一起使用

Bold / Italic不适用于使用PhantomJS的自定义字体