iOS 5自定义字体

5

我已经将自定义字体添加到我的资源、捆绑资源以及我的plist文件中。在iOS5中一切都正常,但当我尝试在iOS 4.3模拟器中运行时,所有自定义的字体都不起作用。

有任何想法为什么会这样吗?

以下是我访问字体的示例:

lblWait.font = [UIFont fontWithName:@"AvenirNextLTPro-Medium" size:22];

你能展示一下在 Fonts provided by application 下的 plist 中确切的数值列表吗? - warrenm
2个回答

24

第一个参数中的NSString名称必须准确无误,但奇怪的是它并不一致。这取决于它是.otf文件还是.ttf文件。我发现.otf文件使用Postscript名称而.ttf使用全名。找到它们的好方法是在Font Book中打开字体文件并找到其信息(cmd-I)。我会尝试两种方式来看哪种更适合。

输入图像描述

编辑:

并不总是TTF使用FULLNAME和OTF使用POSTSCRIPT名称,您应该尝试两个名称。


1
这是很好的反馈。我能够在iOS 5.1模拟器、iOS 4.3模拟器和运行iOS 4.1的iPhone上让这个特定字体工作。OTF文件名为AvenirNextLTPro-Medium.otf,内部PostScript名称为AvenirNextLTPro-Medium - warrenm
warrenm,是的,那样做可以解决问题,但是当你在iOS4.3和iOS5之间切换时,字体看起来完全不同。我仍然在这里遇到问题。没有什么是一致的。当我使用全名时,设置任何字体大小都没有效果!当我使用PostScript名称时,字体大小有效,在iOS5中字体有效,但在iOS5以下的任何版本中字体无效,这是我的最初问题。 - Jesse
https://dev59.com/EGsz5IYBdhLWcg3wVGEy - Jesse
warrenm,请尝试使用多个avenir字体...你做不到....iOS 5中的字体渲染已经改变。在iOS 4中,无论字体文件中有多少面孔和您请求哪个面孔,只有一个面孔可用。iOS 5允许使用嵌入字体文件中的所有面孔。在我们的情况下,我们请求了常规字体,但却得到了轻字体。在iOS 5中,我们会得到常规字体,这会破坏一些UILabel间距。 - Jesse
这个答案指出了一个重要的问题,但并不总是OTF使用POSTSCRIPT或TTF使用FULLNAME,我只是不得不在ttf文件中使用postscript名称。 - jturolla
我成功地使用了一个带有PostScript名称(HandOfSean)而非完整名称(Hand Of Sean)的.ttf字体。 - Lucien

9
很多时候,这个问题的源头在于字体文件被添加到了项目中,但却没有添加到目标中。点击该字体,并确保在右侧栏目的“目标成员资格”中选中它。

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