Web Open Font Format (.woff)
W3C StandardWeb Open Font Format (WOFF) je prva generacija otvorenog standardnog formata veb-fonta, koju je podržao W3C. On objedinjuje standardne TrueType ili OpenType fontove sa zlib kompresijom i XML metapodacima o licenciranju.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju WOFF datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju WOFF datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
77 4F 46 46ASCII REPREZENTACIJA: wOFF
Standardizacija: W3C Recommendation (2012)
Tehničke specifikacije
| Arhitektura kontejnera | Zaglavlje WOFF formata od 44 bajta, za kojim slede direktorijum tabela, podaci tabela komprimovani zlib algoritmom, opcioni prošireni metapodaci i privatni podaci |
| Kompresija | Deflate (zlib) kompresija primenjena na svaku tabelu fonta zasebno |
| Bajtni redosled (Endianness) | Veliko-endijanski zapis (SFNT standard) |
| Prostori boja | Nasleđeno iz tabela fonta koje se nalazi unutar WOFF datoteke |
| Kanali i struktura | Obrisi glifova TrueType formata („glyf“) ili PostScript formata („CFF “), metrike i tipografske funkcije |
| Maksimalne dimenzije | Do 65.535 glifova po datoteci fonta |
| Transparentnost | Nasleđeno iz formata fonta koji se nalazi unutar WOFF datoteke |
| Strimovanje i progresivno učitavanje | Dekompresija tabela jednu po jednu omogućava strimovanje fonta tokom učitavanja |
Tehnička matrica poređenja: WOFF u odnosu na konkurente
| Tehnički atribut | WOFF (Trenutno) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Kodirni algoritam kompresije | Deflate (zlib) po tabeli | Brotli sa pretprocesiranjem tabela | Nekompresovani SFNT | Nekompresovani SFNT |
| Magični potpis | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Relativna veličina fajla | Često manji od TTF-a; ušteda zavisi od fonta | Često manji od TTF-a; ušteda zavisi od fonta | Osnovni standard (100%) | Osnovni standard (100%) |
| Ciljno okruženje | Stariji veb-pregledači (IE9+, Safari 5+) | Podrška zavisi od pregledača. | Desktop operativni sistemi | Desktop izdavaštvo i štampa |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Upozorenje u konzoli veb-pregledača: „Failed to decode downloaded font: OTS parsing error“.
Osnovni uzrok: Neslaganje sa deklarisanom dužinom nekompresovane tabele ili oštećen tok podataka zlib.
Oporavak: Ponovo kompresujte tabele fontova ili konvertujte font u WOFF2 pomoću File2File.app Font Converter.
Bezbednosna analiza i vektori napada parsera
Veb-pregledači analiziraju WOFF datoteke preuzete sa nepouzdanih veb-domena pomoću alatke OpenType Sanitizer (OTS) kako bi blokirali zlonamerni sadržaj za eksploataciju ranjivosti.
Poznati vektori napada
- Čitanje izvan granica bafera tokom zlib dekompresije oštećenih delova tabele fonta.
- Neusklađena polja dužine tabela koja izazivaju prepunjavanje memorijskog bafera na hipu u mehanizmima za iscrtavanje fontova.
- Uskraćivanje usluge (DoS) usled iscrpljivanja memorije tokom širenja tabele fonta.
Najbolje prakse za zaštitu: Uvek sanitizujte preuzete WOFF datoteke pomoću OTS-a pre prosleđivanja mehanizmima za fontove operativnog sistema.
Istorijat i prekretnice
Ključne prednosti
- Može da smanji veličinu datoteka veb-fontova u poređenju sa izvornim TTF ili OTF datotekama; stepen uštede zavisi od fonta i enkodera.
- WOFF podržavaju mnogi pregledači, uključujući starije verzije; kompatibilnost zavisi od verzije pregledača i platforme.
- Uključuje opcioni blok XML metapodataka o licenciranju fontova, navođenju autora i autorskim pravima tipografske livnice.
Tehnička ograničenja i nedostaci
- U mnogim tokovima rada na vebu WOFF je zamenjen formatom WOFF2, koji koristi Brotli kompresiju i transformacije tabela fonta; ušteda prostora zavisi od fonta.
- Ne može se direktno instalirati u desktop operativne sisteme (Windows/Mac) bez konverzije u TTF/OTF.
- Stariji algoritam kompresije zlib manje je efikasan od savremenih entropijskih kodera.
Zanimljivosti
- Magični bajtovi za WOFF 1.0 su 'wOFF' (0x77 0x4F 0x46 0x46), dok WOFF 2.0 koristi 'wOF2'.
- Livnice tipografije su pristale da dozvole svoje fontove na vebu tek nakon što je WOFF kreiran, jer je njegov specijalizovani kontejner razlikovao web fontove od desktop fontova podložnih pirateriji.
- WOFF je prvobitno primenjen u Firefox-u 3.6 2010. godine, pre nego što je postao zvanična preporuka W3C-a.
Često postavljana tehnička pitanja
Koja je razlika između WOFF i WOFF2?
WOFF koristi zlib kompresiju, dok WOFF2 koristi Brotli kompresiju i transformacije tabela fonta. Razlika u veličini datoteke zavisi od fonta i enkodera.
Kako mogu da konvertujem WOFF font u TTF ili OTF za desktop upotrebu?
Možete konvertovati WOFF fajlove u instalacione desktop TTF ili OTF fontove za nekoliko sekundi koristeći File2File.app direktno u Vašem veb-pretraživaču.
Da li mi je i dalje potreban WOFF 1.0 na modernim veb-sajtovima?
Trenutne glavne verzije pregledača podržavaju WOFF2. Rezervna WOFF datoteka i dalje može biti korisna za starije pregledače ili određena ugrađena okruženja.