Подтвердить что ты не робот

Пользовательская базовая линия UIFont сдвинута

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

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

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

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

Есть ли у кого-нибудь опыт?

4b9b3361

Ответ 1

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

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

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

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

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

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

NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:@"a string"
                              attributes:@{ NSBaselineOffsetAttributeName : @-13 }];

Ответ 2

Привет. Я также столкнулся с такой проблемой в то время, когда я установил Title Content Edge для UIButton.

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

enter image description here

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

Ответ 3

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

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

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

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

В основном он предлагает отредактировать метрику шрифта с помощью внешнего инструмента 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, откройте этот новый файл в текстовом редакторе и настройте значения для зажима и descender. Как правило, если вы используете слишком низкий шрифт, вы хотите уменьшить коэффициент усиления и увеличить descender. После редактирования и сохранения введите в терминал следующую команду для восстановления файла Font:

ftxdumperfuser -t hhea -A f font.ttf

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

Ответ 4

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

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

Ответ 5

возможно, посмотрите свойство UITextView/UITextLabel 'thLabel.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;'

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

Ответ 6

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