Arbeiten mit CFF-Schriften
Arbeiten mit CFF-Schriften
Dieser Leitfaden zeigt, wie man CFF-Schriftinterne — Zeichensätze, Kodierungstabellen, Wörterbücher und Indexstrukturen — mit Aspose.Font FOSS für Python lädt und inspiziert.
Compact Font Format (CFF)-Schriften speichern Glyph-Umrisse als Type-2-Charstring-Programme. Aspose.Font FOSS für Python stellt dedizierte Klassen im aspose_font.cff-Namensraum zum Lesen von CFF-Zeichensätzen, Kodierungstabellen, Wörterbüchern und Indexen bereit.
CFF-Zeichensatz
CffCharset ordnet Glyph-IDs PostScript Glyph-Namen zu. Rufen Sie CffCharset.standard() auf, um den eingebauten ISO-Adobe-Zeichensatz zu erhalten, und verwenden Sie dann name_for() und gid_for(), um zwischen Glyph-IDs und Namen zu übersetzen.
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-Kodierung
CffEncoding ordnet Zeichencodes Glyph-IDs zu. Die Standardkodierung umfasst den Adobe-Latin-Zeichensatz; verwenden Sie unicode_to_gid(), um einzelne Codepunkte nachzuschlagen, und get_all_codepoints(), um jeden zugeordneten Wert aufzulisten.
from aspose_font.cff import CffEncoding
enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()CFF-Wörterbuch-Parsing
CffDict.from_bytes() analysiert einen rohen CFF DICT-Blob zu einer operator-schlüsselbasierten Zuordnung. Jeder Operator-Schlüssel verweist auf eine Liste numerischer Werte, die die Schrift konfigurieren, z. B. Standardbreite oder Subroutinen-Offsets.
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() analysiert eine CFF-INDEX-Datenstruktur aus einem Binär-Stream. INDEX-Strukturen sind Arrays variabler Länge, die für Namens-Tabellen, String-Tabellen und Charstring-Speicher innerhalb von CFF-Schriften verwendet werden.
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)}")Typ-2-Charstring-Interpretation
Type2Interpreter.interpret() führt einen Typ-2-Charstring aus und gibt ein GlyphPath zurück.
from aspose_font.cff import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)Tipps und bewährte Verfahren
- Verwenden Sie
CffEncoding.standard()als Basis; überschreiben Sie es mitfrom_reader()für eingebettete Codierungen CffDict.to_bytes()ermöglicht es Ihnen, modifizierte Wörterbücher neu zu serialisieren- Charstring-Interpretation wird nur für die Extraktion roher Glyphenumrisse benötigt;
GlyphAccessordeckt die meisten Anwendungsfälle auf einer höheren Ebene ab
API Reference Zusammenfassung
| Klasse / Methode | Beschreibung |
|---|---|
CffCharset.standard() | Standard ISO Adobe Zeichensatz |
CffCharset.name_for(gid) | PostScript Name für eine Glyphen-ID |
CffCharset.gid_for(name) | Glyphen-ID für einen PostScript-Namen |
CffEncoding.standard() | Standard CFF Kodierungstabelle |
CffEncoding.unicode_to_gid(cp) | Codepunkt auf GID abbilden |
CffDict.from_bytes(data) | Rohes CFF DICT parsen |
CffDict.get(operator) | Werte für einen DICT-Operator abrufen |
CffIndex.from_reader(reader) | CFF INDEX parsen |
Type2Interpreter.interpret(cs, pd) | Führen Sie einen Type 2 Charstring aus |