OpenType(PS) и подпрограммы

Эта статья посвящается одному из плюсов стандарта OpenType (PS) - подпрограммам. В FontLab Studio5, в настройках программы, есть пункт который по умолчанию включён - пункт Use subroutines to compress outlines to CFF table.

Use subroutines to compress outlines to CFF table

При включении данной опции, однотипные контуры глифа будут описаны в шрифтовом файле только один раз, а в остальных случаях будут расставлены линки (как например композитные символы в TTF).

Такая технология (cff - Compfct font format) даёт на выходе минимальный размер файла шрифта, конечно, во время когда в мире компьютеров идёт счёт на террабайты, это может и смешно, но для меня это всё же важно.

Сейчас это я продемонстрирую на примере:
Для того, что бы показать отличия в обёмах генерируемых файлов, я сгенерирую три шрифта: OpenType (.otf) со включённым пунктом "Use subroutines to compress outlines to CFF table", с отключённым пунктом и для примера сделаю TTF с композитными символами.

Шрифт который я буду генерировать, будет состоять из одного символа, находящимся на всех знакоместах страницы cp1251 - логотипа компании.

Пусть это будет недавний логошрифт с логотипом EMR, для примера.

Шрифт Express Marketing Research OZh

  1. Создаю новый файл и импортирую в шрифт лого EMR.
  2. Копирую лого на все знакоместа страницы cp1251.
  3. Произвожу настройку шрифта (хинтинг, FontInfo...)
  4. Сохраняю и смотрю "вес исходника" - 27 кб.
  5. Сохраняю копию исходника и конвертирую контуры в формат TTF, удаляю все глифы в шрифте и вставляю их на все знакоместа как композиты.
  6. Произвожу настройку шрифта.
  7. Смотрю вес исходника - 202 кб.
  8. Генерирую шрифт в формате TTF, он - 17 кб.
  9. Открываю предыдущий исходник и лезу в настройки FLS.
  10. Отключаю пункт Use subroutines to compress outlines to CFF table и генерирую шрифт в формате OT.
  11. Смотрю вес шрифта OT - 5,7 кб.
  12. Опять иду в настройку FLS и включаю пункт Use subroutines to compress outlines to CFF table и генерирую ОТ шрифт, подставляя в имени еденичку, что бы не переписать предыдущий OpenType.

Начинаю сравнивать вес файлов:
TTF - 17 кб
OT - 5,7 кб (со включённым пунктом)
OT1 - 151 кб (с отключённым пунктом)

Разница заметна? :)))))