在Custom installed font not displayed correctly in UILabel中讨论了类似的问题,但没有给出解决方案。
以下是适用于我的自定义字体的解决方案,该字体在UILabel、UIButton等中存在同样的问题。字体的问题在于其上行高度(ascender)与系统字体相比太小了。上行高度是字体字符上方的垂直空白区域。要修复您的字体,您需要下载Apple Font Tool Suite命令行工具,并执行以下操作:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
这将创建
Bold.hhea.xml
。使用文本编辑器打开它并增加
ascender
属性的值。你需要进行一些实验来找到最适合你的确切值。在我的情况下,我将其从750改为1200。然后,再次运行实用程序,使用以下命令行将更改合并回ttf文件:
~$ ftxdumperfuser -t hhea -A f Bold.ttf
接下来只需在您的应用程序中使用生成的ttf字体即可。
OS X El Capitan
由于SIP,Apple字体工具套件安装程序在OSX El Capitan上不再起作用,因为它试图将二进制文件安装到受保护的目录中。
您需要手动提取ftxdumperfuser
。首先将dmg中的pkg复制到本地目录,然后使用以下命令解压缩OS X Font Tools.pkg
:
~$ xar -xf OS\ X\ Font\ Tools.pkg
现在,请进入文件夹
fontTools.pkg
。
~$ cd fontTools.pkg/
提取有效载荷(payload)。
~$ cat Payload | gunzip -dc | cpio -i
现在
ftxdumperfuser
二进制文件已经在您的当前文件夹中。您可以将其移动到
/usr/local/bin/
,以便您可以在终端应用程序中的每个文件夹中使用以下命令。
~$ mv ftxdumperfuser /usr/local/bin/