Práce s CFF fonty
Práce s CFF fonty
Tento průvodce ukazuje, jak načíst a prozkoumat vnitřní struktury CFF fontů — znakové sady, tabulky kódování, slovníky a indexové struktury — pomocí Aspose.Font FOSS pro Python.
Písma ve formátu Compact Font Format (CFF) ukládají obrysy glifů jako programy Type 2 charstring. Aspose.Font FOSS pro Python poskytuje vyhrazené třídy v jmenném prostoru aspose_font.cff pro čtení CFF znakových sad, tabulek kódování, slovníků a indexů.
CFF znaková sada
CffCharset mapuje ID glifů na PostScript názvy glifů. Zavolejte CffCharset.standard() pro získání vestavěné znakové sady ISO Adobe, poté použijte name_for() a gid_for() pro převod mezi ID glifů a názvy.
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"CFF kódování
CffEncoding mapuje kódy znaků na ID glifů. Standardní kódování pokrývá Adobe Latin znakovou sadu; použijte unicode_to_gid() k vyhledání jednotlivých kódových bodů a get_all_codepoints() k vypsání všech přiřazených hodnot.
from aspose_font.cff import CffEncoding
enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()Parsování slovníku CFF
CffDict.from_bytes() parsuje surový blob CFF DICT do mapování klíč-operátor. Každý klíč operátoru mapuje na seznam číselných hodnot, které konfigurojí font, například výchozí šířku nebo offsety podprogramů.
from aspose_font.cff import CffDict
d = CffDict.from_bytes(raw_bytes)
vals = d.get(21) # retrieve values for operator 21CFF Index
CffIndex.from_reader() parsuje datovou strukturu CFF INDEX z binárního proudu. Struktury INDEX jsou pole proměnné délky dat používaných pro tabulky názvů, tabulky řetězců a úložiště charstringů v CFF fontech.
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)}")Interpretace Type 2 Charstring
Type2Interpreter.interpret() vykoná Type 2 charstring a vrátí GlyphPath.
from aspose_font.cff import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)Tipy a osvědčené postupy
- Použijte
CffEncoding.standard()jako základ; přepište pomocífrom_reader()pro vložená kódování CffDict.to_bytes()vám umožní pře-serializovat upravené slovníky- Interpretace charstringu je potřeba pouze pro extrakci surových obrysů glifu;
GlyphAccessorpokrývá většinu případů použití na vyšší úrovni
API Reference Shrnutí
| Třída / Metoda | Popis: |
|---|---|
CffCharset.standard() | Standardní znaková sada ISO Adobe |
CffCharset.name_for(gid) | PostScript název pro glyph ID |
CffCharset.gid_for(name) | Glyph ID pro PostScript název |
CffEncoding.standard() | Standardní tabulka kódování CFF |
CffEncoding.unicode_to_gid(cp) | Namapovat kódový bod na GID |
CffDict.from_bytes(data) | Analyzovat surový CFF DICT |
CffDict.get(operator) | Získat hodnoty pro operátor DICT |
CffIndex.from_reader(reader) | Analyzovat CFF INDEX |
Type2Interpreter.interpret(cs, pd) | Spusťte Type 2 charstring |