aspose.info
UK

OTF - формат файлу шрифту TrueType

Оновлено

Що таке файл OTF?

Файл із розширенням .otf відноситься до формату шрифту OpenType. Формат шрифту OTF є більш масштабованим і розширює наявні функції форматів TTF для цифрової типографіки. Розроблений Microsoft і Adobe, OTF поєднує в собі функції форматів шрифтів PostScript і TrueType. Це робить формат OTF адаптованим до більшості систем письма, і тому він однаково використовується на основних комп’ютерних платформах. Формат шрифту OpenType підтримується Mac OS X і Windows 2000 і пізнішими версіями.

Коротка історія

Потреба у шрифтах OpenType виникла як вимога до більш виразного формату шрифту, який міг би працювати з тонкою типографікою. Крім того, він мав на меті відповідати вимогам складної поведінки багатьох систем письма світу. На початку 1990-х років корпорація Майкрософт спробувала ліцензувати передову технологію типографіки Apple, відому як GX Typography. Це не пішло добре, і в результаті Microsoft почала вдосконалювати власну технологію шрифтів TrueType у 1994 році. Зміни також включали введення більш відповідного формату шрифту, який також відповідає функціям форматів шрифтів Adobe Type 1 (PostScript).

У 1996 році Adobe приєдналася до Microsoft у її зусиллях замінити як TrueType від Apple, так і власні формати шрифтів Type 1. Це призвело до поєднання обох основних форматів шрифтів, щоб подолати обмеження та додати нові розширення. Ця нова технологія була представлена того ж року під назвою OpenType.

Специфікації формату файлу OTF

Специфікації OTF є загальнодоступними для Microsoft, і на них можна посилатися з точки зору розробника. Як і TTF, він використовує ту саму структуру контейнера «sfnt» і сумісний зі специфікаціями TrueType. Дані у файлі шрифту OpenType використовуються для різних цілей, наприклад для обчислення макета тексту, визначення гліфів як контурів TrueType або Compact Font Format (CFF), надання монохроматичних або кольорових растрових зображень або документів SVG як альтернативних описів гліфів та інформації метаданих.

Типи даних OTF

Файли OTF використовують наведені нижче типи даних, які мають великий байт.

Тип данихОпис
uint88-розрядне ціле число без знаку.
int88-розрядне ціле число зі знаком.
uint1616-розрядне ціле число без знаку.
int1616-розрядне ціле число зі знаком.
uint2424-розрядне ціле число без знаку.
uint3232-розрядне ціле число без знака.
int3232-розрядне ціле число зі знаком.
Зафіксовано32-розрядне число з фіксованою комою зі знаком (16.16)
FWORDint16, який описує величину в одиницях дизайну шрифту.
UFWORDuint16, який описує величину в одиницях дизайну шрифту.
F2DOT1416-розрядне фіксоване число зі знаком із молодшими 14 бітами дробу (2.14).
LONGDATETIMEДата й час, представлені в секундах з 12:00 опівночі 1 січня 1904 року за UTC. Значення представлено як 64-розрядне ціле число зі знаком.
ТегМасив із чотирьох uint8 (довжина = 32 біти), який використовується для ідентифікації таблиці, осі варіації дизайну, сценарію, мовної системи, функції або базової лінії
Зміщення16Коротке зміщення до таблиці, таке саме, як uint16, NULL зсув = 0x0000
Зміщення32Довге зміщення до таблиці, таке ж, як uint32, NULL зсув = 0x00000000
Версія16Dot16Упаковане 32-розрядне значення з основними та допоміжними номерами версій. (Див. Номери версій таблиці.)

Каталог таблиць OTF

Файл OTF починається з каталогу таблиці. Цей каталог є колекцією таблиць верхнього рівня у файлі шрифтів. Залежно від кількості шрифтів у файлі, каталог таблиці може розташовуватися в іншому місці у файлі. Наприклад, якщо файл шрифту містить лише один шрифт, каталог таблиці починається з байта 0 файлу. У разі кількох колекцій шрифтів OpenType, початок каталогу таблиці вказується в TTCHeader.

ТипНайменуванняОпис
uint32sfntVersion0x00010000 або 0x4F54544F (‘ОТТО’)
uint16numTablesКількість таблиць.
uint16searchRangeМаксимальна ступінь 2, менша або дорівнює numTables, помножена на 16 ((2**floor(log2(numTables))) * 16, де «**» — оператор піднесення до степеня).
uint16entrySelector Log2 максимальної потужності 2, менший або дорівнює numTables (log2(searchRange/16), що дорівнює floor(log2(numTables))).
uint16rangeShiftnumTables, помножене на 16, мінус searchRange ((numTables * 16) - searchRange).
tableRecordtableRecords[numTables]Масив записів таблиці — по одному для кожної таблиці верхнього рівня у шрифті

Запис таблиці

Для кожної таблиці верхнього рівня у шрифті є запис таблиці, який складається з наступних полів.

ТипІм’яОпис
ТегtableTagІдентифікатор таблиці.
uint32контрольна сумаКонтрольна сума для цієї таблиці.
Зміщення32зсувЗміщення від початку файлу шрифту.
uint32довжина Довжина цієї таблиці.

Кожна таблиця у файлі шрифту OpenType представлена іменами, відомими як теги таблиці. Необхідно, щоб усі записи в масиві були відсортовані в порядку зростання за тегами.

Список літератури

Див. також