Inleiding

TrueType lettertypen (.ttf) en hun OpenType superset (.otf) zijn de dominante lettertypeformaten op moderne besturingssystemen. Beide formaten delen dezelfde binaire tabelstructuur, gebaseerd op de OpenType specificatie. Aspose.Font FOSS voor Python maakt deze structuur zichtbaar via TtfFont, waardoor directe toegang wordt gegeven tot individuele OpenType tabellen, kerning-paargegevens, variabele lettertype-assen en glyph-contouren.

De TtfFont klasse breidt de Font basisklasse uit met TTF-specifieke methoden, waaronder get_blob, get_table_bytes, set_table_bytes en instantiate voor het vergrendelen van variabele lettertype-assen. De TtfTableSet eigenschap (ttf_tables) biedt getypeerde toegang tot de meest voorkomende OpenType tabellen: head, hhea, maxp, os2, name, post.

De bibliotheek wordt gepubliceerd op PyPI als aspose-font en is gelicentieerd onder de MIT-licentie. Het heeft geen verplichte commerciële afhankelijkheden.


Belangrijkste kenmerken

TTF- en OTF-lettertypen laden

Gebruik FontLoader.open om elk TrueType of OpenType lettertype-bestand te laden:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open detecteert het lettertypeformaat van de bestandsheader. Zowel .ttf (TrueType) als .otf (OpenType CFF) bestanden worden ondersteund en beide retourneren een TtfFont instantie.


Toegang tot OpenType tabellen via TtfTableSet

De ttf_tables eigenschap retourneert een TtfTableSet met getypeerde accessors voor veelvoorkomende OpenType tabellen. Elke eigenschap retourneert het tabelobject of None indien afwezig:

De ttf_tables eigenschap op TtfFont retourneert een TtfTableSet instantie. Beschikbare tabel-accessors:

  • head — HeadTable | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — PostTable | None

Elke eigenschap retourneert het tabelobject of None als die tabel niet aanwezig is in het lettertypebestand. Toegang tot TtfTableSet eigenschappen om te controleren op specifieke tabellen voordat u ze leest. Voor tabellen die niet door benoemde accessors worden gedekt, gebruik TtfTableSet.get_raw(tag) om ruwe bytes op te halen via een vierkarakter OpenType tag.


Ruwe tabelbytes lezen

get_table_bytes(tag) retourneert de ruwe bytes voor elke OpenType tabel. Gebruik get_blob(tag) voor een None-safe variant die None teruggeeft wanneer de tabel afwezig is:

TtfFont biedt twee methoden voor ruwe tabeltoegang:

  • get_table_bytes(tag) -> bytes — retourneert de ruwe bytes voor een benoemde tabel (gooit een uitzondering als afwezig)
  • get_blob(tag) -> bytes | None — retourneert None als de tabel afwezig is (veilige variant)

Beide methoden accepteren een vierkarakterige OpenType tabeltag, zoals "cmap", "GDEF" of "GPOS". Gebruik get_blob wanneer een tabel optioneel is, zodat je kunt controleren op None voordat je verwerkt.


Kernparen

get_kern_pairs() retourneert alle kernparen die in de font zijn gecodeerd. Elke KernPair heeft left (GlyphId), right (GlyphId) en value (int in font-eenheden):

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

Fontmetriek

Standaardmetriek is toegankelijk via de eigenschap metrics:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

Ondersteuning voor variabele fonts

Voor variabele fonts exposeert TtfFont is_variable, variable_axes en named_instances. Gebruik get_axis(tag) om een specifieke as op te halen via zijn vierletterige tag:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

De get_axis(tag) methode op TtfFont haalt een VariableAxis op via zijn vierletterige tag (bijv. "wght" voor gewicht, "wdth" voor breedte). Het retourneert None als de as niet aanwezig is in de fvar tabel van de font.


Fonts converteren

to_bytes(font_type) converteert het font naar een ander formaat. Gebruik de FontType enum om het doel op te geven:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

Snelstart

Installeer de bibliotheek:

.venv/bin/pip install aspose-font

Laad een TTF font en inspecteer het:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

Ondersteunde formaten

FormaatExtensieLezenSchrijven
TTF.ttf✓—
OTF.otf✓—
EOT.eot✓—
CFF.cff✓—
TYPE1.pfb/.pfa✓—
WOFF.woff✓—
WOFF2.woff2✓—

Alle formaten worden geladen via FontLoader.open. TTF/OTF fonts geven een TtfFont instantie terug.


Open source & licenties

Aspose.Font FOSS voor Python is uitgebracht onder de MIT-licentie. Je kunt het gebruiken in persoonlijke, commerciële en open-sourceprojecten zonder kosten. De broncode is beschikbaar op GitHub en het pakket wordt gedistribueerd via PyPI als aspose-font.


Aan de slag

Gerelateerde bronnen