Web Open Font Format (.woff)
W3C StandardníWeb Open Font Format (WOFF) je historický open-source standard formátu webových písem první generace podpořený konsorciem W3C. Balí standardní písma typu TrueType nebo OpenType pomocí komprese zlib a metadat licencování ve formátu XML.
Kontrola a metadata
Operační systémy a analyzátory souborů identifikují soubory WOFF kontrolou počáteční binární sekvence bajtů:
Podpis hlavičky na úrovni bajtů (Magic Bytes)
Operační systémy a analyzátory souborů identifikují soubory WOFF kontrolou počáteční binární sekvence bajtů:
HEXADECIMÁLNÍ PODPIS (POSUN 0):
77 4F 46 46ASCII REPREZENTACE: wOFF
Standardizace: W3C Recommendation (2012)
Technické specifikace
| Architektura kontejneru | 44bajtová hlavička WOFF, za níž následuje adresář tabulek, data tabulek komprimovaná zlibem a volitelná rozšířená metadata a soukromá data |
| Komprese | Komprese Deflate (zlib) aplikovaná na každou jednotlivou tabulku písma |
| Pořadí bajtů | Big-endian (standard SFNT) |
| Barevné prostory | Převzato z podkladových tabulek písma |
| Kanály a struktura | Obrysy glyfů TrueType („glyf“) nebo PostScript („CFF “), metriky a typografické funkce |
| Max. rozměry | Až 65 535 glyfů v jednom souboru písma |
| Průhlednost | Převzato z podkladového formátu písma |
| Streamování a progresivní načítání | Dekomprese po jednotlivých tabulkách umožňuje průběžné načítání písma |
Technická srovnávací matice: WOFF vs konkurence
| Technický atribut | WOFF (Aktuální) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Kompresní kodek | Deflate (zlib) na tabulku | Brotli s předzpracováním tabulek | Nekomprimovaný SFNT | Nekomprimovaný SFNT |
| Magický podpis | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Relativní velikost souboru | Často menší než TTF; úspora závisí na písmu | Často menší než TTF; úspora závisí na písmu | Základní standard (100 %) | Základní standard (100 %) |
| Cílové prostředí | Starší webové prohlížeče (IE9+, Safari 5+) | Podpora se liší podle prohlížeče. | Desktopové operační systémy | Stolní publikační činnost a tisk |
Běžné režimy poškození a příručka pro obnovení v hex
Varování v konzoli prohlížeče: „Failed to decode downloaded font: OTS parsing error".
Hlavní příčina: Neshoda v deklarované délce nekomprimované tabulky nebo poškozený proud zlib.
Obnovení: Znovu zkomprimujte tabulky písem nebo je převeďte do formátu WOFF2 pomocí převaděče písem File2File.app.
Bezpečnostní analýza a vektory útoků na parser
Webové prohlížeče analyzují soubory WOFF stažené z nedůvěryhodných webových domén pomocí nástroje OpenType Sanitizer (OTS), aby zablokovaly exploity.
Známé vektory útoků
- Nadměrné čtení vyrovnávací paměti během dekomprese zlib u poškozených bloků tabulky písem.
- Pole nesprávné délky tabulky spouštějící přetečení haldy (heap buffer overflow) v rendererech písem.
- Odepření služby (DoS) prostřednictvím vyčerpání paměti během rozšiřování tabulky písem.
Doporučené bezpečnostní postupy: Stažené soubory WOFF vždy před předáním fontovým enginům operačního systému sanitujte pomocí OTS.
Historický vývoj a milníky
Klíčové výhody a přednosti
- Komprese WOFF může zmenšit soubor s fontem; dosažená úspora závisí na písmu a použitém kodéru.
- WOFF podporuje mnoho prohlížečů; podpora závisí na platformě a verzi.
- Zahrnuje volitelný blok metadat XML pro licencování písem, zásluhy autorů a informace o autorských právech sléváren.
Technická omezení a nevýhody
- V mnoha pracovních postupech WOFF2 nahradil WOFF. WOFF2 používá Brotli a transformace tabulek, přičemž dosažená úspora závisí na písmu.
- Nelze jej přímo nainstalovat do desktopových operačních systémů (Windows/Mac) bez převodu na TTF/OTF.
- Starší kompresní algoritmus zlib je méně účinný než moderní enkodéry entropie.
Zajímavé technické drobnosti
- Magické bajty pro WOFF 1.0 jsou „wOFF" (0x77 0x4F 0x46 0x46), zatímco WOFF 2.0 používá „wOF2".
- Písmové slévárny souhlasily s povolením svých písem na webu až po vytvoření formátu WOFF, protože jeho specializovaný kontejner odlišoval webová písma od snadno pirátitelných písem pro počítače.
- Formát WOFF byl původně implementován ve Firefoxu 3.6 v roce 2010, než se stal oficiálním doporučením W3C.
Často kladené technické otázky
Jaký je rozdíl mezi formáty WOFF a WOFF2?
WOFF používá kompresi zlib, zatímco WOFF2 používá kompresi Brotli a transformace tabulek písma. Výsledný rozdíl ve velikosti souboru závisí na písmu a kodéru.
Jak mohu převést písmo WOFF na TTF nebo OTF pro použití v počítači?
Soubory WOFF můžete během několika sekund převést na instalovatelná desktopová písma TTF nebo OTF pomocí aplikace File2File.app přímo ve vašem webovém prohlížeči.
Potřebuji ještě WOFF 1.0 na moderních webech?
Ne. Všechny moderní prohlížeče podporují WOFF2 nativně. WOFF 1.0 je potřeba pouze v případě, že musíte podporovat zastaralé staré prohlížeče, jako je Internet Explorer.