Kernlettertypebeheer
Kernlettertypebeheer
Deze gids laat zien hoe je lettertypen laadt vanaf bestandspaden of byte-arrays, metadata-eigenschappen leest, Unicode-codepunten naar glyph-ID’s mappt, glyphs ophaalt en werkt met variabele lettertype-assen en benoemde instanties.
FontLoader is het primaire toegangspunt voor alle lettertype-laadoperaties. Zodra een lettertype is geladen, biedt de Font basisklasse toegang tot metadata, codering, glyph-toegang en metriek zonder dat er binaire tabelparsing nodig is.
Lettertypen laden
FontLoader.open(source, font_type, collection_index) laadt een lettertype vanaf een bestandspad met automatische formaatdetectie. FontLoader.load(source, font_type, collection_index) accepteert ruwe bytes voor in-memory of netwerkworkflows.
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())Lettertype-metadata lezen
Na het laden maakt het Font-object de eigenschappen font_name, font_family, font_style en num_glyphs beschikbaar voor snelle inspectie zonder handmatige tabelparsing.
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-codering
FontEncoding map Unicode-codepunten naar glyph-ID’s. Gebruik unicode_to_gid(cp) om een enkel codepunt op te lossen, of get_all_codepoints() om elk toegewezen codepunt in het lettertype te enumereren.
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-toegang
GlyphAccessor haalt glyph-objecten op op basis van ID, Unicode of tekststring.
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()Variabele lettertypen
Voor variabele lettertypen (die een fvar-tabel bevatten), TtfFont toont asdefinities en benoemde instanties direct.
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}")Voor geavanceerdere instantiëringsworkflows, SmartInstancer verpakt asenumeratie en resolutie van benoemde instanties in één enkel object:
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)}")Tips en best practices
- Cache geladen
Fontobjecten wanneer hetzelfde lettertypebestand meerdere keren wordt verwerkt - Gebruik
FontLoader.load(bytes)voor netwerk- of database-workflows om tijdelijke bestanden te vermijden - Controleer
num_glyphsvóór het subsetten om de dekking na het subsetten te schatten get_all_glyph_ids()is nuttig voor het itereren over de volledige glyphset
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
UnsupportedFontFormatException | Bestandstype niet herkend | Controleer of het bestand een geldige TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 is |
FontParseException | Misvormde binaire data | Valideer het lettertypebestand met een linter voordat je het laadt |
GlyphNotFoundException | GID buiten bereik | Controleer num_glyphs voordat je er via ID toegang toe krijgt |
FAQ
Ondersteunt FontLoader WOFF2?
Ja. FontLoader.open() en FontLoader.load() accepteren beide WOFF2-bestanden en detecteren het formaat automatisch.
Kan ik een font laden van een URL?
Niet direct. Download de fontbytes met urllib of requests en geef ze door aan FontLoader.load(bytes).
Is laden thread-safe?
Elke FontLoader.open() oproep retourneert een onafhankelijk Font object. Gelijktijdige oproepen op afzonderlijke objecten zijn veilig.
API Reference Samenvatting
| Klasse / Methode | Beschrijving |
|---|---|
FontLoader.open(path) | Laad een lettertype vanaf een bestandspad |
FontLoader.load(data) | Laad een lettertype vanuit ruwe bytes |
Font.font_name | Volledige PostScript lettertypenaam |
Font.font_family | Lettertypefamilienaam |
Font.font_style | Lettertype-stijlnaam |
Font.num_glyphs | Totale glyph-aantal |
FontEncoding.unicode_to_gid(cp) | Koppel Unicode-codepunt aan glyph-ID |
FontEncoding.get_all_codepoints() | Alle Unicode-codepunten met glyph-toewijzingen |
GlyphAccessor.get_glyph_by_id(gid) | Haal glyph op via ID |
GlyphAccessor.get_glyph_by_unicode(cp) | Glyph ophalen op Unicode-codepunt |
GlyphAccessor.get_glyphs_for_text(text) | Glyphs ophalen voor een tekststring |
GlyphAccessor.get_all_glyph_ids() | Lijst alle glyph-ID’s in het lettertype |
TtfFont.is_variable | Of het lettertype variabele fontgegevens bevat |
TtfFont.variable_axes | Lijst van VariableAxis objecten voor elke variatie-as |
TtfFont.get_axis(tag) | Zoek een enkele as op via zijn vierkarakter-tag |
TtfFont.named_instances | Benoemde instanties gedefinieerd in de fvar tabel van het lettertype |
SmartInstancer(font) | High-level helper die as- en instantievragen omsluit |