Bevezetés
TrueType betűtípusok (.ttf) és azok OpenType szuperszettje (.otf) a modern operációs rendszerek uralkodó betűtípusformátumai. Mindkét formátum ugyanazt a bináris táblastruktúrát használja, amely a OpenType specifikációban gyökerezik. Aspose.Font FOSS a(z) Python számára ezt a struktúrát a TtfFont segítségével teszi láthatóvá, közvetlen hozzáférést biztosítva az egyedi OpenType táblákhoz, a kerning párok adataihoz, a változó betűtípus tengelyekhez és a glif körvonalakhoz.
A TtfFont osztály kibővíti a Font alaposztályt TTF-specifikus metódusokkal, többek között get_blob, get_table_bytes, set_table_bytes és instantiate a változó betűtípus tengelyek zárolásához. A TtfTableSet tulajdonság (ttf_tables) típusos hozzáférést biztosít a leggyakoribb OpenType táblákhoz: head, hhea, maxp, os2, name, post.
A könyvtár a PyPI oldalon aspose-font néven érhető el, és az MIT Licenc alatt van licencelve. Nincs kötelező kereskedelmi függősége.
Főbb jellemzők
TTF és OTF betűtípusok betöltése
Használja a FontLoader.open eszközt bármely TrueType vagy OpenType betűtípusfájl betöltéséhez:
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 felismeri a betűtípus formátumát a fájl fejlécéből. Mind a .ttf (TrueType), mind a .otf (OpenType CFF) fájlok támogatottak, és mindkettő TtfFont példányt ad vissza.
A OpenType táblák elérése a(z) TtfTableSet segítségével
A ttf_tables tulajdonság egy TtfTableSet objektumot ad vissza, amely típusos hozzáférőkkel rendelkezik a gyakori OpenType táblákhoz. Minden tulajdonság visszaadja a táblázat objektumát, vagy None ha nincs jelen:
A ttf_tables tulajdonság a(z) TtfFont esetén egy TtfTableSet példányt ad vissza. Elérhető tábláhozzáférők:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Minden tulajdonság visszaadja a táblázat objektumot, vagy None, ha az a táblázat nem szerepel a betűkészlet fájlban. Használd a TtfTableSet tulajdonságokat, hogy ellenőrizd a konkrét táblákat, mielőtt olvasnád őket. Azokhoz a táblákhoz, amelyeket a név szerint elnevezett hozzáférők nem fednek le, használd a TtfTableSet.get_raw(tag), hogy nyers bájtokat kapj a négykarakteres OpenType címke alapján.
Nyers tábla bájtok olvasása
get_table_bytes(tag) visszaadja a nyers bájtokat bármely OpenType táblához. Használd a get_blob(tag) változatot egy None-biztonságos változatként, amely None-t ad vissza, ha a tábla hiányzik:
TtfFont két módszert biztosít a nyers tábla eléréséhez:
get_table_bytes(tag) -> bytes— visszaadja a nyers bájtokat egy név szerint megadott táblához (hibát dob, ha hiányzik)get_blob(tag) -> bytes | None— visszaadja aNone-t, ha a tábla hiányzik (biztonságos változat)
Mindkét módszer négykarakteres OpenType táblacímkét fogad el, például "cmap", "GDEF" vagy "GPOS". Használja a get_blob-t, ha a tábla opcionális, így a None ellenőrizhető a feldolgozás előtt.
Kern párok
get_kern_pairs() visszaadja a betűtípusban kódolt összes kern párt. Minden KernPair rendelkezik left (GlyphId), right (GlyphId) és value (int betűtípus egységekben):
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}")
Betűtípus metrikák
A szabványos metrikák a metrics tulajdonságon keresztül érhetők el:
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}")
Változó betűtípus támogatás
Változó betűtípusok esetén a TtfFont elérhetővé teszi a is_variable, variable_axes és named_instances értékeket. Használja a get_axis(tag)-t egy adott tengely lekéréséhez a négybetűs címkéje alapján:
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)}")
A get_axis(tag) metódus a TtfFont objektumon egy VariableAxis -t kér le a négybetűs címkéje alapján (például "wght" a súlyhoz, "wdth" a szélességhez). None értéket ad vissza, ha a tengely nem található meg a betűtípus fvar táblájában.
Betűtípusok konvertálása
to_bytes(font_type) átalakítja a betűtípust egy másik formátumba. Használd a FontType felsorolást a cél megadásához:
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")
Gyors kezdés
Telepítsd a könyvtárat:
.venv/bin/pip install aspose-font
Tölts be egy TTF betűtípust és vizsgáld meg:
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")
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Minden formátum betöltése a FontLoader.open segítségével történik. A TTF/OTF betűtípusok egy TtfFont példányt adnak vissza.
Nyílt forráskód és licencelés
Aspose.Font FOSS a Python számára a MIT licenc alatt kerül kiadásra. Személyes, kereskedelmi és nyílt forráskódú projektekben ingyenesen használható. A forráskód elérhető a GitHub oldalon, és a csomag a PyPI révén kerül terjesztésre, mint aspose-font.