aspose.info
PT

OTF - Formato de arquivo de fonte TrueType

Atualizado em

O que é um arquivo OTF?

Um arquivo com extensão .otf refere-se ao formato de fonte OpenType. O formato de fonte OTF é mais escalável e estende os recursos existentes dos formatos TTF para tipografia digital. Desenvolvido pela Microsoft e pela Adobe, o OTF combina os recursos dos formatos de fonte PostScript e TrueType. Isso torna o formato OTF para acomodar sistemas de escrita majoritários e é por isso que é usado de maneira uniforme nas principais plataformas de computador. O formato de fonte OpenType é suportado pelo Mac OS X e Windows 2000 e posterior.

Breve história

O requisito de fontes OpenType originou-se como um requisito para um formato de fonte mais expressivo que pudesse lidar com tipografia fina. Além disso, visava atender aos requisitos de comportamento complexo de muitos dos sistemas de escrita do mundo. A Microsoft tentou licenciar a tecnologia de tipografia avançada da Apple, conhecida como GX Typography, no início dos anos 90. Isso não deu certo e, como resultado, a Microsoft começou a aprimorar sua própria tecnologia de fonte TrueType em 1994. As modificações também incluíram a introdução de um formato de fonte mais adequado que também atende aos recursos dos formatos de fonte Type 1 (PostScript) da Adobe.

A Adobe, em 1996, juntou-se à Microsoft em seus esforços para substituir o TrueType da Apple e seus próprios formatos de fonte Type 1. Isso resultou na combinação de ambos os formatos de fonte subjacentes para superar as limitações e adicionar novas extensões. Essa nova tecnologia foi introduzida no mesmo ano com o nome OpenType.

Especificações de formato de arquivo OTF

As especificações OTF estão disponíveis publicamente pela Microsoft e podem ser consultadas da perspectiva do desenvolvedor. Como o TTF, ele usa a mesma estrutura de contêiner ‘sfnt’ e é compatível com as especificações TrueType. Os dados dentro de um arquivo de fonte OpenType são usados para diferentes propósitos, como calcular o layout do texto, definir glifos como contornos TrueType ou Compact Font Format (CFF), fornecer bitmaps monocromáticos ou coloridos ou documentos SVG como descrições de glifos alternativos e informações de metadados.

Tipos de dados OTF

Os arquivos OTF usam os seguintes tipos de dados, todos em Big Endian.

Tipo de dadosDescrição
uint8inteiro sem sinal de 8 bits.
int8inteiro com sinal de 8 bits.
uint16inteiro sem sinal de 16 bits.
int16inteiro com sinal de 16 bits.
uint24inteiro sem sinal de 24 bits.
uint32inteiro sem sinal de 32 bits.
int32inteiro com sinal de 32 bits.
CorrigidoNúmero de ponto fixo assinado de 32 bits (16.16)
FWORDint16 que descreve uma quantidade em unidades de design de fonte.
UFWORDuint16 que descreve uma quantidade em unidades de design de fonte.
F2DOT14Número fixo assinado de 16 bits com os 14 bits baixos de fração (2,14).
LONGDATETIMEData e hora representadas em segundos desde a meia-noite de 1º de janeiro de 1904, UTC. O valor é representado como um inteiro de 64 bits com sinal.
EtiquetaMatriz de quatro uint8s (comprimento = 32 bits) usada para identificar uma tabela, eixo de variação de design, script, sistema de linguagem, recurso ou linha de base
Deslocamento16Deslocamento curto para uma tabela, igual a uint16, deslocamento NULL = 0x0000
Deslocamento32Deslocamento longo para uma tabela, igual a uint32, deslocamento NULL = 0x00000000
Versão16Ponto16Valor de 32 bits compactado com números de versão principal e secundária. (Consulte Números de versão da tabela.)

Diretório de tabelas OTF

Um arquivo OTF começa com um diretório de tabela. Esse diretório é a coleção de nível superior das tabelas no arquivo de fonte. Dependendo do número de fontes em um arquivo, o diretório da tabela pode estar localizado em um local diferente no arquivo. Por exemplo, caso o arquivo de fonte tenha apenas uma fonte, o diretório da tabela inicia no byte 0 do arquivo. No caso de várias coleções de fontes OpenType, o início do diretório da tabela é indicado no TTCheader.

TipoNomeDescrição
uint32sfntVersão0x00010000 ou 0x4F54544F (‘OTTO’)
uint16numTablesNúmero de tabelas.
uint16searchRangePotência máxima de 2 menor ou igual a numTables, vezes 16 ((2**floor(log2(numTables)))) * 16, onde “**” é um operador de exponenciação).
uint16entrySelector Log2 da potência máxima de 2 menor ou igual a numTables (log2(searchRange/16), que é igual a floor(log2(numTables))).
uint16rangeShiftnumTables vezes 16, menos searchRange ((numTables * 16) - searchRange).
tabelaRegistrotableRecords[numTables]Matriz de registros de tabela—uma para cada tabela de nível superior na fonte

Registro de tabela

Para cada tabela de nível superior na fonte, há um registro de tabela que consiste nos seguintes campos.

TipoNomeDescrição
EtiquetatabelaTagIdentificador de tabela.
uint32soma de verificaçãoSoma de verificação para esta tabela.
Deslocamento32deslocamentoDeslocamento do início do arquivo de fonte.
uint32comprimento Comprimento desta tabela.

Cada tabela no arquivo de fonte OpenType é representada por nomes conhecidos como tags de tabela. É obrigatório que todos os registros na matriz sejam classificados em ordem crescente por tag.

Referências

Veja também