Web Open Font Format (.woff)
W3C StandardZapis Web Open Font Format (WOFF) je zgodovinski standard spletnih pisav prve generacije, ki ga podpira W3C in ovija standardne pisave TrueType ali OpenType s stiskanjem zlib in metapodatki o licenciranju XML.
Pregled in metapodatki
Operacijski sistemi in analizatorji datotek identificirajo datoteke WOFF s pregledom vodilnega binarnega zaporedja bajtov:
Podpis glave na ravni bajtov (Čarobni bajti)
Operacijski sistemi in analizatorji datotek identificirajo datoteke WOFF s pregledom vodilnega binarnega zaporedja bajtov:
PODPIS HEX (ZAMIK 0):
77 4F 46 46REPREZENTACIJA ASCII: wOFF
Standardizacija: W3C Recommendation (2012)
Tehnične specifikacije
| Arhitektura vsebnika | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Stiskanje | Deflate (zlib) compression applied to each individual font table |
| Vrstni red bajtov | Big-Endian (SFNT standard) |
| Barvni prostori | Inherited from underlying font tables |
| Kanali in struktura | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Največje dimenzije | Up to 65,535 glyphs per font file |
| Prosojnost | Inherited from underlying font format |
| Pretočno in progresivno predvajanje | Table-by-table decompression enables streaming font loading |
Tehnična primerjalna matrika: WOFF proti konkurenci
| Tehnični atribut | WOFF (Trenutno) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Kodek za stiskanje | Deflate (zlib) na tabelo | Brotli s predobdelavo tabele | Nestisnjen SFNT | Nestisnjen SFNT |
| Magijski podpis | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Relativna velikost datoteke | ~40 % manjši kot TTF | ~60 % manjši kot TTF | Osnovni standard (100 %) | Osnovni standard (100 %) |
| Ciljno okolje | Stari spletni brskalniki (IE9+, Safari 5+) | Sodobni spletni brskalniki (univerzalno) | Namizni operacijski sistemi | Namizno založništvo in tisk |
Pogosti načini okvar in vodič za heksadecimalno obnovo
Opozorilo v konzoli brskalnika: 'Failed to decode downloaded font: OTS parsing error'.
Glavni vzrok: Neujemajoča se deklarirana dolžina nestisnjene tabele ali poškodovan pretok zlib.
Sanacija: Ponovno stisnite tabele pisav ali jih pretvorite v WOFF2 z uporabo pretvornika pisav File2File.
Varnostna analiza in napadalni vektorji razčlenjevalnika
Spletni brskalniki razčlenjujejo datoteke WOFF, prenesene iz nezaupanljivih spletnih domen z uporabo sanitizerja OpenType (OTS), da bi blokirali zlonamerne kode.
Znani vektorji napada
- Prekomerno branje medpomnilnika med stiskanjem zlib za poškodovane dele tabel pisav.
- Neujemajoča se polja dolžine tabel, ki sprožijo prelivanje medpomnilnika v pomnilniku (heap buffer overflow) v upodabljalnikih pisav.
- Zavrnitev storitve zaradi izčrpavanja pomnilnika med širjenjem tabele pisav.
Obrambne najboljše prakse:
Zgodovinski izvor in mejniki
Ključne prednosti
- Zmanjša velikost datotek spletnih pisav za 30 % do 50 % v primerjavi z neobdelanimi nestisnjenimi datotekami TTF ali OTF.
- Univerzalna povratna združljivost v vseh namiznih in mobilnih spletnih brskalnikih, izdanih po letu 2011.
- Vključuje izbirni blok metapodatkov XML za licenciranje pisav, avtorske zasluge in podatke o avtorskih pravicah livarne.
Tehnične omejitve in slabosti
- Nadomeščen z WOFF2, ki stisne približno 30 % manjše datoteke z uporabo algoritma Brotli.
- Ni ga mogoče namestiti neposredno v namizne operacijske sisteme (Windows/Mac) brez pretvorbe v TTF/OTF.
- Starejši algoritem stiskanja zlib je manj učinkovit kot sodobni kodirniki entropije.
Zanimive tehnične malenkosti
- Magijska števila za WOFF 1.0 so 'wOFF' (0x77 0x4F 0x46 0x46), medtem ko WOFF 2.0 uporablja 'wOF2'.
- Livarna tipov se je strinjala, da dovoli svoje pisave na spletu šele po ustvarjanju WOFF, ker je njegov specializiran vsebnik ločil spletne pisave od namiznih pisav, ki jih je mogoče piratizirati.
- WOFF je bil prvotno uveden v brskalniku Firefox 3.6 leta 2010, preden je postal uradno priporočilo W3C.
Pogosta tehnična vprašanja
Kakšna je razlika med WOFF in WOFF2?
WOFF uporablja stiskanje zlib, medtem ko WOFF2 uporablja Googlov novejši algoritem Brotli in tablične preoblikovalnike (table transforms), kar daje datoteke, ki so približno 30 % manjše od WOFF.
Kako lahko pretvorim pisavo WOFF v TTF ali OTF za namizno uporabo?
Datoteke WOFF lahko v nekaj sekundah pretvorite v namizne pisave TTF ali OTF, primerne za namestitev, z uporabo File2File.app neposredno v vašem spletnem brskalniku.
Ali na sodobnih spletnih mestih še vedno potrebujem WOFF 1.0?
Ne. Vsi sodobni brskalniki izvorno podpirajo WOFF2. WOFF 1.0 je potreben samo, če morate podpirati zastarele brskalnike, kot je Internet Explorer.