Аналогичная проблема обсуждалась в Неправильно установленный пользовательский шрифт в UILabel . Не было дано никакого решения.
Вот решение, которое работало для моего нестандартного шрифта, который имел ту же проблему в UILabel, UIButton и тому подобное. Проблема со шрифтом оказалась в том, что его свойство ascender было слишком маленьким по сравнению со значением системных шрифтов. 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
Установщик Apple Font Tool Suite больше не работает на OSX El Capitan из-за SIP , потому что он пытается установить двоичные файлы в защищенный каталог.
Вы должны вручную извлечь ftxdumperfuser
. Сначала скопируйте pkg из dmg в локальный каталог, затем распакуйте 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/