Úvod
Aspose.Font FOSS pro Python poskytuje koherentní sadu tříd pro každou běžnou úlohu správy fontů: načítání souborů fontů v různých formátech, čtení metadat a dat glyphů, konverzi mezi formáty, vytváření podmnožin pro webové doručování a čištění binárních tabulek pro optimální velikost souboru. Tento průvodce prochází každou základní schopnost s funkčními ukázkami kódu převzatými z ověřených API knihovny.
Balíček (aspose-font) je licencován pod MIT, vyžaduje Python 3.10+ a nemá žádné závislosti na fontových knihovnách na úrovni OS. Nainstalujte jej pomocí pip install aspose-font>=1.0.0.
Klíčové vlastnosti
Načítání fontů pomocí FontLoader
FontLoader je jediným vstupním bodem pro všechny operace načítání fontů. Statická metoda open() přijímá cestu k souboru (str nebo Path) a automaticky detekuje formát. Metoda load() přijímá surová bajtová data pro workflow v paměti. Obě vrací objekt typu Font, který můžete okamžitě prozkoumat.
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)
Čtení metadat fontu přes třídu Font Base Class
Po načtení základní třída Font poskytuje standardní vlastnosti metadat, aniž byste museli parsovat binární tabulky fontů. Vlastnosti font_name, font_family, font_style a num_glyphs pokrývají nejčastější potřeby metadat.
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}")
Kódování glifů a přístup
FontEncoding mapuje Unicode kódové body na ID glifů. Použijte unicode_to_gid() pro jednotlivé kódové body nebo get_all_codepoints() pro výčet úplného pokrytí fontu. GlyphAccessor pak načítá objekty glifů podle ID pomocí get_glyph_by_id(), podle Unicode pomocí get_glyph_by_unicode() nebo pro textový řetězec pomocí 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)
Konverze fontů pomocí FontConverter
FontConverter.convert() převádí načtený font mezi podporovanými formáty. Předáte zdrojový font a identifikátor cílového formátu a získáte nový objekt fontu v cílovém formátu. Metoda podporuje CFF, TTF, WOFF, WOFF2, EOT a Type1 jak jako zdroj, tak jako cíl.
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")
Webová optimalizace pomocí FontCleaner
FontCleaner.clean_for_web() odstraňuje binární tabulky, které nejsou potřebné pro doručení webových fontů — konkrétně DSIG, FFTM a meta — a odstraňuje z tabulky name záznamy názvů pro platformu Mac (platform_id=1). Výsledkem je štíhlejší binární soubor, který snižuje síťový přenos bez zásahu do obrysů nebo metrik. Volitelné pojmenované argumenty vám umožní zachovat konkrétní typy tabulek, pokud je to potřeba.
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,
)
Kontrola cesty glifu
Každý Glyph objekt vystavuje svůj obrys jako GlyphPath, jehož commands sekvence obsahuje typované instance MoveTo, LineTo, QuadraticTo, CurveTo a ClosePath. Každý příkaz nese příslušné souřadnicové atributy — například CurveTo má x1, y1, x2, y2, x, y — což vám umožní získat surová data Bézieru pro vykreslování, generování SVG nebo kolizní geometrii.
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)}")
Rychlý start
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")
Podporované formáty
| Formát | Přípona | Číst | Zapsat |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .otf | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .woff | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .eot | ✓ | ✓ |
Open Source a licence
Aspose.Font FOSS pro Python je licencováno pod MIT. Zdroj je na GitHub na aspose-font-foss/Aspose.Font-FOSS-for-Python a balíček je na PyPI jako aspose-font.