Kernlettertypebeheer

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 count

Glyph-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 Font objecten wanneer hetzelfde lettertypebestand meerdere keren wordt verwerkt
  • Gebruik FontLoader.load(bytes) voor netwerk- of database-workflows om tijdelijke bestanden te vermijden
  • Controleer num_glyphs vóó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

ProbleemOorzaakOplossing
UnsupportedFontFormatExceptionBestandstype niet herkendControleer of het bestand een geldige TTF/OTF/CFF/WOFF/WOFF2/EOT/Type1 is
FontParseExceptionMisvormde binaire dataValideer het lettertypebestand met een linter voordat je het laadt
GlyphNotFoundExceptionGID buiten bereikControleer 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 / MethodeBeschrijving
FontLoader.open(path)Laad een lettertype vanaf een bestandspad
FontLoader.load(data)Laad een lettertype vanuit ruwe bytes
Font.font_nameVolledige PostScript lettertypenaam
Font.font_familyLettertypefamilienaam
Font.font_styleLettertype-stijlnaam
Font.num_glyphsTotale 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_variableOf het lettertype variabele fontgegevens bevat
TtfFont.variable_axesLijst van VariableAxis objecten voor elke variatie-as
TtfFont.get_axis(tag)Zoek een enkele as op via zijn vierkarakter-tag
TtfFont.named_instancesBenoemde instanties gedefinieerd in de fvar tabel van het lettertype
SmartInstancer(font)High-level helper die as- en instantievragen omsluit

Zie ook

 Nederlands