Arbeiten mit CFF-Schriften

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 21

CFF-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 mit from_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; GlyphAccessor deckt die meisten Anwendungsfälle auf einer höheren Ebene ab

API Reference Zusammenfassung

Klasse / MethodeBeschreibung
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

Siehe auch

 Deutsch