Hogyan dolgozzunk a WOFF betűtípusokkal Pythonban?

Hogyan dolgozzunk a WOFF betűtípusokkal Pythonban?

Ez az útmutató bemutatja, hogyan kell tölteni, ellenőrizni és konvertálni a WOFF-t és a WWF2 webfontokat a Aspose.Font FOSS for Python segítségével. A WOff (Web Open Font Format) a szabvány a fontok eljuttatására a weben. Az WOFL 1 zlib kompressziót használ, míg a WIF 2 Brotli kompresziókat használja, mindkettő egy alapul szolgáló TrueType vagy CFF betűtípusra bukkanva.

Lépésről lépésre szóló útmutató

1. lépés: telepítse a csomagot

A következő pip parancs használatával telepítse a PyPI-ből az Aspose.Font FOSS csomagot:

pip install "aspose-font>=1.0.0"

2. lépés: Importáljon a szükséges osztályokat

Import FontLoader, FontConverter, és FontType a WOFF betűtípusok betöltésére és konvertálására:

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

3. lépés: Töltse és ellenőrizze a WOFF betűtípust

Töltse fel a WOFF fájlt FontLoader.open() és olvassa el az alapvető tulajdonságokat, mint például a nevet, a családot és a jelképek számát:

from aspose_font.loader import FontLoader

woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")

4. lépés: Olvasd el a WOFF metaadatokat

A WOFF fájlok tartalmazhatnak egy XML-metadatok blokkot, amely tartalmazza a licenceket, a hiteleket és a A leírás. metadata_xml vagyontárgyak.

font = FontLoader.open(“MyFont.woff”)

WOFF fonts may include an XML metadata block

xml = getattr(font, “metadata_xml”, None) if xml: print(xml) else: print(“No metadata in this WOFF file”)


### 5. lépés: Belépni a belső TTF-táblákhoz

Both `WoffFont` és a `Woff2Font` a nyilvánosságra hozatal `inner_font` vagyontárgy, amely Te vagy az alapja. `TtfFont`.- Ezzel hozzáférhetsz minden szabványhoz. OpenType táblázatok.

font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables

print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

6. lépés: TTF-t WOFF-ra alakítson át

TTF betöltés és WOFF formátumba alakítás FontType.WOFF a FontConverter.convert():

ttf_font = FontLoader.open(“MyFont.ttf”) woff_font = FontConverter.convert(ttf_font, FontType.WOFF) woff_bytes = woff_font.to_bytes()

from pathlib import Path Path(“MyFont.woff”).write_bytes(woff_bytes)


### 7. lépés: TTF-t WOFF2-re alakítson át

TTF betöltés és WOFF2 formátumba alakításával `FontType.WOFF2` a ... `FontConverter.convert()`:

ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()

from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

8. lépés: Konverzálás WOFF és WOff2 között

A töltött WOFF fájlt a célt átadva konvertálja WOff2-re (vagy fordítva) FontType a … FontConverter.convert():

WOFF -> WOFF2

woff_font = FontLoader.open(“MyFont.woff”) woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)

WOFF2 -> WOFF

woff2_font = FontLoader.open(“MyFont.woff2”) woff_font = FontConverter.convert(woff2_font, FontType.WOFF)

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

Általános problémák és megoldások

FontParseException: Invalid WOFF signature A fájl nem érvényes WOFF. Ellenőrizze, hogy a fájl nem romlott és kezdődik a WOFF mágikus bájtokkal.

FontParseException: WOFF table decompression failed Kompresszált asztal Próbálja újra letölteni a betűtípusot.

Nagy WOFF2 kimeneti teljesítmény A WOFF2 Brotli-sűrítéssel működik, amely kisebb mennyiségű Ha a WOFF2 kimenete váratlanul nagy, győződjön meg róla, hogy az adatbázisok nem más, mint a WIFF 1 (zlib). egy optimalizált TTF forrásból indul.

Gyakran feltett kérdések

Mi a különbség a WOFF és a WWF2 között?

A WOFF 1 zlib kompressziót használ, a WOff 2 pedig Brotli kompresziókat. A WWF2 általában 20-30%-kal jobb kompressionzációt ér el, mint a WWFF 1. Mindkettő ugyanazt az alapul szolgáló TrueType vagy CFF betűtípusadatokat csomagolja be.

Kaphatom-e a betűtípus táblázatokat egy WOFF fájlából?

Igen, használd a… inner_font a legbonyolított értékpapírok megszerzéséhez szükséges tulajdonság. TtfFont, akkor… hozzáférési táblázatok a inner_font.ttf_tables.

A könyvtár támogatja a WOFF metaadatokat?

Igen, mindkettő. WoffFont és a következők: Woff2Font a) az alábbiakat: metadata_xml tulajdon az opcionális XML-metadatok blokkot tartalmazó.

See Also

 Magyar