Introduction
Le format de fichier compact (CFF) est le format d’explication glyph binaire utilisé dans OpenType. fonts avec un moteur de sortie compatible PostScript. Aspose.Font FOSS pour Python exposés Un ensemble de cours dédiés à la aspose_font.cff Le nom de la lecture et Vérification des structures de données du CFF : CffFont, CffCharset, CffEncoding, CffDict, CffIndex,et Type2Interpreter.Ce post suit comment charger les phontres CFF, naviguer leurs tables internes, et interpréter les programmes de charstring en utilisant la bibliothèque.
Le package est licencé par MIT. installer avec pip install aspose-font>=1.0.0.
Fonctionnalités clés
Créer un fichier CFF
FontLoader.open() détecte le format CFF automatiquement — passe soit un standalone .cff fichiers ou un fichier OTF qui intègre une table de sortie CFF. L’objet retourné est un CffFont (Accessible par le biais de la cff_font Propriété sur TtfFont pour les fichiers OTF).
from aspose_font.loader import FontLoader
# Load a standalone CFF file
font = FontLoader.open("OpenSans.cff")
# Load a standalone CFF file (auto-detected from format)
font = FontLoader.open("OpenSans.cff")
print(font.font_name, font.num_glyphs)
CFF Charset — Mapeur des ID Glyph en noms
CffCharset MAPs glyph ID (GID) à PostScript noms glyf. Utiliser standard() à - obtenir la norme ISO Adobe Charse ou from_reader() Pour faire un carnet de la binaire Les données du CFF. le name_for() le méthode retourne le nom PostScript pour un GID, et gid_for() Il fait le lookup réversa.
from aspose_font.cff.charset import CffCharset
charset = CffCharset.standard()
print(charset.name_for(1)) # ".notdef" or similar
print(charset.gid_for("A")) # GID for the PostScript name "A"
CFF Encodage - Unicode-to-GID Mapping
CffEncoding gérer la table de codage CFF, qui cartographie les codes de caractère à des ID glyph. standard() Retourner le code standard, expert() Il remet le code d’experts et from_reader() Parse un codage personnalisé des données binaires CFF. Utiliser unicode_to_gid() à Un point de code unicode et un point d’un code unique. get_all_codepoints() Pour enregistrer tous les cartes Point de code.
from aspose_font.cff.encoding import CffEncoding
encoding = CffEncoding.standard()
gid = encoding.unicode_to_gid(0x41) # Unicode for 'A'
all_codepoints = encoding.get_all_codepoints()
print(f"Standard encoding covers {len(all_codepoints)} code points")
Le dictionnaire de CFF Parsing
Les phontres CFF stockent des métadonnées de haut niveau et privées dans les dictionnaires. CffDict.from_bytes() Parse un crème de CFF DICT et vous donne get() et set() Accès par clé d’opérateur. TopDict.from_dict() spécialisée dans les dictionnaires de haut niveau du CFF, et PrivateDict.from_dict() Il en va de même pour les DICT.
from aspose_font.cff.dict_ import CffDict
# Parse a raw CFF DICT from bytes
raw_dict_bytes = b"..." # CFF-encoded DICT bytes
d = CffDict.from_bytes(raw_dict_bytes)
vals = d.get(21) # retrieve values for operator 21 (PostScript CharstringType)
Les structures de l’indice CFF
CffIndex représente une structure de données CFF INDEX — un ensemble de variables pré-déterminé à longueur. longueur des filets de byte utilisés pour les chartrings, subrs et tables d’appels. from_reader() Parsés un index d’un lecteur binaire et le résultat est subscrit par l’index intégral.
from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader # internal API — may change between releases
import io
raw_index = b"..." # raw CFF INDEX bytes
reader = BinaryReader(io.BytesIO(raw_index))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")
Type 2 Interprétation de la Charstring
Type2Interpreter Exécute un programme de chartration Type 2 (le composite PostScript-like) en format utilisé dans les phontres CFF) et produit un GlyphPath Commande de sortie. appeler interpret() avec les bytes de chartration et le dictionnaire privé associé. vous permet d’extraire des outils de glyphie crude à partir de charstrings CFF sans un Interprète de PostScript.
from aspose_font.cff.type2 import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)
for cmd in glyph_path.commands:
print(type(cmd).__name__, cmd)
Démarrage rapide
pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader
# Load an OTF with embedded CFF outlines
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41)
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")
Formats soutenus
| Formats | Extension | Lire | Écrire |
|---|---|---|---|
| CFF | .CFF | ✓ | ✓ |
| OTF | .OTP | ✓ | ✓ |
| TTF | .TFD | ✓ | ✓ |
| WOFF | .Voff | ✓ | ✓ |
| WOFF2 | .Le Wooff2 | ✓ | ✓ |
| EOT | .EOT | ✓ | ✓ |
| TYPE1 | .pfb / pfa | ✓ | ✓ |
Source ouverte et licence
Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Avis sur le site : Font-FOSS-for-Python. Installation de PyP comme aspose-font.