2016-06-14 10 views
4

Похоже, что размер шрифта ничего не определяет.Что означает размер шрифта в ios?

Здесь две строки, один используется шрифтом zapfino, другое использование system font. Они оба имеют размер 30, но высота линии или другие метрики шрифта действительно разные. Here is the pic

Этот рис является рисовать YYLabel, которые используют coretext макет и нарисовать текст, использовать эту структуру, мы можем легко увидеть границу одного символа.

Ниже приведено другое изображение, в котором используются два UILabel с разным шрифтом и просмотреть его в StroyBoard. enter image description here

Так что же означает размер шрифта в coretext когда макет одной строкой?

+0

Что такое контроль пользовательского интерфейса? Мне кажется, что он выполняет какое-то поведение автозаполнения, которое, очевидно, отрицает размер шрифта ... – Droppy

+0

[YYLabel] (https://github.com/ibireme/YYText) @ Droppy, но когда мы пробуем это с помощью 'UILabel', он ведет себя одинаково. – Karl

+0

ОК ... так как остальная часть моего вопроса ... какие атрибуты вы устанавливаете, чтобы заставить его автоматически заполнять высоту или что-то еще? – Droppy

ответ

1

От the Wiki page для точки (типографии):

Когда размер точки шрифта задается, шрифт масштабируется таким образом, что его ет квадрат имеет длину боковой стороны этой конкретной длины в точках. Хотя буквы шрифта обычно вписываются в квадрат em шрифта, между ними нет необходимости в отношении размеров, поэтому размер точки не обязательно соответствует какому-либо измерению размера букв [.]

Таким образом, во всех цифровых шрифтах размер шрифта на самом деле не коррелирует ни с чем, кроме воображаемого квадрата, который дизайнер шрифтов предпочел создать свои глифы поверх. Поэтому иногда это будет коррелировать с шириной капитала M, но не всегда. И Zapfino, упомянутый вами шрифт, является одним из наиболее смелых примеров полного превышения границ его границ. Здесь рядом с Helvetica, в то же кегля:

enter image description here

Хотя они имеют сходный X-высота, шапка-высота Zapfino в восходящие и нисходящие настолько велики, что высота ячейки, каждая буква в наиболее рендеринг двигателей, включая CoreText, будет более чем вдвое больше, чем у Helvetica. Это просто дизайн шрифта. Вам нужно либо вручную вместить размер шрифта в зависимости от того, какой шрифт вы используете, либо попробовать программный подход, например this one.

Удачи вам!

+0

Итак, при компоновке линии движок рендеринга будет использовать высоту ячейки письма? Какова эта высота клетки в шрифте? – Karl

+0

Какой инструмент вы используете для сравнения двух шрифтов? – Karl

+0

Большинство движков рендеринга (включая все браузеры, о которых я знаю) вычисляют высоту ячейки glpyh как расстояние от линии descender до линии восходящего канала (нижний регистр «f» в моем примере Zapfino расширяет его длину). –