Formato carattere web aperto (.woff)
W3C StandardWeb Open Font Format (WOFF) este formatul deschis de fonturi web din prima generație, aprobat de W3C. Acesta împachetează fonturi TrueType sau OpenType standard cu compresie zlib și metadate XML de licențiere.
Inspectare ș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 (octeți magici)
Sistemele de operare și analizatoarele de fișiere identifică fișierele WOFF prin inspectarea secvenței binare inițiale:
SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):
77 4F 46 46REPREZENTARE ASCII: wOFF
Standardizare: W3C Recommendation (2012)
Specificații tehnice
| Arhitectură container | Antet WOFF de 44 de octeți, urmat de directorul tabelelor, datele tabelelor comprimate cu zlib, metadate extinse opționale și date private |
| Compresie | Compresie Deflate (zlib) aplicată fiecărui tabel de font separat |
| Ordinea octeților | Big-endian (standard SFNT) |
| Spații de culoare | Moștenite din tabelele fontului de bază |
| Canale și structură | Contururi de glife TrueType („glyf”) sau PostScript („CFF ”), metrici și funcții tipografice |
| Dimensiuni maxime | Până la 65.535 de glife per fișier de font |
| Transparență | Moștenită din formatul fontului de bază |
| Streaming și progresiv | Decomprimarea tabel cu tabel permite încărcarea fontului în flux |
Matrice de comparație tehnică: WOFF vs. concurenți
| 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 | Adesea mai mic decât TTF; economia de spațiu variază în funcție de font | Adesea mai mic decât TTF; economia de spațiu variază în funcție de font | Standard de bază (100%) | Standard de bază (100%) |
| Mediu țintă | Browsere web vechi (IE9+, Safari 5+) | Compatibilitatea diferă în funcție de browser. | 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: Recomprimă tabelele fontului sau convertește-l în WOFF2 cu File2File.app 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 codurile malițioase.
Vectori de atac cunoscuți
- Citire excesivă a memoriei tampon (buffer over-read) în timpul decomprimării zlib a bucăților de tabele de fonturi corupte.
- Câmpuri de lungime a tabelului necorespunzătoare care declanșează depășiri ale memoriei tampon din heap în programele de redare a fonturilor.
- Refuzul serviciului prin epuizarea memoriei în timpul extinderii tabelului de fonturi.
Cele mai bune practici de securitate: Curăță fișierele WOFF descărcate cu OTS înainte de a le transmite motoarelor de fonturi ale sistemului de operare.
Origini istorice și repere
Avantaje cheie și beneficii
- Poate reduce dimensiunea fișierelor de font web față de fișierele TTF sau OTF brute; economia depinde de font și de codificator.
- Este acceptat de multe browsere, inclusiv de versiuni mai vechi; compatibilitatea depinde de versiunea browserului și de platformă.
- Include un bloc opțional de metadate XML pentru licențierea fonturilor, creditele autorilor și informațiile despre drepturile de autor ale producătorului de fonturi.
Limitări tehnice și dezavantaje
- În multe fluxuri de lucru web, WOFF2 l-a înlocuit; acesta folosește compresia Brotli și transformări ale tabelelor de font. Economia de spațiu variază.
- 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 fonturi au fost de acord să permită folosirea fonturilor lor pe web numai după crearea WOFF, deoarece containerul său specializat diferențiază fonturile web de fonturile desktop piratabile.
- 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 compresia zlib, în timp ce WOFF2 folosește compresia Brotli și transformări ale tabelelor de font. Diferența de dimensiune a fișierului depinde de font și de codificator.
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?
Browserele importante actuale acceptă WOFF2. Pentru browsere mai vechi sau anumite medii încorporate, poate fi utilă o versiune de rezervă WOFF.