Kern-Schriftverwaltung

Kern-Schriftverwaltung

Kern-Schriftverwaltung

Dieser Leitfaden zeigt, wie man Schriftarten aus Dateipfaden oder Byte-Arrays lädt, Metadaten-Eigenschaften liest, Unicode-Codepunkte zu Glyph-IDs abbildet, Glyphen abruft und mit variablen Schriftachsen sowie benannten Instanzen arbeitet.

FontLoader ist der primäre Einstiegspunkt für alle Schriftlade-Operationen. Sobald eine Schrift geladen ist, stellt die Basisklasse Font Zugriff auf Metadaten, Kodierung, Glyph-Zugriff und Metriken bereit, ohne dass ein binäres Tabellen-Parsing erforderlich ist.


Schriftarten laden

FontLoader.open(source, font_type, collection_index) lädt eine Schriftart von einem Dateipfad mit automatischer Formaterkennung. FontLoader.load(source, font_type, collection_index) akzeptiert rohe Bytes für In-Memory- oder Netzwerk-Workflows.

from aspose_font import FontLoader

# From a file path — format auto-detected
font = FontLoader.open("Roboto-Regular.ttf")

# From raw bytes — useful for in-memory or network workflows
with open("OpenSans-Regular.otf", "rb") as f:
    font = FontLoader.load(f.read())

Schrift-Metadaten lesen

Nach dem Laden stellt das Font-Objekt die Eigenschaften font_name, font_family, font_style und num_glyphs zur schnellen Inspektion bereit, ohne manuelles Tabellen-Parsing.

from aspose_font import FontLoader

font = FontLoader.open("MyFont.ttf")
print(font.font_name)    # full PostScript name
print(font.font_family)  # family name
print(font.font_style)   # style name e.g. "Regular", "Bold"
print(font.num_glyphs)   # total glyph count

Glyph-Kodierung

FontEncoding ordnet Unicode-Codepunkte Glyph-IDs zu. Verwenden Sie unicode_to_gid(cp), um einen einzelnen Codepunkt aufzulösen, oder get_all_codepoints(), um jeden zugeordneten Codepunkt in der Schrift aufzulisten.

from aspose_font import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

# Map a single code point
gid = font.encoding.unicode_to_gid(0x41)  # GID for 'A'

# Enumerate all mapped code points
all_cps = font.encoding.get_all_codepoints()
print(f"Font covers {len(all_cps)} Unicode code points")

Glyph-Zugriff

GlyphAccessor ruft Glyph-Objekte nach ID, Unicode oder Textzeichenfolge ab.

from aspose_font import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

glyph = font.glyph_accessor.get_glyph_by_id(gid)
glyph_a = font.glyph_accessor.get_glyph_by_unicode(0x41)
glyphs = font.glyph_accessor.get_glyphs_for_text("Hello")
all_ids = font.glyph_accessor.get_all_glyph_ids()

Variable Schriftarten

Für variable Schriftarten (die eine fvar-Tabelle enthalten) stellt TtfFont Achsendefinitionen und benannte Instanzen direkt bereit.

from aspose_font import FontLoader
from aspose_font import TtfFont

loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
ttf: TtfFont = loaded.font

# Check if the font is variable
if ttf.is_variable:
    # List all variation axes
    for axis in ttf.variable_axes:
        print(f"{axis.tag}  range: {axis.min_value}..{axis.max_value}  default: {axis.default_value}")

    # Look up a single axis by tag
    wght = ttf.get_axis("wght")
    if wght:
        print(f"Weight axis: {wght.min_value}..{wght.max_value}")

    # Enumerate named instances (e.g. Bold, Condensed)
    for inst in ttf.named_instances:
        print(f"Instance: name_id={inst.name_id}  coordinates={inst.coordinates}")

Für höherstufige Instanzierungs-Workflows verpackt SmartInstancer die Achsenaufzählung und die Auflösung benannter Instanzen in einem einzigen Objekt:

from aspose_font import FontLoader
from aspose_font import SmartInstancer

loaded = FontLoader.load("Roboto-VariableFont_wdth,wght.ttf")
instancer = SmartInstancer(loaded.font)

print(f"Axes: {[a.tag for a in instancer.axes]}")
print(f"Named instances: {len(instancer.named_instances)}")

Tipps und bewährte Verfahren

  • Zwischenspeichern geladener Font-Objekte, wenn dieselbe Schriftdatei mehrfach verarbeitet wird
  • Verwenden Sie FontLoader.load(bytes) für Netzwerk- oder Datenbank-Workflows, um temporäre Dateien zu vermeiden
  • Überprüfen Sie num_glyphs vor dem Subsetting, um die Abdeckung nach dem Subset zu schätzen
  • get_all_glyph_ids() ist nützlich, um den gesamten Glyphensatz zu iterieren

Häufige Probleme

ProblemUrsacheLösung
UnsupportedFontFormatExceptionDateiformat nicht erkanntÜberprüfen Sie, dass die Datei ein gültiges TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 ist
FontParseExceptionFehlerhafte BinärdatenValidieren Sie die Schriftdatei mit einem Linter, bevor Sie sie laden
GlyphNotFoundExceptionGID außerhalb des BereichsÜberprüfen Sie num_glyphs, bevor Sie per ID darauf zugreifen

FAQ

Unterstützt FontLoader WOFF2?

Ja. FontLoader.open() und FontLoader.load() akzeptieren beide WOFF2-Dateien und erkennen das Format automatisch.

Kann ich eine Schriftart von einer URL laden?

Nicht direkt. Laden Sie die Schriftbytes mit urllib oder requests herunter und übergeben Sie sie an FontLoader.load(bytes).

Ist das Laden thread-sicher?

Jeder FontLoader.open()-Aufruf liefert ein unabhängiges Font-Objekt. Gleichzeitige Aufrufe auf separaten Objekten sind sicher.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
FontLoader.open(path)Laden Sie eine Schriftart von einem Dateipfad
FontLoader.load(data)Lade eine Schriftart aus rohen Bytes
Font.font_nameVollständiger PostScript Schriftname
Font.font_familySchriftfamilienname
Font.font_styleSchriftstilname
Font.num_glyphsGesamtanzahl der Glyphen
FontEncoding.unicode_to_gid(cp)Unicode-Codepunkt zu Glyphen-ID zuordnen
FontEncoding.get_all_codepoints()Alle Unicode-Codepunkte mit Glyphen-Zuordnungen
GlyphAccessor.get_glyph_by_id(gid)Glyph nach ID abrufen
GlyphAccessor.get_glyph_by_unicode(cp)Glyph nach Unicode-Codepunkt abrufen
GlyphAccessor.get_glyphs_for_text(text)Glyphs für eine Textzeichenfolge abrufen
GlyphAccessor.get_all_glyph_ids()Alle Glyph-IDs in der Schrift auflisten
TtfFont.is_variableOb die Schriftart variable Font-Daten enthält
TtfFont.variable_axesListe von VariableAxis-Objekten für jede Variationsachse
TtfFont.get_axis(tag)Eine einzelne Achse anhand ihres vierzeichenlangen Tags nachschlagen
TtfFont.named_instancesBenannte Instanzen, die in der fvar-Tabelle der Schrift definiert sind
SmartInstancer(font)High-Level-Helfer, der Achsen- und Instanzabfragen kapselt

Siehe auch

 Deutsch