aspose.info
PT

CFF2 - Formato de arquivo de fonte compacta versão 2

Atualizado em

O que é um arquivo CFF2?

O formato de arquivo CFF2 é a versão 2.0 do formato de arquivo CFF e permite o armazenamento eficiente de contornos de glifos e metadados semelhantes ao formato de arquivo CFF. O CFF2 difere do CFF porque se destina a ser usado no contexto de uma fonte OpenType como uma tabela ‘sfnt’ com a tag CFF2. Ele não pode ser usado como um programa autônomo e depende de dados em outras tabelas OpenType.

Formato de arquivo CFF2

As especificações de formato de arquivo CFF2 contém detalhes sobre layout de dados internos, tipos de dados, tabelas e outras informações internas sobre o formato de arquivo. Ele pode ser referido para referência do desenvolvedor. Alguns dos detalhes sobre estes são os seguintes.

Layout de dados

Os dados binários do formato de arquivo CFF2 são organizados logicamente como várias estruturas de dados separadas. O layout dentro dos dados binários é mostrado na tabela a seguir.

EntradaComentários
CabeçalhoLocalização fixa
Top DICTLocal fixo
Global Subr ÍNDICELocalização fixa
VariaçãoLoja
FDSelectApresentar apenas se houver mais de um Font DICT no Font DICT INDEX.
Fonte DICT INDEX
Matriz de fonte DICTIncluído na fonte DICT INDEX.
DICT PrivadoUm por fonte DICT.

Apenas as três primeiras estruturas são baseadas em localizações fixas. Os demais são alcançados por meio de deslocamentos e sua ordem pode ser alterada.

Tipos de dados

O formato de arquivo CFF2 usa os seguintes tipos de dados.

NomeIntervaloDescrição
uint80 a 255número sem sinal de 8 bits
uint160 a 65535número sem sinal de 16 bits
uint320 a 4294967295número sem sinal de 32 bits
DeslocamentovariaDeslocamentos de 1, 2, 3 ou 4 bytes (especificados pelo campo OffSize em uma tabela de índice)
OffSize1 a 4Número sem sinal de 1 byte especifica o tamanho de um campo ou campos de deslocamento

Ele armazena todos os dados numéricos de vários bytes e campos de deslocamento em ordem de bytes big-endian. O formato CFF2 está livre de bytes de preenchimento, pois não respeita nenhuma restrição de alinhamento.

Dados DICT

Os arquivos CFF2 contêm os dados do dicionário de fontes como pares de valores-chave em um formato tokenizado compacto. As chaves do dicionário são codificadas como operadores de 1 ou 2 bytes e os valores do dicionário são codificados como operandos numéricos de tamanho variável. Existem três estruturas que usam o formato de dados DICT: Top DICT, Font DICT e Private DICT. Vários tipos de operandos inteiros de tamanhos variados são definidos e codificados conforme mostrado na tabela a seguir (o primeiro byte do operando é b0, o segundo é b1 e assim por diante).

Tamanhointervalo b0Intervalo de valoresCálculo do valor
132 a 246-107 a +107b0 - 139
2247 a 250+108 a +1131(b0 - 247) * 256 + b1 + 108
2251 a 254-1131 a -108-(b0 - 251) * 256 - b1 - 108
328-32768 a +32767b1 « 8
529-(2^31) a +(2^31 - 1)b1 « 24 | b2 « 16 | b3 « 8 | b4

Cabeçalho

Os dados binários começam com um cabeçalho com o formato mostrado na Tabela abaixo.

TipoNomeDescrição
uint8majorVersãoFormate a versão principal. Defina como 2.
uint8menorVersãoFormate a versão menor. Defina como zero.
uint8headerSizeTamanho do cabeçalho (bytes).
uint16topDictLengthComprimento da estrutura Top DICT em bytes.

Referências

Veja também