Trabalhar com fontes CFF

Trabalhar com fontes CFF

Trabalhar com fontes CFF

Este guia mostra como carregar e inspecionar os internos de fontes CFF conjuntos de caracteres, tabelas de codificação, dicionários e estruturas de índice ?? usando Aspose.Font FOSS para Python .

As fontes Compact Font Format (CFF) armazenam contornos de glifos como programas de charstring Tipo 2. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff Espaço de nomes para leitura de caracteres CFF, tabelas de codificação, dicionários e índices.


CFF Charset

CffCharset Mapeia os identificadores de glifos para nomes de glyphs do PostScript. Chama CffCharset.standard() para obter o conjunto de caracteres Adobe ISO incorporado, em seguida, use name_for() e a) gid_for() para traduzir entre identificadores de glifos e nomes.

from aspose_font.cff.charset import CffCharset

charset = CffCharset.standard()
name = charset.name_for(1)   # PostScript name for GID 1
gid  = charset.gid_for("A")  # GID for PostScript name "A"

Codificação de CFF

CffEncoding O código padrão abrange o conjunto de caracteres Adobe Latin; use unicode_to_gid() para procurar pontos de código individuais e get_all_codepoints() para listar todos os valores mapeados.

from aspose_font.cff.encoding import CffEncoding

enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()

Análise do dicionário CFF

CffDict.from_bytes() analisa um blob CFF DICT em bruto para uma mapeamento com chave de operador. Cada chave do operário mapeia a uma lista de valores numéricos que configuram a fonte, como largura padrão ou offsets de subrutina.

from aspose_font.cff.dict_ import CffDict

d = CffDict.from_bytes(raw_bytes)
vals = d.get(21)   # retrieve values for operator 21

Índice CFF

CffIndex.from_reader() analisa uma estrutura de dados CFF INDEX a partir de um fluxo binário. As estruturas do INDEX são matrizes de Dados de comprimento variável usadas para tabelas de nomes, taberas de cadeias e armazenamento de caracteres dentro das fontes CFC.

from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader  # internal API — may change between releases
import io

reader = BinaryReader(io.BytesIO(raw_index_bytes))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")

Interpretação de Charstring tipo 2

Type2Interpreter.interpret() executa uma charstring Tipo 2 e retorna um GlyphPath.

from aspose_font.cff.type2 import Type2Interpreter

interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)

Dicas e melhores práticas

  • Utilização: CffEncoding.standard() como linha de base; substituir com: from_reader() para codificações incorporadas
  • CffDict.to_bytes() permite re-serializar dicionários modificados
  • A interpretação de Charstring é necessária apenas para a extracção dos contornos do glifo bruto; GlyphAccessor abrange a maioria dos casos de utilização num nível superior.

Resumo de referência da API

Classe / MétodoDescrição:
CffCharset.standard()Conjunto de caracteres Adobe ISO padrão
CffCharset.name_for(gid)Nome PostScript para um ID de glifo
CffCharset.gid_for(name)Identificador de glifo para um nome do PostScript
CffEncoding.standard()Tabela de codificação CFF padrão
CffEncoding.unicode_to_gid(cp)Ponto de código do mapa para o IDG
CffDict.from_bytes(data)Analisar um DICT CFF bruto
CffDict.get(operator)Obter valores para um operador DICT
CffIndex.from_reader(reader)Analisar um ÍNDEX CFF
Type2Interpreter.interpret(cs, pd)Execute uma charstring Tipo 2

Ver também:

 Português