Web Open Font Format (.woff)
W3C StandardowyWeb Open Font Format (WOFF) to historyczny, otwartoźródłowy standard czcionek internetowych pierwszej generacji, zatwierdzony przez W3C, który otacza standardowe czcionki TrueType lub OpenType kompresją zlib oraz metadanymi licencyjnymi XML.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki WOFF, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki WOFF, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
77 4F 46 46REPREZENTACJA ASCII: wOFF
Normalizacja: W3C Recommendation (2012)
Specyfikacja techniczna
| Architektura kontenera | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Kompresja | Deflate (zlib) compression applied to each individual font table |
| Kolejność bajtów (Endianness) | Big-Endian (SFNT standard) |
| Przestrzenie kolorów | Inherited from underlying font tables |
| Kanały i struktura | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Maks. wymiary | Up to 65,535 glyphs per font file |
| Przezroczystość | Inherited from underlying font format |
| Streaming i progresywne ładowanie | Table-by-table decompression enables streaming font loading |
Techniczna macierz porównawcza: WOFF a konkurencja
| Atrybut techniczny | WOFF (Bieżący) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Kodek kompresji | Deflate (zlib) na tabelę | Brotli z wstępnym przetwarzaniem tabel | Nieskompresowany SFNT | Nieskompresowany SFNT |
| Sygnatura magiczna | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Względny rozmiar pliku | ok. 40% mniejszy niż TTF | ok. 60% mniejszy niż TTF | Standard bazowy (100%) | Standard bazowy (100%) |
| Środowisko docelowe | Starsze przeglądarki internetowe (IE9+, Safari 5+) | Nowoczesne przeglądarki internetowe (uniwersalne) | Stacjonarne systemy operacyjne | Publikacje komputerowe i druk |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Ostrzeżenie konsoli przeglądarki: 'Failed to decode downloaded font: OTS parsing error'.
Główna przyczyna: Niezgodność z zadeklarowaną nieskompresowaną długością tabeli lub uszkodzony strumień zlib.
Odzyskiwanie: Ponownie skompresuj tablice czcionek lub przekonwertuj do formatu WOFF2 za pomocą narzędzia File2File Font Converter.
Analiza bezpieczeństwa i wektory ataku na parser
Przeglądarki internetowe analizują pliki WOFF pobrane z niezaufanych domen przy użyciu modułu OpenType Sanitizer (OTS), aby zablokować złośliwe ładunki.
Znane wektory ataku
- Nadmierny odczyt bufora podczas dekompresji zlib uszkodzonych fragmentów tabeli czcionek.
- Niezgodne pola długości tabel wywołujące przepełnienia bufora stosu w renderach czcionek.
- Atak typu odmowa usługi (DoS) poprzez wyczerpanie pamięci podczas rozszerzania tabeli czcionek.
Najlepsze praktyki obronne:
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Zmniejsza rozmiar plików czcionek internetowych o 30% do 50% w porównaniu do nieskompresowanych plików TTF lub OTF.
- Uniwersalna wsteczna kompatybilność we wszystkich przeglądarkach internetowych na komputery i urządzenia mobilne wydanych od 2011 roku.
- Zawiera opcjonalny blok metadanych XML zawierający informacje o licencji czcionki, autorze oraz prawach autorskich odlewni.
Ograniczenia techniczne i wady
- Wypparty przez WOFF2, który kompresuje pliki o około 30% wydajniej przy użyciu algorytmu Brotli.
- Nie można go zainstalować bezpośrednio w systemach operacyjnych komputerów stacjonarnych (Windows/Mac) bez wcześniejszej konwersji do formatu TTF/OTF.
- Starszy algorytm kompresji zlib jest mniej wydajny niż nowoczesne kodery entropijne.
Ciekawe informacje techniczne
- Bajtami magicznymi dla WOFF 1.0 są 'wOFF' (0x77 0x4F 0x46 0x46), podczas gdy WOFF 2.0 używa 'wOF2'.
- Odlewnie czcionek zgodziły się na udostępnienie swoich czcionek w internecie dopiero po utworzeniu formatu WOFF, ponieważ jego wyspecjalizowany kontener odróżniał czcionki internetowe od czcionek komputerowych podatnych na piractwo.
- Format WOFF został pierwotnie zaimplementowany w przeglądarce Firefox 3.6 w 2010 roku, zanim stał się oficjalnym zaleceniem W3C.
Często zadawane pytania techniczne
Jaka jest różnica między WOFF a WOFF2?
WOFF używa kompresji zlib, podczas gdy WOFF2 używa nowszego algorytmu Brotli firmy Google oraz transformacji tabel, co skutkuje plikami mniejszymi o około 30% w porównaniu do WOFF.
Jak mogę przekonwertować czcionkę WOFF na TTF lub OTF do użytku na komputerze?
Możesz przekonwertować pliki WOFF na instalowalne czcionki desktopowe TTF lub OTF w kilka sekund za pomocą File2File.app bezpośrednio w przeglądarce internetowej.
Czy nadal potrzebuję WOFF 1.0 na nowoczesnych stronach internetowych?
Nie. Wszystkie nowoczesne przeglądarki obsługują WOFF2 natywnie. WOFF 1.0 jest potrzebny tylko wtedy, gdy musisz obsługiwać przestarzałe, legacy przeglądarki, takie jak Internet Explorer.