Inleiding
Aspose.Font FOSS voor Python biedt een samenhangende set klassen voor elke veelvoorkomende taak op het gebied van lettertypebeheer: het laden van lettertypebestanden in meerdere formaten, het lezen van metadata en glyfgegevens, het converteren tussen formaten, het subsetten voor weblevering, en het opschonen van binaire tabellen voor optimale bestandsgrootte. Deze gids loopt door elke kernfunctionaliteit met werkende codevoorbeelden uit de geverifieerde API van de bibliotheek.
Het pakket (aspose-font) heeft een MIT-licentie, vereist Python 3.10+ en heeft geen OS-niveau lettertypebibliotheek-afhankelijkheden. Installeer het met pip install aspose-font>=1.0.0.
Belangrijkste kenmerken
Lettertypen laden met FontLoader
FontLoader is het enige toegangspunt voor alle lettertype-laadoperaties. De statische open()-methode accepteert een bestandspad (str of Path) en detecteert automatisch het formaat. De load()-methode accepteert ruwe bytes voor in-memory workflows. Beide geven een Font-getypeerd object terug dat je meteen kunt inspecteren.
from aspose_font.loader import FontLoader
# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")
# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
font_bytes = f.read()
font = FontLoader.load(font_bytes)
Lettertype-metadata lezen via de Font Base Class
Zodra geladen, maakt de Font basisklasse standaard metadataproperties beschikbaar zonder dat u binaire fonttabellen hoeft te parseren. De eigenschappen font_name, font_family, font_style en num_glyphs dekken de meest voorkomende metadata-behoeften.
from aspose_font.loader import FontLoader
font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style: {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")
Glyph-codering en toegang
FontEncoding map Unicode code points naar glyph-ID’s. Gebruik unicode_to_gid() voor enkele code points of get_all_codepoints() om de volledige dekking van het lettertype te enumereren. GlyphAccessor haalt vervolgens glyph-objecten op op basis van ID via get_glyph_by_id(), op basis van Unicode via get_glyph_by_unicode(), of voor een tekststring via get_glyphs_for_text().
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41) # 'A'
print(f"Glyph ID for 'A': {glyph_id}")
# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
# Inspect path commands
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
Lettertypeconversie met FontConverter
FontConverter.convert() converteert een geladen lettertype tussen ondersteunde formaten. Geef het bronlettertype en de doelformaat-identificator door om een nieuw lettertype-object in het doelformaat te verkrijgen. De methode ondersteunt CFF, TTF, WOFF, WOFF2, EOT en Type1 zowel als bron als doel.
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
Weboptimalisatie met FontCleaner
FontCleaner.clean_for_web() verwijdert binaire tabellen die overbodig zijn voor webfont-levering — specifiek DSIG, FFTM en meta — en strippt Mac-platform (platform_id=1) naamrecords uit de nametabel. Het resultaat is een slankere binary die de netwerklast vermindert zonder de contouren of metriek aan te passen. Optionele keyword-argumenten laten u specifieke tabeltypen behouden indien nodig.
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)
# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
font,
drop_metadata_tables=False,
drop_legacy_tables=True,
drop_mac_names=True,
)
Glyph-padinspectie
Elk Glyph object exposeert zijn omtrek als een GlyphPath waarvan de commands reeks getypeerde instanties van MoveTo, LineTo, QuadraticTo, CurveTo en ClosePath bevat. Elk commando draagt de relevante coördinaat-attributen — bijvoorbeeld, CurveTo heeft x1, y1, x2, y2, x, y — waardoor je ruwe Bézier-gegevens kunt extraheren voor rendering, SVG-generatie of botsingsgeometrie.
from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")
Snelstart
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")
Ondersteunde formaten
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
Open source & licenties
Aspose.Font FOSS voor Python is gelicentieerd onder de MIT-licentie. De broncode staat op GitHub op aspose-font-foss/Aspose.Font-FOSS-for-Python en het pakket staat op PyPI als aspose-font.