Bevezetés

Aspose.Font FOSS a Python számára koherens osztálykészletet biztosít minden gyakori betűtípus-kezelési feladathoz: betűtípusfájlok betöltése több formátumban, metaadatok és glifadatok olvasása, formátumok közötti konvertálás, alhalmazok létrehozása webes szállításhoz, valamint a bináris táblák tisztítása az optimális fájlméret érdekében. Ez az útmutató végigvezet minden alapvető képességen működő kódpéldákkal, amelyek a könyvtár ellenőrzött API-ből származnak.

A csomag (aspose-font) MIT licenc alatt áll, Python 3.10+ verziót igényel, és nem függ operációs rendszer szintű betűtípus-könyvtáraktól. Telepíthető a pip install aspose-font>=1.0.0 segítségével.


Fő funkciók

Betűtípusok betöltése a FontLoader segítségével

FontLoader az egyetlen belépési pont minden betűtípus betöltési művelethez. A statikus open() metódus fájlútvonalat (str vagy Path) fogad, és automatikusan felismeri a formátumot. A load() metódus nyers bájtokat fogad memóriabeli munkafolyamatokhoz. Mindkettő egy Font típusú objektumot ad vissza, amelyet azonnal megvizsgálhat.

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)

Betűtípus metaadatok olvasása a Font Base Class osztályon keresztül

Betöltés után a Font alaposztály a szabványos metaadat-tulajdonságokat teszi elérhetővé anélkül, hogy a bináris betűtípus táblákat kellene elemeznie. A font_name, font_family, font_style és num_glyphs tulajdonságok fedik le a leggyakoribb metaadat-igényeket.

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}")

Glif kódolás és hozzáférés

FontEncoding a Unicode kódpontokat glifazonosítókra (glyph ID) térképezi. Használja a unicode_to_gid() egyetlen kódponthoz, vagy a get_all_codepoints() a betűtípus teljes lefedettségének felsorolásához. A GlyphAccessor ezután glif objektumokat kér le azonosító alapján a get_glyph_by_id() segítségével, Unicode alapján a get_glyph_by_unicode() segítségével, vagy szöveges karakterlánc esetén a get_glyphs_for_text() segítségével.

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)

Betűtípus konvertálás a FontConverter segítségével

FontConverter.convert() átalakítja a betöltött betűtípust a támogatott formátumok között. Adja meg a forrás betűtípust és a célformátum azonosítóját, hogy egy új betűtípus objektumot kapjon a célformátumban. A metódus kezeli a CFF, TTF, WOFF, WOFF2, EOT és Type 1 formátumokat mind forrásként, mind célként.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter

source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")

Webes optimalizálás a FontCleaner segítségével

FontCleaner.clean_for_web() eltávolítja azokat a bináris táblákat, amelyek a webes betűtípus szállításához feleslegesek – konkrétan a DSIG, FFTM és meta táblákat – és a Mac platform (platform_id=1) névrekordjait is kitörli a name táblából. Az eredmény egy karcsúbb bináris, amely csökkenti a hálózati terhelést anélkül, hogy a körvonalakat vagy a metrikákat módosítaná. Opcionális kulcsszó argumentumokkal megőrizhet specifikus táblatípusokat, ha szükséges.

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,
)

Glif útvonal ellenőrzése

Minden Glyph objektum kitetti körvonalát GlyphPath formájában, amelynek commands sorozata MoveTo, LineTo, QuadraticTo, CurveTo és ClosePath típusú példányokat tartalmaz. Minden parancs a megfelelő koordinátaattribútumokat hordozza — például a CurveTo rendelkezik x1, y1, x2, y2, x, y attribútumokkal — lehetővé téve, hogy nyers Bézier adatokat nyerj ki a rendereléshez, SVG generáláshoz vagy ütközésgeometria készítéséhez.

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)}")

Gyors kezdés

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")

Támogatott formátumok

FormátumKiterjesztésOlvasásÍrás
TTF.ttf✓✓
OTF.otf✓✓
CFF.cff✓✓
TYPE1.pfb / .pfa✓✓
WOFF.woff✓✓
WOFF2.woff2✓✓
EOT.eot✓✓

Nyílt forráskód és licencelés

Aspose.Font FOSS a Python számára MIT licenc alatt áll. A forrás a GitHub oldalon található a aspose-font-foss/Aspose.Font-FOSS-for-Python címen, és a csomag a PyPI oldalon elérhető aspose-font néven.


Kezdő lépések

Kapcsolódó erőforrások