在iOS 11 (或Xcode 9)中加载字体

6

我已经使用 Futura-Demi.otf 字体一段时间了。

通过以下代码,我可以确认该文件包含多种字体。

for fname in UIFont.familyNames {
    for name in UIFont.fontNames(forFamilyName: fname) {
        print(name)
    }
}

字体系列是Futura,它包含以下字体:

Futura-CondensedExtraBold
Futura-Dem
Futura-Medium
Futura-Bold
Futura-CondensedMedium
Futura-MediumItalic

我之前一直使用Futura-Dem字体,可以通过UIFont(name: "Futura-Dem", size: 21)轻松实现,但是在iOS 11发布后,我无法再使用这种字体。即使是已经上架到App Store的应用程序中,所有的Futura-Dem字体都被更改为Futura-Medium

我检查了通过UIFont(name: "Futura-Dem", size: 21)加载的字体,发现它是Futura-Medium字体。我还发现可以通过以下方式使用Futura-Dem字体:

let des = UIFontDescriptor(name: "Futura-Dem", size: 21)
let font = UIFont(descriptor: des, size: 21)

上面的代码成功加载了Futura-Dem,但我不知道为什么我不能像之前一样使用UIFont(name: "Futura-Dem", size: 21)
1个回答

4
我也遇到了相同的问题,使用了自定义的 Futura 字体。我使用了 Birdfont 软件( https://birdfont.org/* )将字体重命名为不同的名称(不以 Futura 开头,只是一个以大写字母开头的单词)。并且也修改了文件名,但真正重要的是在字体的元数据中更改字体名称。然后我将重命名后的字体链接到 iOS 应用程序中,它就可以工作了。我不知道为什么会出现 Futura 的问题,但这个技巧解决了这个问题。
*注意:如果 Birdfont 无法使用,也有 FontForge(http://fontforge.github.io/en-US/)可供选择。

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