Пользовательский UIFont базовая линия смещена - PullRequest
41 голосов
/ 26 января 2012

У меня проблема с пользовательскими UIFonts. Я загружаю 6 из них (шрифт A в обычный / жирный / регулярный италийский / boldItalic, шрифт B в сжатый / конденсированный наклонные варианты).

Тем не менее, вот что он дает при визуализации: enter image description here

Две первые строки в порядке, но последняя имеет базовую проблему.

Я пытался изменить UPM, ascender, descender, x-height шрифта в FontLab, чтобы он соответствовал значениям первого шрифта (которые отображаются правильно), но безрезультатно. Я попытался преобразовать формат шрифта из OTF в TTF, не повезло. Что бы я ни старался, это всегда так.

У кого-нибудь есть опыт с этим?

Ответы [ 6 ]

36 голосов
/ 28 июня 2013

Здесь или даже здесь Вы можете найти решения для вас. Это все о базовой линии.

Примечание Существует проблема с установкой утилиты Apple Fonts на El Capitan. См. https://apple.stackexchange.com/questions/211138/apple-font-tools-cannot-install-in-macbook-pro-el-capitan для обхода.

Чтобы отредактировать их в шрифте, вам необходимо скачать Apple Font Набор инструментов. После того, как вы установили это, вам нужно открыть терминал и перейдите в каталог, содержащий ваш шрифт. После этого введите следующая команда:

  1. ftxdumperfuser -t hhea -A d font.ttf Это создаст файл называется font.hhea.xml, откройте этот новый файл в текстовом редакторе и настройте значения для восходящего и нисходящего. Вообщем если у тебя шрифт тоже сидит низко вы хотите уменьшить восходящий и увеличить спусковой. После Для редактирования и сохранения введите в терминал следующую команду: восстановить файл шрифта:

  2. ftxdumperfuser -t hhea -A f font.ttf Теперь вы можете использовать font.ttf файл в вашем приложении. Если шрифт все еще не правильно, просто повторите вышеописанная процедура, пока вы не будете счастливы.

ИЛИ вы можете легко изменить NSBaselineAttributeName следующим образом:

NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"a string"
                              attributes:@{ NSBaselineOffsetAttributeName : @-13 }];
2 голосов
/ 05 октября 2014

Другое интересное решение, которое я нашел, приходит из следующего поста: http://www.andyyardley.com/2012/04/24/custom-ios-fonts-and-how-to-fix-the-vertical-position-problem/

Так что вам следует проверить, так ли это с вашим шрифтом, как он говорит в одном из комментариев:

Мое решение на самом деле исправляет пользовательский шрифт для работы с движком рендеринга iOS, что позволяет использовать его в качестве прямой замены стандартных шрифтов без каких-либо изменений.

И как он это делает?

В основном он предлагает редактировать метрики шрифта с помощью внешнего инструмента Apple (см. Ссылку на метрику шрифта по адресу https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/CustomTextProcessing/CustomTextProcessing.html#//apple_ref/doc/uid/TP40009542-CH4-SW66)

Чтобы отредактировать их в шрифте, вам необходимо загрузить Apple Font Tool Suite. Как только выПосле того, как вы это установили, вам нужно открыть Терминал и перейти в каталог, содержащий ваш шрифт. После этого введите следующую команду:

ftxdumperfuser -t hhea -A d font.ttf

Это создаст файл с именем font.hhea.xml, откройте этот новый файлв текстовом редакторе и настройте значения для восходящего и нисходящего. Обычно, если ваш шрифт сидит слишком низко, вы хотите уменьшить подъеми увеличивайте спусковое устройство.После редактирования и сохранения введите в терминал следующую команду для восстановления файла шрифта:

ftxdumperfuser -t hhea -A f font.ttf

Теперь вы можете использовать файл font.ttf в своем приложении.Если шрифт все еще неправильный, просто повторите описанную выше процедуру, пока вы не будете счастливы.

2 голосов
/ 12 февраля 2012

Привет, я также столкнулся с такой проблемой в то время, когда я установил Граница содержимого заголовка соответственно для UIButton .

Так что, если вы используете эти шрифты для UIButton , то, конечно, вы можете использовать это.

enter image description here

Надеюсьэто поможет вам.

0 голосов
/ 13 ноября 2013

Кстати, Apple Font Tool Suite не единственная программа, которая может вам помочь.Поэтому, если вы не хотите устанавливать виртуальную копию macO, вы можете использовать FontForge для Windows, чтобы поиграть с ascender и descender: element -> информация о шрифте, затем вкладка OS / 2 и затем метрики.И не забудьте установить флажок «Apple» при создании шрифта в конце.Удачи!

0 голосов
/ 24 февраля 2012

возможно взгляните на свойство UITextView / UITextLabel 'thLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;'

это определяет вертикальное выравнивание.Это было полезно для меня несколько дней назад в аналогичном случае

0 голосов
/ 24 февраля 2012

Вам необходимо проверить эти шрифты бок о бок в некоторых векторных программах, таких как Adobe Illustrator или CorelDraw.Если вы обнаружите, что в этом программном обеспечении шрифты отрисовываются одинаково смещенным образом, то это как-то связано с самим шрифтом.т.е. шрифты могут быть созданы с таким смещением пикселей в файле шрифта.Следовательно, нет необходимости вносить какие-либо такие изменения в параметры .xib для любого UIButton или UITextField и т. Д.

По возможности делитесь файлами шрифтов здесь.

...