aspose.info
BG

OTF - TrueType Font File Format

Обновено

Какво е OTF файл?

Файл с разширение .otf се отнася за формат на шрифт OpenType. Форматът на OTF шрифт е по-мащабируем и разширява съществуващите функции на TTF формати за цифрова типография. Разработен от Microsoft и Adobe, OTF съчетава функциите на PostScript и TrueType шрифтови формати. Това прави OTF формата подходящ за повечето системи за писане и затова се използва еднакво на основните компютърни платформи. Форматът на шрифта OpenType се поддържа от Mac OS X и Windows 2000 и по-нови.

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

Изискването за шрифтове OpenType възниква като изискване за по-изразителен шрифтов формат, който може да се справи с фина типография. В допълнение, той имаше за цел да отговори на изискванията за сложно поведение на много от световните системи за писане. Microsoft се опита да лицензира усъвършенстваната типографска технология на Apple, известна като GX Typography, в началото на 90-те години. Това не върви добре и в резултат на това Microsoft започва да подобрява собствената си технология за шрифтове TrueType през 1994 г. Модификациите също така включват въвеждане на по-подходящ формат на шрифт, който също така отговаря на характеристиките на шрифтовите формати Type 1 (PostScript) на Adobe.

През 1996 г. Adobe се присъедини към Microsoft в усилията му да замени както TrueType на Apple, така и собствените си шрифтови формати Type 1. Това доведе до комбинация от двата основни формата на шрифта, за да се преодолеят ограниченията и да се добавят нови разширения. Тази нова технология беше представена същата година с името OpenType.

Спецификации на OTF файлов формат

Спецификациите на OTF са публично достъпни от Microsoft и могат да се използват от гледна точка на разработчиците. Подобно на TTF, той използва същата структура на контейнер “sfnt” и е съвместим със спецификациите TrueType. Данните във файл с шрифт OpenType се използват за различни цели, като например изчисляване на оформлението на текста, дефиниране на глифове като очертания на TrueType или Compact Font Format (CFF), предоставяне на монохроматични или цветни растерни изображения или SVG документи като алтернативни описания на глифове и информация за метаданни.

OTF типове данни

OTF файловете използват следните типове данни, които са в Big Endian.

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

OTF таблици Директория

OTF файл започва с директория на таблица. Тази директория е колекцията от най-високо ниво на таблиците във файла с шрифтове. В зависимост от броя на шрифтовете във файла, директорията на таблицата може да се намира на различно място във файла. Например, в случай че файлът с шрифтове има само един шрифт, директорията на таблицата започва от байта 0 на файла. В случай на колекция от множество OpenType шрифтове, началото на директорията на таблицата е посочено в TTCHeader.

ТипИмеОписание
uint32sfntVersion0x00010000 или 0x4F54544F (‘OTTO’)
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отместванеОтместване от началото на файла с шрифтове.
uint32length Дължина на тази таблица.

Всяка таблица във файла с шрифтове OpenType е представена с имена, известни като тагове на таблица. Задължително е всички записи в масива да са сортирани във възходящ ред по етикет.

Препратки

Вижте също