Uvod u članak
WOFF (Web Open Font Format) je standardni kontejner za isporuku fontova na webu. WOff 1 okružuje TrueType ili CFF font s zlib kompresijom; WOF 2 umjesto toga primjenjuje Brotli kompresu, obično postižući 20-30% bolji omjerom komprimiranja. Oba formata podržavaju svaki moderni preglednik i preporučeni su format dostavljanja za web tipografiju.
Aspose.Font FOSS for Python exposes WOFF and WOFF2 through the WoffFont i u članku 1. Woff2Font Obe klase dijele isti API: one izlažu svojstva fontova. (font_name, font_family, num_glyphs), neobavezno. metadata_xml blok, i inner_font Akcesor koji vraća osnovnu vrijednost TtfFont, i a to_bytes() metoda za pretvaranje formata.
Biblioteka je objavljena na PyPI-u kao: aspose-font i licenciran pod MIT-om. Licenca bez obveznih komercijalnih ovisnosti.
Glavne karakteristike
Upisivanje WOFF i WOff2 fontova
Upotreba: FontLoader.open Za učitavanje WOFF ili WOff2 datoteke. Uplatitelj otkriva format automatski iz datoteke magic bytes:
from aspose_font.loader import FontLoader
# Load WOFF 1
woff = FontLoader.open("MyFont.woff")
print(f"Name : {woff.font_name}")
print(f"Family : {woff.font_family}")
print(f"Style : {woff.font_style}")
print(f"Glyphs : {woff.num_glyphs}")
print(f"Type : {woff.font_type}")
# Load WOFF 2
woff2 = FontLoader.open("MyFont.woff2")
print(f"Name : {woff2.font_name}")
print(f"Glyphs : {woff2.num_glyphs}")
FontLoader.open vraća a WoffFont za: .woff datoteke i a. Woff2Font za: .woff2 Oba razreda implementiraju isto. Font baze sučelja tako da kod koji čita svojstva je identična za oba formata.
Pregled metapodataka WOFF-a
WOFF datoteke mogu sadržavati opcionalni blok XML metapodataka koji sadrži licenciranje. Informacije, povlastice i opis fontova. metadata_xml imovina:
from aspose_font.loader import FontLoader
font = FontLoader.open("MyFont.woff")
# metadata_xml is a WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
if xml:
print("WOFF metadata XML:")
print(xml[:500])
else:
print("No metadata block in this WOFF file")
U skladu s člankom 1. metadata_xml svojstvo vraća a str sadržavajući sirov XML, ili None ako: font ne sadrži metapodatki. WoffFont i u članku 1. Woff2Font izložiti ovo imanje.
Prihvaćanje unutarnjih TTF tabela
WOFF i WOff2 okružuju TrueType font. inner_font imovina vam daje podrijetlo TtfFont s punim pristupom svom OpenType skupovima tabela:
from aspose_font.loader import FontLoader
font = FontLoader.open("MyFont.woff")
# inner_font is a WoffFont-specific property returning the TtfFont
inner = getattr(font, "inner_font")
tables = inner.ttf_tables # TtfTableSet
print(f"Units/em : {tables.head.units_per_em}")
print(f"Ascender : {tables.hhea.ascender}")
print(f"Num glyphs : {tables.maxp.num_glyphs}")
print(f"Family name : {tables.name.best_name(1)}")
Preko njega. inner_font.ttf_tables možete pristupiti svim standardnim OpenType tabelama: head, hhea, maxp, os2, name, i post.Za tabele bez imenovanog broja: Priloga, upotreba inner_font.get_blob(tag) da se primite sirove bajtova po OpenType oznake.
Kern parovi iz WOFF font
get_kern_pairs() vraća sve parove jezgra ugrađeni u font. Svaki KernPair nosi left (GlyphId), right (glyphId) i value (int, u jedinicama fontova):
from aspose_font.loader import FontLoader
font = FontLoader.open("MyFont.woff")
pairs = font.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" {pair.left} + {pair.right} = {pair.value}")
Parovi jezgra su pohranjeni u unutarnjim TTF-ovima. kern Fontovi s OpenType-om GPOS Kern karakteristike umjesto a kern tablica će vratiti prazan popis iz: ovaj metod.
Preobrazba formata
FontConverter.convert konvertira između font formata. Koristite FontType uštednja da navedete cilj format, a zatim poziv to_bytes() za serijalizaciju:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# TTF -> WOFF
ttf = FontLoader.open("MyFont.ttf")
woff = FontConverter.convert(ttf, FontType.WOFF)
Path("MyFont.woff").write_bytes(woff.to_bytes(FontType.WOFF))
# TTF -> WOFF2 (Brotli-compressed)
woff2 = FontConverter.convert(ttf, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
# WOFF -> WOFF2
existing_woff = FontLoader.open("MyFont.woff")
converted = FontConverter.convert(existing_woff, FontType.WOFF2)
Path("MyFont-from-woff.woff2").write_bytes(converted.to_bytes(FontType.WOFF2))
# WOFF2 -> WOFF (decompress back to WOFF 1)
existing_woff2 = FontLoader.open("MyFont.woff2")
woff1 = FontConverter.convert(existing_woff2, FontType.WOFF)
Path("MyFont-from-woff2.woff").write_bytes(woff1.to_bytes(FontType.WOFF))
U ovom slučaju, u skladu s člankom 4. stavkom 1. točkom (a) točke (b) ovog članka, se može koristiti: S druge strane, u ovom slučaju je potrebno osigurati da se sve informacije o tome mogu koristiti. FontConverter.convert API.
Izrada web font paketa
WebFontBuilder.build generira kompletan paket web fontova iz jednog TTF-a. Izrada WOFF, WOff2 i opcionalnog SVG prikaza u jednom pozivu:
from aspose_font.web import WebFontBuilder
from aspose_font.loader import FontLoader
from pathlib import Path
# Load a TTF source font
font = FontLoader.open("MyFont.ttf")
# Build WOFF + WOFF2 output files
WebFontBuilder.build(
font=font,
file_stem="MyFont",
include_woff=True,
font_display="swap",
preview_text="The quick brown fox",
instance_coordinates=None,
output_dir=Path("web-output"),
)
Nakon poziva, web-output/ sadrži: MyFont.woff, MyFont.woff2, i opcionalno a MyFont-preview.svg.-Ne, ne mogu. font_display parametri karte izravno na Službeni sustav za upravljanje i nadzor (SCS) font-display Deskriptor i prihvaća "auto", "block", "swap", "fallback",ili "optional".
Brzi početak
Instaliraj knjižnicu:
pip install "aspose-font>=1.0.0"
Uplatiti WOFF font i pretvoriti ga u WOff2:
from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType
from pathlib import Path
# Load WOFF
font = FontLoader.open("MyFont.woff")
print(f"Font : {font.font_name}")
print(f"Glyphs : {font.num_glyphs}")
print(f"Type : {font.font_type}")
# Inspect metadata (if present) — WoffFont-specific property
xml = getattr(font, "metadata_xml", None)
print(f"Has metadata: {xml is not None}")
# Access inner OpenType tables — WoffFont-specific property
inner = getattr(font, "inner_font")
tables = inner.ttf_tables
print(f"Units/em: {tables.head.units_per_em}")
# Convert to WOFF2
woff2 = FontConverter.convert(font, FontType.WOFF2)
Path("MyFont.woff2").write_bytes(woff2.to_bytes(FontType.WOFF2))
print("Converted to WOFF2")
Podržani web font formati
| Format: | Proračunska sredstva | Uređaj za prevoz: | Preusmjeriti na WOFF | Preusmjeriti na WOFF2 |
|---|---|---|---|---|
| TTF | .ttf | - Da, u redu. | - Da, u redu. | - Da, u redu. |
| OTF | .od | - Da, u redu. | - Da, u redu. | - Da, u redu. |
| WOFF | .-Ne, ne mogu. | - Da, u redu. | — | - Da, u redu. |
| WOFF2 | .woff2 | - Da, u redu. | - Da, u redu. | — |
| EOT | .-Ne. Ne, ne mogu. | - Da, u redu. | - Da, u redu. | - Da, u redu. |
| CFF | .cff | - Da, u redu. | - Da, u redu. | - Da, u redu. |
| TYPE1 | .pfb/.pfa | - Da, u redu. | - Da, u redu. | - Da, u redu. |
Svi izvorni formati podržavaju pretvaranje u WOFF i WOff2 putem: FontConverter.convert.
Otvoreni izvor i licenciranje
Aspose.Font FOSS for Python is released under the MIT License. You can use it in osobni, komercijalni i otvoreni izvorni projekti bez troškova. Izvorna koda je dostupna na GitHub-u i paket je distribuiran putem PyPI kao aspose-font.