iOS ttf字体只能部分工作。

3
我需要在我的应用程序中使用OpenSans字体,因此我导入了整个OpenSans字体组,其中包括粗体、特粗体、斜体、常规体、轻体等。我将它们添加到了Mac上的Fontbook中(以检查使用时需要用到的确切名称),在我的项目文件结构中添加了它们,并在Build phases中也将它们添加到了我的项目中。
现在奇怪的是,当我使用UIFont时,只有OpenSans-Bold有效。其他的都无法生效。如果我使用OpenSans-Bold(完全按照Fontbook给出的标识符),一切都正常。但是,如果我改为使用OpenSans-Regular、OpenSans-Light或者该系列的其他字体,我将得到系统字体,并且在使用Quartz绘图时什么也显示不出来。
所有的字体都在所有的列表中,我检查了所有来自Fontbook的标识符(这就是为什么我无法使OpenSans-Bold起作用的原因),但是现在我想不通了。你有什么想法吗?

请展示一些代码。另外,请查看此答案以列出字体名称:https://dev59.com/7WQo5IYBdhLWcg3whPrI#15985120 - Marcus Adams
他正在使用来自谷歌的自定义字体(http://www.google.com/fonts/specimen/Open+Sans)。 - runmad
对我来说,只有OpenSans-Regular可用。我在Storyboard中设置标签的字体,当我使用斜体或粗体时,结果仍然是默认字体。 - Claus
3个回答

14

OpenSans Regular 是指 OpenSans,半粗体是指 OpenSans-Semibold 等。

在 Font Book.app 中选择字体并选择 Command + I,这将呈现字体信息。在顶部的 "PostScript 名称" 中,您可以看到字体的名称以及如何在代码中调用它。

另外,请确保字体实际上已经添加到您的捆绑包和 plist 中 :)


谢谢,让我再试一次。我肯定做过了,但可能有些马虎。为什么他们要这样做呢...无论如何,我会回报的。 - CharlesS

0

你需要将文件放置在正确的位置,然后在 plist 文件中枚举所有文件并将它们打印出来以获取 PDF 名称,以便访问它们。很可能你正在使用错误的名称。 字体有三种名称:

  • 文件名
  • Font Book 中的字体名称
  • PDF 名称 - 这是你在代码中访问字体时使用的名称

请参阅此答案: Adding custom fonts to iOS app finding their real names


0
你可以使用以下代码检查ttf文件提供的字体:
UIFont类提供了这种方法。
(NSArray *)fontNamesForFamilyName:(NSString *)familyName

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