Web Open Font Format (.woff)
W3C StandaardWeb Open Font Format (WOFF) is het historische open weblettertypeformaat van de eerste generatie dat door het W3C wordt ondersteund. Het verpakt standaardlettertypen in TrueType- of OpenType-formaat met zlib-compressie en XML-licentiemetadata.
Inspecteren en metadata
Besturingssystemen en bestandsanalysators herkennen WOFF-bestanden aan de hand van de eerste binaire bytesequentie:
Bestandshandtekening op byteniveau (magic bytes)
Besturingssystemen en bestandsanalysators herkennen WOFF-bestanden aan de hand van de eerste binaire bytesequentie:
HEX-HANDTEKENING (OFFSET 0):
77 4F 46 46ASCII-WEERGAVE: wOFF
Standaardisatie: W3C Recommendation (2012)
Technische specificaties
| Containerarchitectuur | WOFF-header van 44 bytes, gevolgd door een tabelmap, zlib-gecomprimeerde tabelgegevens, optionele uitgebreide metadata en privégegevens |
| Compressie | Deflate-compressie (zlib) toegepast op elke afzonderlijke lettertypetabel |
| Bytevolgorde (endianness) | Big-Endian (SFNT-standaard) |
| Kleurruimten | Overgenomen van onderliggende lettertypetabellen |
| Kanalen en structuur | Glyphomtrekken van TrueType ('glyf') of PostScript ('CFF '), metrische gegevens en typografische functies |
| Maximale afmetingen | Maximaal 65.535 glyphs per lettertypebestand |
| Transparantie | Overgenomen van het onderliggende lettertypeformaat |
| Streaming en progressief | Door tabellen één voor één te decomprimeren, kan het lettertype gestreamd worden geladen. |
Technische vergelijkingsmatrix: WOFF versus concurrenten
| Technisch kenmerk | WOFF (Huidig) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Compressiecodec | Deflate (zlib) per tabel | Brotli met tabelvoorverwerking | Niet-gecomprimeerde SFNT | Niet-gecomprimeerde SFNT |
| Bestandshandtekening (magic bytes) | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Relatieve bestandsgrootte | Vaak kleiner dan TTF; besparingen variëren per lettertype | Vaak kleiner dan TTF; besparingen variëren per lettertype | Referentiestandaard (100%) | Referentiestandaard (100%) |
| Doelomgeving | Verouderde webbrowsers (IE9+, Safari 5+) | Ondersteuning verschilt per browser. | Desktopbesturingssystemen | Dtp en drukwerk |
Veelvoorkomende beschadigingen en gids voor hex-herstel
Waarschuwing in de browserconsole: 'Failed to decode downloaded font: OTS parsing error'.
Oorzaak: Afwijkende opgegeven lengte van de ongecomprimeerde tabel of beschadigde zlib-stroom.
Herstel: Comprimeer lettertypetabellen opnieuw of converteer naar WOFF2 met de File2File.app Font Converter.
Beveiligingsanalyse en aanvalsvectoren voor parsers
Webbrowsers ontleden WOFF-bestanden die van niet-vertrouwde webdomeinen zijn gedownload met behulp van de OpenType Sanitizer (OTS) om exploitpayloads te blokkeren.
Bekende aanvalsvectoren
- Bufferoverread tijdens zlib-decompressie van beschadigde stukken lettertypetabel.
- Niet-overeenkomende tabellengtevelden die heapbufferoverflows veroorzaken in lettertyperenderers.
- Denial of service door geheugenuitputting tijdens uitbreiding van lettertypetabellen.
Aanbevolen beveiligingspraktijken: Saneer gedownloade WOFF-bestanden altijd met OTS voordat u ze doorgeeft aan de lettertypemodules van het besturingssysteem.
Historische oorsprong en mijlpalen
Belangrijkste voordelen
- Kan de grootte van weblettertypebestanden verkleinen ten opzichte van onbewerkte TTF- of OTF-bestanden; de mate waarin hangt af van het lettertype en de encoder.
- WOFF wordt ondersteund door veel browsers, inclusief oudere versies; de compatibiliteit hangt af van de browserversie en het platform.
- Bevat een optioneel XML-metadatablok voor lettertypelicenties, auteursvermeldingen en copyrightinformatie van de lettergieterij.
Technische beperkingen
- In veel webwerkprocessen vervangen door WOFF2, dat Brotli-compressie en transformaties van lettertypetabellen gebruikt; de besparing op de bestandsgrootte varieert.
- Kan niet rechtstreeks worden geïnstalleerd in desktopbesturingssystemen (Windows/Mac) zonder conversie naar TTF/OTF.
- Het oudere zlib-compressiealgoritme is minder efficiënt dan moderne entropie-encoders.
Interessante technische weetjes
- De bestandshandtekening (magic bytes) voor WOFF 1.0 zijn 'wOFF' (0x77 0x4F 0x46 0x46), terwijl WOFF 2.0 'wOF2' gebruikt.
- Lettergieterijen stemden er pas mee in hun lettertypen op het web toe te staan nadat WOFF was gemaakt, omdat de gespecialiseerde container weblettertypen onderscheidde van desktoplettertypen die konden worden gekopieerd.
- WOFF werd oorspronkelijk geïmplementeerd in Firefox 3.6 in 2010, voordat het een officiële W3C-aanbeveling werd.
Veelgestelde technische vragen
Wat is het verschil tussen WOFF en WOFF2?
WOFF gebruikt zlib-compressie, terwijl WOFF2 gebruikmaakt van Brotli-compressie en lettertypetabeltransformaties. Het resulterende verschil in bestandsgrootte hangt af van het lettertype en de encoder.
Hoe kan ik een WOFF-lettertype converteren naar TTF of OTF voor desktopgebruik?
U kunt WOFF-bestanden binnen enkele seconden converteren naar installeerbare desktop-TTF- of OTF-lettertypen met behulp van File2File.app rechtstreeks in uw webbrowser.
Heb ik WOFF 1.0 nog nodig op moderne websites?
De huidige grote browsers ondersteunen WOFF2. Een WOFF-terugvaloptie kan nog steeds nuttig zijn voor oudere browsers of specifieke ingesloten omgevingen.