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 FontType3. 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ó.