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 21Le 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 avecfrom_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;
GlyphAccessorcouvre la plupart des cas d’utilisation à un niveau supérieur
Le résumé de référence API
| Classes / Méthodes | Description |
|---|---|
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 |