Formato carattere web aperto (.woff)
Raccomandazione StandardIl Web Open Font Format (WOFF) è il formato di font web aperto di prima generazione storico approvato dal W3C, che avvolge font TrueType o OpenType standard con compressione zlib e metadati di licenza XML.
Ispeziona e metadati
I sistemi operativi e gli analizzatori di file identificano i file WOFF ispezionando la sequenza di byte binari iniziale:
Firma dell'intestazione a livello di byte (Magic Bytes)
I sistemi operativi e gli analizzatori di file identificano i file WOFF ispezionando la sequenza di byte binari iniziale:
FIRMA ESADECIMALE (OFFSET 0):
77 4F 46 46RAPPRESENTAZIONE ASCII: wOFF
Standardizzazione: Raccomandazione W3C (2012)
Specifiche tecniche
| Architettura del container | Intestazione WOFF di 44 byte seguita dalla directory delle tabelle, dati delle tabelle compressi con zlib, metadati estesi opzionali e dati privati |
| Compressione | Compressione Deflate (zlib) applicata a ciascuna tabella di font individuale |
| Endianness dei byte | Big-Endian (standard SFNT) |
| Spazi colore | Ereditati dalle tabelle dei font sottostanti |
| Canali e struttura | Tracciati dei glifi TrueType ('glyf') o PostScript ('CFF '), metriche e funzioni tipografiche |
| Dimensioni massime | Fino a 65.535 glifi per file di font |
| Trasparenza | Ereditata dal formato di font sottostante |
| Streaming e progressivo | La decompressione tabella per tabella consente il caricamento in streaming dei font |
Matrice di confronto tecnico: WOFF vs Concorrenti
| Attributo tecnico | WOFF (Corrente) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Codec di compressione | Deflate (zlib) per tabella | Brotli con preelaborazione delle tabelle | SFNT non compresso | SFNT non compresso |
| Firma magica | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Dimensione relativa del file | ~40% più piccolo di TTF | ~60% più piccolo di TTF | Standard di riferimento (100%) | Standard di riferimento (100%) |
| Ambiente di destinazione | Browser web legacy (IE9+, Safari 5+) | Browser web moderni (Universale) | Sistemi operativi desktop | Desktop publishing e stampa |
Modalità di corruzione comuni e guida al recupero Hex
Avviso della console del browser: 'Failed to decode downloaded font: OTS parsing error'.
Causa principale: Discrepanza nella lunghezza dichiarata della tabella non compressa o flusso zlib danneggiato.
Ripristino: Ricomprimere le tabelle dei font o convertire in WOFF2 utilizzando File2File Font Converter.
Analisi di sicurezza e vettori di attacco del parser
I browser web analizzano i file WOFF scaricati da domini web non attendibili utilizzando l'OpenType Sanitizer (OTS) per bloccare i payload di exploit.
Vettori di attacco noti
- Sovrallettura del buffer durante la decompressione zlib di blocchi di tabelle di font danneggiati.
- Campi di lunghezza della tabella non corrispondenti che attivano overflow del buffer dell'heap nei renderer di font.
- Denial of service tramite esaurimento della memoria durante l'espansione della tabella dei font.
Migliori pratiche difensive: Sanificare sempre i file WOFF scaricati con OTS prima di passarli ai motori di font del sistema operativo.
Origini storiche e tappe fondamentali
Vantaggi principali e pro
- Riduce le dimensioni dei file dei font web del 30% al 50% rispetto ai file TTF o OTF grezzi non compressi.
- Compatibilità universale all'indietro su ogni browser web desktop e mobile rilasciato dal 2011.
- Include un blocco di metadati XML opzionale per la licenza dei font, crediti degli autori e informazioni sul copyright della fonderia.
Limiti tecnici e svantaggi
- Superato da WOFF2, che comprime circa il 30% in meno utilizzando l'algoritmo Brotli.
- Non può essere installato direttamente nei sistemi operativi desktop (Windows/Mac) senza conversione in TTF/OTF.
- Il vecchio algoritmo di compressione zlib è meno efficiente dei moderni codificatori di entropia.
Curiosità tecniche interessanti
- I byte magici per WOFF 1.0 sono 'wOFF' (0x77 0x4F 0x46 0x46), mentre WOFF 2.0 utilizza 'wOF2'.
- Le fonderie di caratteri hanno accettato di consentire i loro font sul web solo dopo la creazione di WOFF, poiché il suo contenitore specializzato distingueva i font web dai font desktop piratabili.
- WOFF è stato originariamente implementato in Firefox 3.6 nel 2010 prima di diventare una raccomandazione ufficiale del W3C.
Domande tecniche frequenti
Qual è la differenza tra WOFF e WOFF2?
WOFF utilizza la compressione zlib, mentre WOFF2 utilizza il più recente algoritmo Brotli di Google e trasformazioni delle tabelle, ottenendo file che sono circa il 30% più piccoli rispetto a WOFF.
Come posso convertire un font WOFF in TTF o OTF per uso desktop?
Puoi convertire i file WOFF in font TTF o OTF desktop installabili in pochi secondi utilizzando File2File.app direttamente nel tuo browser web.
Ho ancora bisogno di WOFF 1.0 sui siti web moderni?
No. Tutti i browser moderni supportano WOFF2 in modo nativo. WOFF 1.0 è necessario solo se devi supportare browser legacy obsoleti come Internet Explorer.