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

Rya*_*yan 6 fonts ios swift

我一直在使用Futura-Demi.otf字体.

使用下面的代码,我可以确认此文件包含多个字体.

for fname in UIFont.familyNames {
    for name in UIFont.fontNames(forFamilyName: fname) {
        print(name)
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Futura-CondensedExtraBold
Futura-Dem
Futura-Medium
Futura-Bold
Futura-CondensedMedium
Futura-MediumItalic
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经毫无困难地使用了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)
Run Code Online (Sandbox Code Playgroud)

上面的代码加载Futura-Dem成功,但我不知道为什么我不能UIFont(name: "Futura-Dem", size: 21)像以前那样使用它.

Tes*_*net 4

我也遇到过同样的问题,也是使用自定义 Futura 字体。

我使用 Birdfont 软件(https://birdfont.org/ *)将字体重命名为不同的名称(不是以 Futura 开头,只是一个以大写字母开头的单词)。并更改文件名,但真正重要的是更改字体元数据中的字体名称。

然后我将重命名的字体链接到 iOS 应用程序并且它起作用了。我不知道为什么 Futura 会出现问题,但是这个技巧解决了问题。

*注意:如果由于某些原因 Birdfont 不适合您,还有 FontForge ( http://fontforge.github.io/en-US/ )。