Web Open Font Format (.woff)
W3C ŠtandardWeb Open Font Format (WOFF) je historický štandard webových fontov prvej generácie schválený konzorciom W3C, ktorý obaľuje štandardné fonty TrueType alebo OpenType pomocou kompresie zlib a metadát licencií vo formáte XML.
Preskúmať a metadáta
Operačné systémy a analyzátory súborov identifikujú súbory WOFF kontrolou počiatočnej binárnej bajtovej sekvencie:
Podpis hlavičky na úrovni bajtov (Magic Bytes)
Operačné systémy a analyzátory súborov identifikujú súbory WOFF kontrolou počiatočnej binárnej bajtovej sekvencie:
HEXADECIMÁLNY PODPIS (OFFSET 0):
77 4F 46 46ASCII REPREZENTÁCIA: wOFF
Štandardizácia: W3C Recommendation (2012)
Technické špecifikácie
| Architektúra kontajnera | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Kompresia | Deflate (zlib) compression applied to each individual font table |
| Poradie bajtov (Endianness) | Big-Endian (SFNT standard) |
| Farebné priestory | Inherited from underlying font tables |
| Kanály a štruktúra | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Max. rozmery | Up to 65,535 glyphs per font file |
| Priehľadnosť | Inherited from underlying font format |
| Streamovanie a postupné načítavanie | Table-by-table decompression enables streaming font loading |
Technická porovnávacia matica: WOFF vs konkurenti
| Technický atribút | WOFF (Aktuálne) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Kompresný kodek | Deflate (zlib) podľa tabuľky | Brotli s predbežným spracovaním tabuliek | 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) |
| Relatívna veľkosť súboru | ~o 40 % menší ako TTF | ~o 60 % menší ako TTF | Základný štandard (100 %) | Základný štandard (100 %) |
| Cieľové prostredie | Staršie webové prehliadače (IE9+, Safari 5+) | Moderné webové prehliadače (univerzálne) | Desktopové operačné systémy | Stolné publikovanie a tlač |
Bežné režimy poškodenia a príručka na obnovu v hexadecimálnom kóde
Varovanie v konzole prehliadača: 'Failed to decode downloaded font: OTS parsing error'.
Hlavná príčina: Nesúlad v deklarovanej dĺžke nekomprimovanej tabuľky alebo poškodený prúd zlib.
Obnova: Znovu skomprimujte tabuľky fontov alebo ich konvertujte na WOFF2 pomocou konvertora fontov File2File.
Bezpečnostná analýza a vektory útokov na parser
Webové prehliadače analyzujú súbory WOFF stiahnuté z nedôveryhodných webových domén pomocou nástroja OpenType Sanitizer (OTS), aby zablokovali exploitové payloady.
Známe vektory útokov
- Nadmerné čítanie vyrovnávacej pamäte (buffer over-read) počas zlib dekompresie poškodených častí tabuľky fontov.
- Nesprávne polia dĺžky tabuľky vyvolávajúce pretečenie haldy (heap buffer overflow) v vykresľovačoch fontov.
- Odopretie služby (DoS) prostredníctvom vyčerpania pamäte počas rozbaľovania tabuľky fontov.
Najlepšie obranné postupy:
Historický pôvod a míľniky
Kľúčové výhody a prednosti
- Zmenšuje veľkosť súborov webových fontov o 30 % až 50 % v porovnaní so surovými nekomprimovanými súbormi TTF alebo OTF.
- Univerzálna spätná kompatibilita so všetkými desktopovými a mobilnými webovými prehliadačmi vydanými od roku 2011.
- Obsahuje voliteľný blok metadát XML pre licencie fontov, zásluhy autorov a informácie o autorských právach slievarní písma.
Technické obmedzenia a nevýhody
- Nahradený formátom WOFF2, ktorý komprimuje približne o 30 % efektívnejšie pomocou algoritmu Brotli.
- Nedá sa priamo nainštalovať do desktopových operačných systémov (Windows/Mac) bez konverzie na TTF/OTF.
- Starší kompresný algoritmus zlib je menej účinný ako moderné entropické enkodéry.
Zaujímavé technické drobnosti
- Magické bajty pre WOFF 1.0 sú 'wOFF' (0x77 0x4F 0x46 0x46), zatiaľ čo WOFF 2.0 používa 'wOF2'.
- Sliarenne písma súhlasili s sprístupnením svojich fontov na webe až po vytvorení formátu WOFF, pretože jeho špecializovaný kontajner odlišoval webové fonty od pirátskych desktopových fontov.
- Formát WOFF bol pôvodne implementovaný vo Firefoxe 3.6 v roku 2010 predtým, ako sa stal oficiálnym odporučením W3C.
Často kladené technické otázky
Aký je rozdiel medzi WOFF a WOFF2?
WOFF využíva kompresiu zlib, zatiaľ čo WOFF2 používa novší algoritmus Brotli od Google a transformácie tabuliek, čo vedie k súborom, ktoré sú približne o 30 % menšie ako WOFF.
Ako môžem konvertovať font WOFF na TTF alebo OTF na použitie na pracovnej ploche?
Súbory WOFF môžete konvertovať na inštalovateľné desktopové fonty TTF alebo OTF v priebehu niekoľkých sekúnd pomocou nástroja File2File.app priamo vo vašom webovom prehliadači.
Potrebujem na moderných webových stránkach stále formát WOFF 1.0?
Nie. Všetky moderné prehliadače podporujú WOFF2 natívne. WOFF 1.0 je potrebný iba vtedy, ak musíte podporovať zastarané staršie prehliadače, ako je napríklad Internet Explorer.