Introducere
Formatul de font compact (CFF) este formatul descriptiv al glifului binar folosit în OpenType. fonturi cu un motor de contorizare compatibil PostScript. Aspose.Font FOSS pentru Python expuse un set dedicat de clase sub aspose_font.cff spațiul de nume pentru citire și inspecția structurilor de date ale CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex, și Type2Interpreter.Acest post merge prin modul de a încărca fonturi CFF, navigati tabelele lor interne, si interpreteaza programe charstring folosind biblioteca.
Pachetul este licenţiat MIT. Instalaţi-l cu pip install aspose-font>=1.0.0.
Caracteristici cheie
Încărcarea fontului CFF
FontLoader.open() detectează formatul CFF automat trece fie un standalone .cff fișier sau un fișier OTF care încorporează o tabelă de contur CFF. Obiectul returnat este un CffFont (accesibil prin intermediul cff_font proprietate pe TtfFont pentru fișierele 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 Mapping Glyph ID-uri la nume
CffCharset mapă ID-urile de glifoane (GID) la numele de glyfoanele PostScript. Utilizați standard() la … în obțineți standardul ISO Adobe charset sau from_reader() pentru a analiza un set de caractere din binar Datele CFF. name_for() metoda returnă numele PostScript pentru un GID, și gid_for() efectuează căutarea inversă.
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"
Codarea CFF Unicode-to-GID Mapping
CffEncoding se ocupă de tabelul de codificare CFF, care mapează codurile caracterelor cu identificatorii glifoși. standard() returnă codificarea standard, expert() returnă codarea expertului și from_reader() Parsează o codificare personalizată din datele binare CFF. Utilizați unicode_to_gid() la … în căutați un GID prin punctul de cod Unicode și get_all_codepoints() pentru a enumera toate cartografiate Puncte de cod.
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")
Parsarea dicționarului CFF
Fontele CFF stochează metadate de nivel superior și private în dicționare. CffDict.from_bytes() analizează o blob CFF DICT brut și vă oferă get() și de: set() acces prin cheia operatorului. TopDict.from_dict() specializarea acestora pentru dicționarele CFF de nivel superior și PrivateDict.from_dict() face același lucru pentru DICT private.
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)
Structuri ale indicelui CFF
CffIndex reprezintă o structură de date CFF INDEX un matric cu prefix lungime a variabilelor - lungime de șiruri byte utilizate pentru charstrings, subrs și tabele cu nume. from_reader() Parsează un INDEX de la o cititoare binară și rezultatul este subscribibil prin index integer.
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)}")
Interpretarea tipului 2 Charstring
Type2Interpreter execută un program de tip 2 charstring (compact PostScript-like format folosit în fonturile CFF) și produce un GlyphPath De comandă de schiţă. interpret() cu baiti charstring si dicționarul privat asociat. vă permite să extrageți contoururile de glif brut din CFF charstrings fără o completă Interpretator 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)
Început rapid
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)}")
Formatele suportate
| Formatul | Extindere | Citeşte. | Scrie . |
|---|---|---|---|
| CFF | .cff | ✓ | ✓ |
| OTF | .de la | ✓ | ✓ |
| TTF | .ttf | ✓ | ✓ |
| WOFF | .- Ce ? | ✓ | ✓ |
| WOFF2 | .woff2 (în limba engleză) | ✓ | ✓ |
| EOT | .Nu. | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
Open Source & Licențiere
Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Aspose-font-foss/Aspose.Font-FOSS-for-Python. Instalați din PyPI ca: aspose-font.