aspose.info
SV

OTF - TrueType Font File Format

Uppdaterad

Vad är OTF fil?

En fil med filtillägget .otf hänvisar till OpenType-teckensnittsformat. OTF-teckensnittsformatet är mer skalbart och utökar de befintliga funktionerna i TTF-format för digital typografi. OTF, som utvecklats av Microsoft och Adobe, kombinerar funktionerna i PostScript- och TrueType-teckensnittsformaten. Detta gör att OTF-formatet passar majoritetsskrivsystem och det är därför det används enhetligt på stora datorplattformar. Teckensnittsformatet OpenType stöds av Mac OS X och Windows 2000 och senare.

Kortfattad bakgrund

Kravet på OpenType-teckensnitt uppstod som ett krav på ett mer uttrycksfullt teckensnittsformat som kunde hantera fin typografi. Dessutom syftade det till att möta kraven på komplext beteende hos många av världens skriftsystem. Microsoft försökte licensiera Apples avancerade typografiteknik, känd som GX Typography, i början av 1990-talet. Detta gick inte bra och som ett resultat började Microsoft förbättra sin egen TrueType-teckensnittsteknologi 1994. Ändringarna inkluderade också för att introducera ett mer lämpligt teckensnittsformat som även uppfyller funktionerna i Adobes typ 1 (PostScript) teckensnittsformat.

Adobe anslöt sig 1996 till Microsoft i dess ansträngningar att ersätta både Apples TrueType och dess egna typ 1-teckensnittsformat. Detta resulterade i en kombination av båda underliggande teckensnittsformaten för att övervinna begränsningarna och lägga till nya tillägg. Denna nya teknik introducerades samma år med namnet OpenType.

OTF-filformatspecifikationer

OTF-specifikationer är tillgängliga för allmänheten av Microsoft och kan refereras till från utvecklarens perspektiv. Liksom TTF använder den samma ‘sfnt’-behållarestruktur och är kompatibel med TrueType-specifikationerna. Data inuti en OpenType-teckensnittsfil används för olika ändamål som att beräkna textlayouten, definiera glyfer som TrueType eller Compact Font Format (CFF) konturer, tillhandahålla monokromatiska eller färgbitmappar eller SVG-dokument som alternativa glyfbeskrivningar och metadatainformation.

OTF-datatyper

OTF-filer använder följande datatyper som alla finns i Big Endian.

DatatypBeskrivning
uint88-bitars heltal utan tecken.
int88-bitars signerat heltal.
uint1616-bitars heltal utan tecken.
int1616-bitars signerat heltal.
uint2424-bitars osignerat heltal.
uint3232-bitars heltal utan tecken.
int3232-bitars signerat heltal.
Fastad32-bitars signerat fastpunktsnummer (16.16)
FWORDint16 som beskriver en kvantitet i teckensnittsdesignenheter.
UFWORDuint16 som beskriver en kvantitet i teckensnittsdesignenheter.
F2DOT1416-bitars signerat fast nummer med de låga 14 bitarna av bråk (2.14).
LONGDATETIMEDatum och tid representerade i antal sekunder sedan 12:00 midnatt, 1 januari 1904, UTC. Värdet representeras som ett 64-bitars heltal med tecken.
TaggArray med fyra uint8s (längd = 32 bitar) som används för att identifiera en tabell, designvariationsaxel, skript, språksystem, funktion eller baslinje
Offset16Kort offset till en tabell, samma som uint16, NULL offset = 0x0000
Offset32Lång offset till en tabell, samma som uint32, NULL offset = 0x00000000
Version16Punkt16Packat 32-bitars värde med större och mindre versionsnummer. (Se tabellversionsnummer.)

OTF-tabellkatalog

En OTF-fil börjar med en tabellkatalog. Den här katalogen är toppnivåsamlingen av tabellerna i teckensnittsfilen. Beroende på antalet teckensnitt i en fil kan tabellkatalogen finnas på olika platser i filen. Till exempel, om teckensnittsfilen bara har ett teckensnitt, börjar tabellkatalogen vid byte 0 i filen. Om du samlar flera OpenType-teckensnitt, tabellkatalogens början indikeras i TTCHeader.

TypNamnBeskrivning
uint32sfntVersion0x00010000 eller 0x4F54544F (‘OTTO’)
uint16numTablesAntal tabeller.
uint16searchRangeMaximal potens av 2 mindre än eller lika med numTables, gånger 16 ((2**floor(log2(antalTables))) * 16, där “**” är en exponentieringsoperator).
uint16entrySelector Log2 av den maximala effekten av 2 mindre än eller lika med numTables (log2(searchRange/16), vilket är lika med floor(log2(antalTables))).
uint16rangeShiftantalTables gånger 16, minus searchRange ((antalTables * 16) - searchRange).
tabellRecordtableRecords[antalTables]Tabellpostarray—en för varje toppnivåtabell i typsnittet

Tabellpost

För varje toppnivåtabell i typsnittet finns det en tabellpost som består av följande fält.

SkrivNamnBeskrivning
TaggtableTagTabellidentifierare.
uint32kontrollsummaKontrollsumma för denna tabell.
Offset32offsetOffset från början av teckensnittsfil.
uint32längd Längd på denna tabell.

Varje tabell i OpenType-teckensnittsfilen representeras av namn som kallas tabelltaggar. Det är ett måste för alla poster i arrayen att sorteras i stigande ordning efter tagg.

Referenser

Se även