Formato carattere web aperto (.woff)
W3C StandardWeb Open Font Format (WOFF) este primul format istoric de fonturi web deschise, din prima generație, aprobat de W3C, care ambalează fonturi standard TrueType sau OpenType cu compresie zlib și metadate de licențiere XML.
Inspectează și Metadate
Sistemele de operare și analizatoarele de fișiere identifică fișierele WOFF prin inspectarea secvenței binare inițiale:
Semnătura antetului la nivel de octet (Magic Bytes)
Sistemele de operare și analizatoarele de fișiere identifică fișierele WOFF prin inspectarea secvenței binare inițiale:
SEMNĂTURĂ HEX (OFFSET 0):
77 4F 46 46REPREZENTARE ASCII: wOFF
Standardizare: W3C Recommendation (2012)
Specificații tehnice
| Arhitectură container | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Compresie | Deflate (zlib) compression applied to each individual font table |
| Endianitatea octeților | Big-Endian (SFNT standard) |
| Spații de culoare | Inherited from underlying font tables |
| Canale și structură | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Dimensiuni maxime | Up to 65,535 glyphs per font file |
| Transparență | Inherited from underlying font format |
| Streaming și progresiv | Table-by-table decompression enables streaming font loading |
Matrice de comparație tehnică: WOFF vs Competitori
| Atribut tehnic | WOFF (Curent) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Codec de compresie | Deflate (zlib) per tabel | Brotli cu preprocesare de tabel | SFNT necomprimat | SFNT necomprimat |
| Semnătură magică | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Dimensiune relativă a fișierului | ~40% mai mic decât TTF | ~60% mai mic decât TTF | Standard de bază (100%) | Standard de bază (100%) |
| Mediu țintă | Browsere web vechi (IE9+, Safari 5+) | Browsere web moderne (Universale) | Sisteme de operare pentru desktop | Publicare desktop și tipărire |
Moduri comune de corupție și ghid de recuperare hexazecimală
Avertisment în consola browserului: 'Failed to decode downloaded font: OTS parsing error'.
Cauză principală: Neconcordanță în lungimea declarată a tabelului necomprimat sau flux zlib deteriorat.
Recuperare: Recomprimați tabelele de fonturi sau convertiți la WOFF2 utilizând File2File Font Converter.
Analiză de securitate și vectori de atac asupra parserului
Browserele web analizează fișierele WOFF descărcate din domenii web nesigure utilizând OpenType Sanitizer (OTS) pentru a bloca payload-urile de exploatare.
Vectori de atac cunoscuți
- Citire excesivă a memoriei tampon (buffer over-read) în timpul compresiei zlib a bucăților de tabele de fonturi corupte.
- Câmpuri de lungime a tabelului necorespunzătoare care declanșează depășiri de memorie tampon în heap în programele de redare a fonturilor.
- Refuzul serviciului prin epuizarea memoriei în timpul extinderii tabelului de fonturi.
Cele mai bune practici de securitate:
Origini istorice și repere
Avantaje cheie și beneficii
- Reduce dimensiunea fișierelor de fonturi web cu 30% până la 50% comparativ cu fișierele TTF sau OTF necomprimate brute.
- Compatibilitate universală înapoi pe orice browser web de desktop și mobil lansat din 2011 încoace.
- Include un bloc opțional de metadate XML pentru licențierea fonturilor, creditele autorilor și informațiile despre drepturile de autor ale turnătoriei.
Limitări tehnice și dezavantaje
- Înlocuit de WOFF2, care comprimă cu aproximativ 30% mai mic folosind algoritmul Brotli.
- Nu poate fi instalat direct pe sistemele de operare desktop (Windows/Mac) fără conversie la TTF/OTF.
- Algoritmul de compresie zlib mai vechi este mai puțin eficient decât codificatoarele de entropie moderne.
Curiozități tehnice interesante
- Octeții magici pentru WOFF 1.0 sunt 'wOFF' (0x77 0x4F 0x46 0x46), în timp ce WOFF 2.0 folosește 'wOF2'.
- Turnătoriile de tipuri au fost de acord să își permită fonturile pe web numai după ce WOFF a fost creat, deoarece containerul său specializat a distins fonturile web de fonturile de desktop care pot fi piratate.
- WOFF a fost implementat inițial în Firefox 3.6 în 2010 înainte de a deveni o recomandare oficială W3C.
Întrebări tehnice frecvente
Care este diferența dintre WOFF și WOFF2?
WOFF folosește compresie zlib, în timp ce WOFF2 utilizează algoritmul mai nou Brotli de la Google și transformări de tabele, rezultând fișiere cu aproximativ 30% mai mici decât WOFF.
Cum pot converti un font WOFF în TTF sau OTF pentru utilizare pe desktop?
Poți converti fișierele WOFF în fonturi TTF sau OTF instalabile pentru desktop în câteva secunde, folosind File2File.app direct în browserul tău web.
Mai am nevoie de WOFF 1.0 pe site-urile moderne?
Nu. Toate browserele moderne acceptă nativ WOFF2. WOFF 1.0 este necesar doar dacă trebuie să oferi suport pentru browsere vechi și depășite, cum ar fi Internet Explorer.