Web Open Font Format (.woff)
W3C Standartinis„Web Open Font Format" (WOFF) yra pirmosios kartos atvirasis žiniatinklio šriftų formatas, patvirtintas W3C organizacijos, kuris apgaubia standartinius „TrueType" arba „OpenType" šriftus zlib glaudinimu ir XML licencijavimo metaduomenimis.
Tikrinti ir metaduomenys
Operacinės sistemos ir failų analizatoriai atpažįsta WOFF failus tikrindami pradinę dvejetainę baitų seką:
Baitų lygio antraštės parašas (magiškieji baitai)
Operacinės sistemos ir failų analizatoriai atpažįsta WOFF failus tikrindami pradinę dvejetainę baitų seką:
ŠEŠIOLIKTAINIS PARAŠAS (POSLINKIS 0):
77 4F 46 46ASCII ATVAIZDAVIMAS: wOFF
Standartizacija: W3C Recommendation (2012)
Techninės specifikacijos
| Konteinerio architektūra | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Glaudinimas | Deflate (zlib) compression applied to each individual font table |
| Baitų seka (Endianness) | Big-Endian (SFNT standard) |
| Spalvų erdvės | Inherited from underlying font tables |
| Kanalai ir struktūra | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Maksimalūs matmenys | Up to 65,535 glyphs per font file |
| Skaidrumas | Inherited from underlying font format |
| Srautas ir progresyvusis įkėlimas | Table-by-table decompression enables streaming font loading |
Techninė palyginimo matrica: WOFF vs konkurentai
| Techninis atributas | WOFF (Dabartinis) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Glaudinimo kodekas | Deflate (zlib) pagal lentelę | Brotli su lentelės išankstiniu apdorojimu | Nekompresuotas SFNT | Nekompresuotas SFNT |
| Magiškasis parašas | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Santykinis failo dydis | ~40% mažesnis nei TTF | ~60% mažesnis nei TTF | Bazinė linija (100%) | Bazinė linija (100%) |
| Tikslinė aplinka | Senstelėjusios naršyklės (IE9+, Safari 5+) | Šiuolaikinės naršyklės (Visuotinės) | Stalinės operacinės sistemos | Stalinė leidyba ir spauda |
Dažni sugadinimo režimai ir šešioliktainio atkūrimo vadovas
Naršyklės konsolės įspėjimas: „Failed to decode downloaded font: OTS parsing error".
Pirminė priežastis: Deklaruoto nekompresuoto lentelės ilgio neatitikimas arba sugadintas zlib srautas.
Atkūrimas: Iš naujo suspauskite šrifto lenteles arba konvertuokite į WOFF2 naudodami „File2File Font Converter".
Saugumo analizė ir analizatoriaus atakos vektoriai
Žiniatinklio naršyklės analizuoja WOFF failus, atsisiųstus iš nepatikimų domenų, naudodamos „OpenType Sanitizer" (OTS), kad užblokuotų kenkėjiškus kodus.
Žinomi atakos vektoriai
- Buferio perteklinis skaitymas zlib glaudinimo atmetimo metu iš sugadintų šrifto lentelės dalių.
- Nesutampantys lentelės ilgio laukai, sukeliantys krūvos buferio perpildymą šriftų atvaizdavimo priemonėse.
- Paslaugų trikdymas (DoS) dėl atminties išsekimo išplečiant šrifto lentelę.
Geriausia apsaugos praktika:
Istorinė kilmė ir svarbiausi etapai
Pagrindiniai privalumai
- Sumažina žiniatinklio šriftų failų dydį 30% - 50%, palyginti su nekompresuotais TTF arba OTF failais.
- Visuotinis atgalinis suderinamumas visose darbalaukio ir mobiliosiose naršyklėse, išleistose nuo 2011 m.
- Apima pasirinktinį XML metaduomenų bloką šrifto licencijavimui, autorių kreditams ir liejyklos autorių teisių informacijai.
Techniniai apribojimai ir trūkumai
- Pakeistas WOFF2, kuris glaudina maždaug 30% efektyviau naudodamas „Brotli" algoritmą.
- Negalima tiesiogiai įdiegti stalinėse operacinėse sistemose („Windows" / „Mac") be konvertavimo į TTF/OTF.
- Senesnis zlib glaudinimo algoritmas yra mažiau efektyvus nei šiuolaikiniai entropijos kodavimo įrenginiai.
Įdomūs techniniai faktai
- WOFF 1.0 magiškieji baitai yra „wOFF" (0x77 0x4F 0x46 0x46), o WOFF 2.0 naudoja „wOF2".
- Šriftų liejyklos sutiko leisti naudoti savo šriftus žiniatinklyje tik sukūrus WOFF, nes jo specializuotas konteineris atskyrė žiniatinklio šriftus nuo neteisėtai kopijuojamų stalinio kompiuterio šriftų.
- WOFF iš pradžių buvo įdiegtas „Firefox 3.6" naršyklėje 2010 m., prieš tampant oficialia W3C rekomendacija.
Dažniausiai užduodami techniniai klausimai
Kuo skiriasi WOFF ir WOFF2?
WOFF naudoja zlib glaudinimą, o WOFF2 naudoja naujesnį „Google“ Brotli algoritmą ir lentelių transformacijas, todėl gaunami failai yra maždaug 30% mažesni nei WOFF.
Kaip konvertuoti WOFF šriftą į TTF arba OTF darbastalio naudojimui?
Galite per kelias sekundes konvertuoti WOFF failus į diegiamus darbalaukio TTF arba OTF šriftus naudodami File2File.app tiesiai savo interneto naršyklėje.
Ar man vis dar reikia WOFF 1.0 šiuolaikinėse svetainėse?
Ne. Visos šiuolaikinės naršyklės palaiko WOFF2 gimtąja tvarka. WOFF 1.0 reikalingas tik tuo atveju, jei privalote palaikyti pasenusias naršykles, pavyzdžiui, „Internet Explorer“.