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 countGlyph-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_glyphsvor 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
| Problem | Ursache | Lösung |
|---|---|---|
UnsupportedFontFormatException | Dateiformat nicht erkannt | Überprüfen Sie, dass die Datei ein gültiges TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 ist |
FontParseException | Fehlerhafte Binärdaten | Validieren Sie die Schriftdatei mit einem Linter, bevor Sie sie laden |
GlyphNotFoundException | GID 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 / Methode | Beschreibung |
|---|---|
FontLoader.open(path) | Laden Sie eine Schriftart von einem Dateipfad |
FontLoader.load(data) | Lade eine Schriftart aus rohen Bytes |
Font.font_name | Vollständiger PostScript Schriftname |
Font.font_family | Schriftfamilienname |
Font.font_style | Schriftstilname |
Font.num_glyphs | Gesamtanzahl 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_variable | Ob die Schriftart variable Font-Daten enthält |
TtfFont.variable_axes | Liste von VariableAxis-Objekten für jede Variationsachse |
TtfFont.get_axis(tag) | Eine einzelne Achse anhand ihres vierzeichenlangen Tags nachschlagen |
TtfFont.named_instances | Benannte Instanzen, die in der fvar-Tabelle der Schrift definiert sind |
SmartInstancer(font) | High-Level-Helfer, der Achsen- und Instanzabfragen kapselt |