Lavorare con i font CFF

Lavorare con i font CFF

Lavorare con i font CFF

Questa guida mostra come caricare e ispezionare gli interni dei font CFF — charset, tabelle di codifica, dizionari e strutture di indice — usando Aspose.Font FOSS per Python.

I font Compact Font Format (CFF) memorizzano i contorni dei glifi come programmi Type 2 charstring. Aspose.Font FOSS per Python fornisce classi dedicate nello spazio dei nomi aspose_font.cff per leggere i charset CFF, le tabelle di codifica, i dizionari e gli indici.


Charset CFF

CffCharset mappa gli ID dei glifi ai nomi dei glifi PostScript. Chiama CffCharset.standard() per ottenere il charset ISO Adobe integrato, quindi usa name_for() e gid_for() per tradurre tra ID dei glifi e nomi.

from aspose_font.cff 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 CFF

CffEncoding mappa i codici dei caratteri agli ID dei glifi. La codifica standard copre il set di caratteri Adobe Latin; usa unicode_to_gid() per cercare singoli punti di codice e get_all_codepoints() per elencare tutti i valori mappati.

from aspose_font.cff import CffEncoding

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

Analisi del Dizionario CFF

CffDict.from_bytes() analizza un blob CFF DICT grezzo in una mappatura indicizzata per operatore. Ogni chiave operatore è associata a un elenco di valori numerici che configurano il font, come la larghezza predefinita o gli offset delle sotto-routine.

from aspose_font.cff import CffDict

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

Indice CFF

CffIndex.from_reader() analizza una struttura dati CFF INDEX da un flusso binario. Le strutture INDEX sono array di dati a lunghezza variabile usati per tabelle dei nomi, tabelle di stringhe e memorizzazione di charstring all’interno dei font CFF.

from aspose_font.cff 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)}")

Interpretazione della Charstring Type 2

Type2Interpreter.interpret() esegue una charstring Type 2 e restituisce un GlyphPath.

from aspose_font.cff import Type2Interpreter

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

Suggerimenti e Buone Pratiche

  • Usa CffEncoding.standard() come base; sovrascrivi con from_reader() per codifiche incorporate
  • CffDict.to_bytes() ti consente di riserializzare dizionari modificati
  • L’interpretazione delle charstring è necessaria solo per l’estrazione grezza dei contorni dei glifi; GlyphAccessor copre la maggior parte dei casi d’uso a un livello più alto

API Reference Riepilogo

Classe / MetodoDescrizione
CffCharset.standard()Charset ISO Adobe standard
CffCharset.name_for(gid)PostScript nome per un glyph ID
CffCharset.gid_for(name)Glyph ID per un nome PostScript
CffEncoding.standard()Tabella di codifica CFF standard
CffEncoding.unicode_to_gid(cp)Mappa il punto di codice a GID
CffDict.from_bytes(data)Analizza un DICT CFF grezzo
CffDict.get(operator)Ottieni valori per un operatore DICT
CffIndex.from_reader(reader)Analizza un INDEX CFF
Type2Interpreter.interpret(cs, pd)Esegui una charstring di tipo 2

Vedi anche

 Italiano