Какво е 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.
Тип данни | Описание |
---|---|
uint8 | 8-битово цяло число без знак. |
int8 | 8-битово цяло число със знак. |
uint16 | 16-битово цяло число без знак. |
int16 | 16-битово цяло число със знак. |
uint24 | 24-битово цяло число без знак. |
uint32 | 32-битово цяло число без знак. |
int32 | 32-битово цяло число със знак. |
Фиксиран | 32-битово число с фиксирана точка със знак (16.16) |
FWORD | int16, който описва количество в единици за дизайн на шрифта. |
UFWORD | uint16, който описва количество в единици за дизайн на шрифта. |
F2DOT14 | 16-битово фиксирано число със знак с най-малките 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.
Тип | Име | Описание |
---|---|---|
uint32 | sfntVersion | 0x00010000 или 0x4F54544F (‘OTTO’) |
uint16 | numTables | Брой таблици. |
uint16 | searchRange | Максимална степен на 2 по-малка или равна на numTables, умножено по 16 ((2**floor(log2(numTables))) * 16, където “**” е оператор за степенуване). |
uint16 | entrySelector Log2 на максималната мощност от 2 по-малко или равно на numTables (log2(searchRange/16), което е равно на floor(log2(numTables))). | |
uint16 | rangeShift | numTables по 16, минус searchRange ((numTables * 16) - searchRange). |
tableRecord | tableRecords[numTables] | Масив със записи на таблици—по един за всяка таблица от най-високо ниво в шрифта |
Запис на маса
За всяка таблица от най-високо ниво във шрифта има запис на таблица, който се състои от следните полета.
Тип | Име | Описание |
---|---|---|
Етикет | tableTag | Идентификатор на таблица. |
uint32 | контролна сума | Контролна сума за тази таблица. |
Отместване32 | отместване | Отместване от началото на файла с шрифтове. |
uint32 | length Дължина на тази таблица. |
Всяка таблица във файла с шрифтове OpenType е представена с имена, известни като тагове на таблица. Задължително е всички записи в масива да са сортирани във възходящ ред по етикет.