aspose.info
LT

OTF – „TrueType“ šrifto failo formatas

Atnaujinta

Kas yra OTF failas?

Failas su plėtiniu .otf reiškia OpenType šrifto formatą. OTF šrifto formatas yra labiau keičiamas ir išplečia esamas TTF formatų funkcijas, skirtas skaitmeninei tipografijai. Microsoft ir Adobe sukurtas OTF sujungia PostScript ir TrueType šriftų formatų funkcijas. Dėl to OTF formatas yra tinkamas daugumai rašymo sistemų, todėl jis vienodai naudojamas pagrindinėse kompiuterių platformose. OpenType šrifto formatą palaiko Mac OS X ir Windows 2000 ir naujesnės versijos.

Trumpa istorija

The requirement of OpenType fonts originated as a requirement for a more expressive font format that could handle fine typography. In addition, it was aimed to meet the requirements of complex behaviour of many of the world’s writing systems. Microsoft attempted to license Apple’s advanced typography technology, known as GX Typography, in the early 1990’s. This didn’t go well and as a result, Microsoft started enhancing its owns TrueType font technology in 1994. Modifikacijos taip pat buvo įtrauktos į tinkamesnį šrifto formatą, kuris taip pat atitinka Adobe tipo 1 (PostScript) šriftų formatų ypatybes.

Adobe 1996 m. prisijungė prie Microsoft pastangų pakeisti Apple TrueType ir savo Type 1 šriftų formatus. Dėl to buvo derinami abu pagrindiniai šriftų formatai, siekiant įveikti apribojimus ir pridėti naujų plėtinių. Ši nauja technologija buvo pristatyta tais pačiais metais pavadinimu OpenType.

OTF failo formato specifikacijos

OTF specifications are available publicly by Microsoft and can be referred to from developer’s perspective. Like TTF, it uses the same ‘sfnt’ container structure and is compatible with the TrueType specifications. Data inside an OpenType font file is used for different purposes such as calculating the text layout, defining glyphs as TrueType or Compact Font Format (CFF) outlines, providing monochromatic or color bitmaps or SVG documents as alternate glyph descriptions, and meta-data information.

OTF duomenų tipai

OTF failuose naudojami šie duomenų tipai, kurie yra Big Endian.

Duomenų tipasAprašymas
uint88 bitų sveikasis skaičius be ženklų.
int88 bitų sveikasis skaičius.
uint1616 bitų sveikasis skaičius be ženklų.
int1616 bitų sveikasis skaičius.
uint2424 bitų sveikasis skaičius be ženklų.
uint3232 bitų sveikasis skaičius be ženklų.
int3232 bitų sveikasis skaičius.
Pataisytas32 bitų fiksuoto taško numeris (16.16)
FWORDint16, kuris apibūdina kiekį šrifto dizaino vienetais.
UFWORDuint16, kuris apibūdina kiekį šrifto dizaino vienetais.
F2DOT1416 bitų pasirašytas fiksuotas skaičius su maža 14 bitų trupmena (2.14).
LONGDATETIMEData ir laikas rodomi sekundžių skaičiumi nuo 12:00 vidurnakčio, 1904 m. sausio 1 d., UTC. Reikšmė pateikiama kaip 64 bitų sveikasis skaičius su ženklu.
ŽymaKeturių uint8 masyvas (ilgis = 32 bitai), naudojamas identifikuoti lentelę, dizaino varianto ašį, scenarijų, kalbos sistemą, funkciją arba bazinę liniją
Poslinkis16Trumpas poslinkis į lentelę, toks pat kaip uint16, NULL poslinkis = 0x0000
Poslinkis32Ilgas poslinkis į lentelę, toks pat kaip uint32, NULL poslinkis = 0x00000000
Versija16Dot16Supakuota 32 bitų reikšmė su pagrindiniais ir nedideliais versijų numeriais. (Žr. lentelės versijų numerius.)

OTF lentelių katalogas

OTF failas prasideda lentelės katalogu. Šis katalogas yra aukščiausio lygio lentelių rinkinys šrifto faile. Atsižvelgiant į šriftų skaičių faile, lentelės katalogas gali būti skirtingose failo vietose. Pavyzdžiui, jei šrifto faile yra tik vienas šriftas, lentelės katalogas prasideda nuo 0 failo baito. Jei surinkti keli OpenType šriftai, lentelės katalogo pradžia nurodoma TTCHader.

TipasVardasAprašymas
uint32sfntVersion0x00010000 arba 0x4F54544F (OTTO)
uint16numTablesLentelių skaičius.
uint16searchRangeMaximum power of 2 less than or equal to numTables, times 16 ((2**floor(log2(numTables))) * 16, kur ** yra eksponencijos operatorius).
uint16entrySelector Log2, kurio maksimali galia 2 yra mažesnė arba lygi numTables (log2(searchRange/16), kuri yra lygi floor(log2(numTables))).
uint16rangeShiftnumTables times 16, minus searchRange ((numTables * 16) – paieškos diapazonas).
tableRecordtableRecords[numTables]Lentelių įrašų masyvas – po vieną kiekvienai šrifto aukščiausio lygio lentelei

Lentelės įrašas

Kiekvienai šrifto aukščiausio lygio lentelei yra lentelės įrašas, kurį sudaro šie laukai.

TipasVardasAprašymas
ŽymatableTagLentelės identifikatorius.
uint32kontrolinė sumaŠios lentelės kontrolinė suma.
Poslinkis32kompensuotiPoslinkis nuo šrifto failo pradžios.
uint32ilgis Šios lentelės ilgis.

Kiekviena OpenType šrifto failo lentelė yra pavaizduota pavadinimais, vadinamais lentelės žymomis. Būtina, kad visi masyvo įrašai būtų rūšiuojami didėjimo tvarka pagal žymą.

Nuorodos

Taip pat žiūrėkite