Travailler avec CFF Fonts

Travailler avec CFF Fonts

Ce guide montre comment charger et inspecter les internes de la phonture CFF - des charsets, des tables d’encodage, les dictionnaires et les structures d’index - en utilisant Aspose.Font FOSS pour Python.

Format de fontaine compact (CFF) les phontres stockent des outils glyph comme type 2 programmes de chartration. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff Nomespace Pour lire les charcès CFF, coder des tables, dictionnaires et index.


Le CFF Charset

CffCharset Mape glyph IDs à PostScript noms glyf. appeler CffCharset.standard() Pour obtenir le charcette Adobe ISO intégré, puis utiliser name_for() et gid_for() Transmettre entre les noms et les identifiants glyph.

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"

CFF en codage

CffEncoding cartes codes de caractère à glyph ID. Le code standard couvre le set d’actifs Adobe Latin; utilisez unicode_to_gid() pour les points de code individuels et get_all_codepoints() - la liste de chaque valeur cartographiée.

from aspose_font.cff.encoding import CffEncoding

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

Le dictionnaire de CFF Parsing

CffDict.from_bytes() Parse un brin de CFF DICT en une carte d’opérateur-clé. Chaque opérateurs cartes clés à une liste de valeurs numériques qui configurent le phon, telles que la largeur par défaut ou les offset sous-routique.

from aspose_font.cff.dict_ import CffDict

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

Le CFF Index

CffIndex.from_reader() Les structures INDEX sont des racines de données variables utilisées pour les tables de noms, les tableaux de rangs et le stockage charstrant dans les phontres CFF.

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)}")

Type 2 Interprétation de la Charstring

Type2Interpreter.interpret() Il exécute un charstring de type 2 et retourne une GlyphPath.

from aspose_font.cff.type2 import Type2Interpreter

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

Conseils et meilleures pratiques

  • Utiliser CffEncoding.standard() comme une base ; surride avec from_reader() Pour les codes intégrés
  • CffDict.to_bytes() Vous pouvez réécrire les dictionnaires modifiés.
  • Une interprétation de charstring est nécessaire uniquement pour l’extraction d’outline du glyph crude; GlyphAccessor couvre la plupart des cas d’utilisation à un niveau supérieur

Le résumé de référence API

Classes / MéthodesDescription
CffCharset.standard()Étape ISO Adobe Charcette
CffCharset.name_for(gid)Nom de postScript pour un glyph ID
CffCharset.gid_for(name)Glyph ID pour un nom PostScript
CffEncoding.standard()Table de codage standard CFF
CffEncoding.unicode_to_gid(cp)Code de la carte point à GID
CffDict.from_bytes(data)Un petit CFF DICT
CffDict.get(operator)Obtenir des valeurs pour un opérateur DICT
CffIndex.from_reader(reader)Un indice de la CFF
Type2Interpreter.interpret(cs, pd)Exécution d’un chartring de type 2

Voir aussi

 Français