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 | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—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— retourneertNoneals 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
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| 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.