Подобная проблема обсуждалась в разделе Пользовательский установленный шрифт некорректно отображается в UILabel . Никакого решения не было.
Вот решение, которое сработало для моего пользовательского шрифта, у которого была такая же проблема в UILabel, UIButton и т. Д. Проблема со шрифтом оказалась в том, что его свойство восходящего элемента было слишком маленьким по сравнению со значением системных шрифтов. Восходящий элемент - это вертикальный пробел над символами шрифта. Чтобы исправить ваш шрифт, вам нужно будет загрузить утилиты командной строки 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 Эль Капитан
Установщик 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/