iOS 12 上未显示图标字体

Icon font not displaying on iOS 12

我有一个图标字体在 iOS 12 上不显示的问题(它在 iOS <= 11 上工作得很好)。关于我发现的内容以及我们如何使用该字体的更多详细信息:

1) 字体正确包含在项目中,在NSlogging [UIFont familyNames][UIFont fontNamesForFamilyName:iconFontFamilyName]

时出现

2) 我正在使用 \u 表示法访问图标:label.text = @"\uXXXX"。当 XXXX NOT 存在于字体中时,应用程序显示 "question-mark-in-a-square",表明(正确地)该代码不存在。但是,如果代码 DOES 存在于字体中,则应用程序根本不显示任何内容 - 相应的元素显示为空白。

我们是否遗漏了什么?

综上所述,问题很可能与 Icomoon 的字体生成有关;特别是 cmap 编码子表的类型。我建议采取两项措施:

  1. 通过使用字体转换工具(例如 https://onlinefontconverter.com)将您的 ttf 文件转换为 otf(iOS 也支持)来验证这个假设.
  2. 如果您的字形显示,则继续使用新的 otf 文件,同时直接向 IcoMoon 提出问题。

我记得在 MinimumRubber project 中使用设备上的字体生成时遇到过类似的问题。我发现 UILabelUITextView 都需要仔细选择平台标识符和特定于平台的编码标识符才能显示字形。 Apple 重构了这部分代码并不让我感到惊讶