Ú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átPříponaČístZapsat
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.


Začínáme

Související zdroje