Web Open Font Format (.woff)
W3C StandardWeb Open Font Format (WOFF) to historyczny, otwarty standard czcionek internetowych pierwszej generacji, zatwierdzony przez W3C. Umieszcza standardowe czcionki TrueType lub OpenType w kontenerze, który stosuje kompresję zlib i przechowuje metadane licencyjne 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-bajtowy nagłówek WOFF, katalog tabel, dane tabel skompresowane zlib, opcjonalne rozszerzone metadane i dane prywatne |
| Kompresja | Kompresja Deflate (zlib) stosowana do każdej tabeli czcionki osobno |
| Kolejność bajtów (Endianness) | Big-Endian (standard SFNT) |
| Przestrzenie kolorów | Dziedziczone z bazowych tabel czcionki |
| Kanały i struktura | Kontury glifów TrueType (tabela 'glyf') lub PostScript (CFF), metryki i funkcje typograficzne |
| Maks. wymiary | Do 65 535 glifów w jednym pliku czcionki |
| Przezroczystość | Dziedziczona z bazowego formatu czcionki |
| Streaming i progresywne ładowanie | Dekompresja kolejnych tabel umożliwia strumieniowe wczytywanie czcionki |
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+) | Obsługa zależy od przeglądarki. | Stacjonarne systemy operacyjne | Skład komputerowy 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.app 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 sterty w mechanizmach renderowania czcionek.
- Atak typu odmowa usługi (DoS) poprzez wyczerpanie pamięci podczas rozszerzania tabeli czcionek.
Najlepsze praktyki obronne: Zawsze oczyszczaj pobrane pliki WOFF za pomocą OTS przed przekazaniem ich do systemowych mechanizmów obsługi czcionek.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Zmniejsza rozmiar czcionek internetowych o 30 - 50% w porównaniu z surowymi, nieskompresowanymi plikami 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
- Został zastąpiony przez WOFF2, który dzięki algorytmowi Brotli zmniejsza rozmiar plików o około 30%.
- 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
- Sygnatura bajtowa WOFF 1.0 to „wOFF” (0x77 0x4F 0x46 0x46), a WOFF 2.0 używa „wOF2”.
- Odlewnie czcionek zgodziły się udostępniać swoje czcionki w internecie dopiero po utworzeniu formatu WOFF, którego specjalny kontener odróżniał czcionki internetowe od desktopowych, które można było piracić.
- 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, a WOFF2 - nowszego algorytmu Brotli firmy Google i transformacji tabel. Dzięki temu pliki WOFF2 są o około 30% mniejsze niż WOFF.
Jak mogę przekonwertować czcionkę WOFF na TTF lub OTF do użytku na komputerze?
Możesz w kilka sekund przekonwertować pliki WOFF na czcionki TTF lub OTF do zainstalowania na komputerze za pomocą File2File.app bezpośrednio w przeglądarce.
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 przeglądarki, takie jak Internet Explorer.