Ширина символа в шрифте Open Type

У меня есть файл MinionPro-Regular.otf. Я работаю со своей структурой. Я нашел это иметь:

Table 'hhea': reference on 1668 metrics in 'hmtx' table. 
Table 'hmtx': 1668 pairs of hMetrics('advanceWidth', 'leftSideBearing').
Table 'CFF ': 1429 glyph names.
Table 'CFF ': param 'CharStrings' have offset to the index of 1668 elements. 
              Each element consist the Width property if it is not the same 
              as DefaultWidth.

В спецификации CFF указано, что общее количество глифов шрифта OTF (или только что представленное в потоке CFF файла PDF, если шрифт встроен) должно быть:

  1. с предопределенной кодировкой ISO Adobe (228 имен) 1429 + 228 = 1649;
  2. с предопределенным набором символов "Эксперт" (115 имен) 1429 + 115 = 1544;
  3. с предопределенным набором символов "Expert Subset" (86 имен) 1429 + 116 = 1515,

Ближайшее к 1668 число - 1649, но разница 19 означает, что я потерял кое-что важное в этой идее индексации.

Вопросы:

  1. Где связь между именами INDEX и метриками /charstrings INDEX?
  2. Где FLAG, какой тип предопределенной кодировки используется?

ВАЖНОЕ ОБНОВЛЕНИЕ

Charsets не имеют значения! Это был неправильный путь!

1 ответ

Решение

ОК, наконец я понял это!

в высоком разрешении: https://docs.google.com/drawings/pub?id=1gM7gs-ibJ_0qsUrsxIkF5rYUmC9Ix2F9WD9d3aqwc0g&w=1209&h=1179

Как это работает:

Файл открытого типа шрифта (OTF) состоит hhea таблица с параметром numberOfHMetrics а также hmtx таблица с массивом горизонтальных метрик для каждого глифа в шрифте.

CFF таблица состоит из массива строк. Есть 0...1428 имен глифов и 1429...1432 строковых значений для version, Notes, FullName, FamilyName параметры. Насколько я понял, это 4 строки всегда доп.

Теперь у нас есть Predefined Standard Strings - общий для всех шрифтов открытого типа всего мира. Таблица имеет 0...378 общих имен глифов и 379...390 дополнительных имен для параметров, как упоминалось выше.

Теперь нам нужно объединить две таблицы имен в одном массиве. Первые элементы таблицы предопределенных имен, включают .nondef element (это странно для меня, потому что это системное "ничто", но, как мы видим, горизонтальная метрика 500) и целый массив строк CFF, кроме имен параметров. Общее количество элементов должно быть numberOfHMetrics,

Я трачу 60 часов, чтобы понять всю картину.

Другие вопросы по тегам