2017-09-20 109 views
6

我一直在使用Futura-Demi.otf字体一段时间。在iOS 11(或Xcode 9)中加载字体

用下面的代码,我可以确认这个文件包含多种字体。

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)

回答

4

我也遇到了同样的问题,还有一个自定义的Futura字体。

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

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

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