У меня есть UIButton
пользовательский шрифт, который устанавливается при загрузке моего представления:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
У меня проблема в том, что шрифт кажется всплывающим над центральной линией. Если я закомментирую эту строку, шрифт по умолчанию будет хорошо центрирован по вертикали. Но переход на собственный шрифт нарушает вертикальное выравнивание.
У меня такая же проблема с ячейкой таблицы с настраиваемым шрифтом.
Нужно ли мне где-нибудь сообщать представлению, что пользовательский шрифт не такой высокий, как другие шрифты?
РЕДАКТИРОВАТЬ: я только что понял, что шрифт, который я использую, является шрифтом Windows TrueType. Я могу использовать его в TextEdit на Mac, только проблема с выравниванием в моем приложении
Ответы:
Подобная проблема обсуждалась в разделе Пользовательский установленный шрифт некорректно отображается в UILabel . Никакого решения не было.
Вот решение, которое сработало для моего пользовательского шрифта, у которого была такая же проблема в UILabel, UIButton и т. Д. Проблема со шрифтом оказалась в том, что его свойство восходящего элемента было слишком маленьким по сравнению со значением системных шрифтов. Восходящий элемент - это вертикальный пробел над символами шрифта. Чтобы исправить ваш шрифт, вам нужно будет загрузить утилиты командной строки Apple Font Tool Suite . Затем возьмите свой шрифт и сделайте следующее:
Это создаст
Bold.hhea.xml
. Откройте его в текстовом редакторе и увеличьте значениеascender
атрибута. Вам придется немного поэкспериментировать, чтобы найти точное значение, которое лучше всего подходит для вас. В моем случае я изменил его с 750 на 1200. Затем снова запустите утилиту со следующей командной строкой, чтобы объединить ваши изменения обратно в файл ttf:Затем просто используйте получившийся шрифт ttf в своем приложении.
OS X Эль Капитан
Установщик Apple Font Tool Suite больше не работает в OSX El Capitan из-за SIP, потому что он пытается установить двоичные файлы в защищенный каталог. Приходится извлекать вручную
ftxdumperfuser
. Сначала скопируйте pkg из dmg в локальный каталог, затем распакуйте егоOS X Font Tools.pkg
с помощьюТеперь перейдите в папку
fontTools.pkg
сИзвлечь полезную нагрузку с помощью
Теперь
ftxdumperfuser
двоичный файл находится в вашей текущей папке. Вы можете переместить его, чтобы/usr/local/bin/
использовать его в каждой папке внутри терминального приложения, со следующими параметрами.источник
Решил проблему корректировкой вставки верхнего содержимого (а не заголовка!).
Например: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Удачи!
источник
Не уверен, что это поможет, так как это может зависеть от вашего шрифта, но возможно, что ваша базовая линия смещена.
источник
Думаю, это лучший ответ. не играйте с восходящим элементом, numberOfHMetrics и т. д. просто импортируйте-экспортом с помощью приложения Glyphs и работа выполнена. Благодаря этому ответу: https://stackoverflow.com/a/16798036/1207684
источник
Вы можете попробовать это в Интерфейсном Разработчике. Вот снимок того, как это сделать -
Как видите, попытка сделать это в IB имеет свои преимущества.
источник
Поздно к вечеринке, но поскольку эта проблема поразила меня в N-й раз, я подумал, что опубликую самое простое решение, которое я нашел: использование Python FontTools .
Установите Python 3, если он недоступен в вашей системе.
Установить FontTools
pip3 install fonttools
FontTools включает инструмент TTX, который позволяет конвертировать в XML и обратно.
Преобразуйте свой шрифт в .ttx в той же папке
ttx myFontFile.otf
Внесите необходимые изменения в .ttx и удалите файл .otf, так как он будет заменен на следующем шаге.
Конвертируйте файл обратно в .otf
ttx myFontFile.ttx
Мотивация: решение по kolyuchi является неполным, и даже с этим расширенным потоком установки , работает
ftxdumperfuser
в результате ошибки на 10.15.2 Каталине.источник