在UILabel中未正确显示的自定义安装字体中讨论了类似的问题。没有给出解决方案。
这是适用于我的自定义字体的解决方案,该解决方案在UILabel,UIButton等中存在相同的问题。字体的问题原来是这样的事实,即与系统字体的值相比,其ascender属性太小。升序是字体字符上方的垂直空白。要修复字体,您将必须下载Apple Font Tool Suite命令行实用程序。然后使用您的字体并执行以下操作:
~$ ftxdumperfuser -t hhea -A d Bold.ttf
这将创建Bold.hhea.xml
。使用文本编辑器将其打开,并增加ascender
attribute 的值。您将不得不做一些试验,以找出最适合您的确切值。就我而言,我将其从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/
提取有效载荷
~$ cat Payload | gunzip -dc | cpio -i
现在,ftxdumperfuser
二进制文件位于您的当前文件夹中。您可以将其移动到以下位置,/usr/local/bin/
以便可以在终端应用程序内部的每个文件夹中使用它。
~$ mv ftxdumperfuser /usr/local/bin/