字体文件读取不到指定字体问题排查
起因
以前项目中也有遇到过自定义字体的场景(比如设计觉得某些数字不够大、不够粗等),但是当时因为应用包体积等问题影响导致没有用自定义字体,后面也就没关注了。前些天同事说有个需求需要换一下字体,但是替换后获取字体的地方总是返回nil,不清楚是怎么回事,让帮忙排查一下
一句话真因
结论为设计给的字体文件里的字体名称不对,没有修改,导致按照约定的字体名称获取不到
如何查看字体文件中的字体
打开Mac自带软件“字体册”,在上方菜单中找到,文件->验证文件,找到字体文件,打开查看,如图所示,上面显示的是文件,箭头展开,下面显示的是其中包含的字体名称,即fontName
如何修改ttf字体文件
如果设计愿意修改,那直接找设计就行了。联系不上或者其他原因,可以自己动手修改
本来想下载个免费修改字体的软件(FontForge 是功能强大的免费字体编辑器,支持修改字体元数据),奈何网速有点慢,下载了半天还是没下载下来,作罢
字体家AI神笔 类似的网站有不少,这个网站用着感觉还不错
将字体文件拖进去,修改相关信息(关键信息:PostScript 名称),再保存并导出就行了
如果使用自定义字体
- 将字体文件(.ttf或.otf)添加到Xcode项目中,并在Target的”Build Phases”->”Copy Bundle Resources”选上
- 在Info.plist文件中UIAppFonts(Fonts provided by application)数组中添加相应字体文件名称(包括扩展名)
<key>UIAppFonts</key>
<array>
<string>XXXX-Regular.ttf</string>
<string>XXXX-Medium.ttf</string>
</array>
如何打印项目中包含的所有字体名称
for (NSString *familyName in [UIFont familyNames]) {
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
NSLog(@"%@", fontName);
}
}
Written on August 3, 2025