aspose.info
DA

OTF - TrueType Font File Format

Opdateret

Hvad er OTF fil?

En fil med filtypenavnet .otf refererer til OpenType-skrifttypeformatet. OTF-skrifttypeformatet er mere skalerbart og udvider de eksisterende funktioner i TTF-formater til digital typografi. OTF er udviklet af Microsoft og Adobe og kombinerer funktionerne i PostScript- og TrueType-skrifttypeformater. Dette gør OTF-format til at rumme flertalsskrivesystemer, og det er derfor, det bruges ensartet på større computerplatforme. OpenType-skrifttypeformatet understøttes af Mac OS X og Windows 2000 og nyere.

Kort historie

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. Ændringerne inkluderede også for at introducere et mere passende skrifttypeformat, der også opfylder funktionerne i Adobes Type 1 (PostScript) skrifttypeformater.

Adobe sluttede sig i 1996 til Microsoft i deres bestræbelser på at afløse både Apples TrueType og dets egne Type 1-skrifttypeformater. Dette resulterede i en kombination af begge underliggende skrifttypeformater for at overvinde begrænsningerne og tilføje nye udvidelser. Denne nye teknologi blev introduceret samme år med navnet OpenType.

OTF-filformatspecifikationer

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-datatyper

OTF-filer bruger følgende datatyper, som alle er i Big Endian.

DatatypeBeskrivelse
uint88-bit usigneret heltal.
int88-bit fortegnet heltal.
uint1616-bit heltal uden fortegn.
int1616-bit fortegnet heltal.
uint2424-bit usigneret heltal.
uint3232-bit heltal uden fortegn.
int3232-bit fortegnet heltal.
Fixet32-bit underskrevet fastpunktnummer (16.16)
FWORDint16, der beskriver en mængde i skrifttypedesignenheder.
UFWORDuint16, der beskriver en mængde i skrifttypedesignenheder.
F2DOT1416-bit fortegnet fast tal med de lave 14 bits brøk (2.14).
LONGDATETIMEDato og klokkeslæt repræsenteret i antal sekunder siden 12:00 midnat, 1. januar 1904, UTC. Værdien er repræsenteret som et 64-bit heltal med fortegn.
TagArray af fire uint8s (længde = 32 bit) bruges til at identificere en tabel, designvariationsakse, script, sprogsystem, feature eller baseline
Offset16Kort offset til en tabel, samme som uint16, NULL offset = 0x0000
Offset32Lang offset til en tabel, samme som uint32, NULL offset = 0x00000000
Version16Punkt16Pakket 32-bit værdi med større og mindre versionsnumre. (Se tabelversionsnumre.)

OTF-tabeller Directory

En OTF-fil starter med en tabelmappe. Denne mappe er samlingen på øverste niveau af tabellerne i skrifttypefilen. Afhængigt af antallet af skrifttyper i en fil, kan tabelbiblioteket være placeret på en anden placering i filen. For eksempel, hvis skrifttypefilen kun har én skrifttype, starter tabelbiblioteket ved filens byte 0. I tilfælde af flere OpenType-skrifttyper, tabelbibliotekets begyndelse er angivet i TTCHeader.

TypNavnBeskrivelse
uint32sfntVersion0x00010000 eller 0x4F54544F (‘OTTO’)
uint16numTablesAntal tabeller.
uint16searchRangeMaximum power of 2 less than or equal to numTables, times 16 ((2**floor(log2(numTables))) * 16, hvor ** er en eksponentieringsoperator).
uint16entrySelector Log2 af den maksimale effekt på 2 mindre end eller lig med numTables (log2(searchRange/16), som er lig med floor(log2(antalTables))).
uint16rangeShiftnumTables times 16, minus searchRange ((numTables * 16) - searchRange).
tableRecordtableRecords[antalTables]Tabelposter-array – en for hver tabel på øverste niveau i skrifttypen

Tabel Record

For hver tabel på øverste niveau i skrifttypen er der en tabelpost, som består af følgende felter.

TypeNavnBeskrivelse
TagtabelTagTabelidentifikator.
uint32kontrolsumKontrolsum for denne tabel.
Offset32offsetForskydning fra begyndelsen af skrifttypefil.
uint32længde Længde af denne tabel.

Hver tabel i OpenType-skrifttypefilen er repræsenteret af navne kendt som tabelmærker. Det er et must for alle poster i arrayet at blive sorteret i stigende rækkefølge efter tag.

Referencer

Se også