2013-11-08 8 views
2

Я пытаюсь разобрать шрифт TrueType для создания и сохранения ascender, descender для каждого fontsize, я использую http://nodebox.github.io/opentype.js/, который сделал потрясающую работу, но я не понимаю как вычислить возвращаемые значения.Вычисление шрифта truetype hhea values ​​(ascender, descender)

Exemple шрифта Blackoak (саман) я получил [Ascender, Descender] = 1900 и -5OO

Я полагаю, что эти цифры указывает расстояние от basline в шпации, но я нужен другой мета информация для вычисления этих значений?

Thx заранее

+2

Здесь формулу, чтобы получить правильное значение в пикселе = Надстрочный * шкала (FontSize)/unitsPerEm (для мм просто умножьте на 25,4 и разделите на 72 dpi. – hgates

ответ

1

Если вы хотите, чтобы вычислить ASCENDER/спусковой в пикселях для определенного размера шрифта, то вам нужно для поиска OS/2 таблицы для sTypoAscender и sTypoDescender значений (в соответствии с указаниями W3C). Значения ascender и descenderhhea имеют только font designer's intention, которые не обязательно соответствуют действительным вычисленным значениям. Что касается типа значения, вы правы, зажим и спусковой механизм находятся в единицах UPM и отрицательных значениях ниже базовой линии.

Для того, чтобы преобразовать эти цифры в пикселях для определенного размера шрифта, вам также нужно извлечь сколько единиц единиц на em в вашем шрифте. Вы можете сделать это, читая unitsPerEm значение из таблицы head. Обычно для OTF 1000 UPM, для TTF - 1024 или 2048 UPM. Абсолютные значения sTypoAscender и sTypoDescender должны содержать значение unitsPerEm. И тогда это просто вопрос соотношения.

Например, давайте рассмотрим opentype.js Font Inspector и предположим размер шрифта 16px. Значение unitsPerEm 2048 УПМ, sTypoAscender и sTypoDescender являются 1536 и -512 соответственно (1536 + 512 = 2048):

Ascender = 16 * 1536/2048 = 12px (above baseline) 
Descender = 16 * -512/2048 = -4px (below baseline) 

 Смежные вопросы

  • Нет связанных вопросов^_^