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 | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — 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 a None-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átumKiterjesztésOlvasá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.


Első lépések

Kapcsolódó források