aspose.info
PL

OTF - format pliku czcionek TrueType

Zaktualizowano

Czym jest plik OTF?

Plik z rozszerzeniem .otf odnosi się do formatu czcionki OpenType. Format czcionki OTF jest bardziej skalowalny i rozszerza istniejące funkcje formatów TTF dla typografii cyfrowej. Opracowany przez Microsoft i Adobe, OTF łączy cechy formatów czcionek PostScript i TrueType. To sprawia, że format OTF jest dostosowany do większości systemów zapisu i dlatego jest jednolicie używany na głównych platformach komputerowych. Format czcionki OpenType jest obsługiwany przez systemy Mac OS X i Windows 2000 oraz nowsze.

Krótka historia

Wymóg czcionek OpenType powstał jako wymóg bardziej wyrazistego formatu czcionki, który poradziłby sobie z precyzyjną typografią. Ponadto miał spełniać wymagania złożonego zachowania wielu światowych systemów pisma. Microsoft próbował licencjonować zaawansowaną technologię typograficzną Apple, znaną jako GX Typography, na początku lat 90-tych. Nie poszło to dobrze iw rezultacie Microsoft zaczął ulepszać swoją własną technologię czcionek TrueType w 1994 roku. Modyfikacje obejmowały również wprowadzenie bardziej odpowiedniego formatu czcionki, który również spełnia funkcje formatów czcionek Type 1 (PostScript) firmy Adobe.

Firma Adobe w 1996 roku dołączyła do firmy Microsoft w jej wysiłkach zmierzających do zastąpienia zarówno TrueType firmy Apple, jak i własnych formatów czcionek Type 1. Doprowadziło to do połączenia obu podstawowych formatów czcionek w celu przezwyciężenia ograniczeń i dodania nowych rozszerzeń. Ta nowa technologia została wprowadzona w tym samym roku pod nazwą OpenType.

Specyfikacje formatu plików OTF

Specyfikacje OTF są publicznie dostępne przez firmę Microsoft i można się do nich odwoływać z perspektywy programisty. Podobnie jak TTF, używa tej samej struktury kontenera „sfnt” i jest zgodny ze specyfikacjami TrueType. Dane w pliku czcionek OpenType są wykorzystywane do różnych celów, takich jak obliczanie układu tekstu, definiowanie glifów jako konturów TrueType lub Compact Font Format (CFF), dostarczanie monochromatycznych lub kolorowych map bitowych lub dokumentów SVG jako alternatywnych opisów glifów oraz informacji o metadanych.

Typy danych OTF

Pliki OTF używają następujących typów danych, które są w Big Endian.

Typ danychOpis
uint88-bitowa liczba całkowita bez znaku.
int88-bitowa liczba całkowita ze znakiem.
uint1616-bitowa liczba całkowita bez znaku.
int1616-bitowa liczba całkowita ze znakiem.
uint2424-bitowa liczba całkowita bez znaku.
uint3232-bitowa liczba całkowita bez znaku.
int3232-bitowa liczba całkowita ze znakiem.
Naprawiono32-bitowa liczba stałoprzecinkowa ze znakiem (16,16)
SŁOWOint16, który opisuje ilość w jednostkach projektu czcionki.
UFWORDuint16, który opisuje ilość w jednostkach projektu czcionki.
F2DOT1416-bitowa stała liczba ze znakiem z niskimi 14 bitami ułamka (2,14).
LONGDATETIMEData i czas wyrażone w sekundach od północy 12:00, 1 stycznia 1904, UTC. Wartość jest reprezentowana jako 64-bitowa liczba całkowita ze znakiem.
OznaczenieTablica czterech jednostek uint8 (długość = 32 bity) używana do identyfikacji tabeli, osi zmienności projektu, skryptu, systemu językowego, funkcji lub linii bazowej
Odsunięcie16Krótkie przesunięcie do tabeli, takie samo jak uint16, przesunięcie NULL = 0x0000
Odsunięcie32Długie przesunięcie do tabeli, takie samo jak uint32, przesunięcie NULL = 0x00000000
Wersja16Kropka16Spakowana wartość 32-bitowa z głównymi i pomocniczymi numerami wersji. (Patrz numery wersji tabeli.)

Katalog tabel OTF

Plik OTF zaczyna się od katalogu tabeli. Ten katalog jest zbiorem tabel najwyższego poziomu w pliku czcionek. W zależności od liczby czcionek w pliku katalog tabeli może znajdować się w innym miejscu w pliku. Na przykład, jeśli plik czcionek zawiera tylko jedną czcionkę, katalog tabeli zaczyna się od bajtu 0 pliku. W przypadku wielu kolekcji czcionek OpenType, początek katalogu tabeli jest wskazany w nagłówku TTCHeader.

TypNazwaOpis
uint32sfntWersja0x00010000 lub 0x4F54544F („OTTO”)
uint16numTablesLiczba tabel.
uint16searchRangeMaksymalna potęga 2 mniejsza lub równa numTables, razy 16 ((2**floor(log2(numTables))) * 16, gdzie „**” jest operatorem potęgującym).
uint16entrySelector Log2 o maksymalnej potędze 2 mniejszej lub równej numTables (log2(searchRange/16), co jest równe floor(log2(numTables))).
uint16rangeShiftnumTables razy 16, minus searchRange ((numTables * 16) - searchRange).
tabelaRekordtableRecords[numTables]Tablica rekordów tabeli — po jednej dla każdej tabeli najwyższego poziomu w czcionce

Rekord tabeli

Dla każdej tabeli najwyższego poziomu w czcionce istnieje Rekord tabeli, który składa się z następujących pól.

WpiszImięOpis
OznaczenieTabelaTagIdentyfikator tabeli.
uint32suma kontrolnaSuma kontrolna dla tej tabeli.
Odsunięcie32offsetPrzesunięcie od początku pliku czcionki.
uint32długość Długość tej tabeli.

Każda tabela w pliku czcionek OpenType jest reprezentowana przez nazwy znane jako znaczniki tabeli. Konieczne jest, aby wszystkie rekordy w tablicy były posortowane rosnąco według tagów.

Bibliografia

Zobacz też