Web Open Font Format (.woff)
W3C СтандартWeb Open Font Format (WOFF) е историческият формат за уеб шрифтове с отворен стандарт от първо поколение, одобрен от W3C, който обвива стандартни TrueType или OpenType шрифтове с zlib компресия и XML метаданни за лицензиране.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират WOFF файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират WOFF файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
77 4F 46 46ASCII ПРЕДСТАВЯНЕ: wOFF
Стандартизация: W3C Recommendation (2012)
Технически спецификации
| Контейнерна архитектура | Заглавие WOFF от 44 байта, последвано от каталог на таблиците, компресирани с zlib данни за таблиците, незадължителни разширени метаданни и частни данни |
| Компресия | Компресия Deflate (zlib) за всяка таблица на шрифта поотделно |
| Поредност на байтовете (Endianness) | Ред от старшия към младшия байт (Big-Endian, стандартът SFNT). |
| Цветови пространства | Наследяват се от таблиците на основния шрифт |
| Канали и структура | Очертания на глифове TrueType ('glyf') или PostScript ('CFF '), метрики и типографски функции |
| Максимални размери | До 65 535 глифа във файл с шрифт |
| Прозрачност | Наследява се от основния формат на шрифта |
| Поточно предаване и прогресивно зареждане | Декомпресия таблица по таблица за поточно зареждане на шрифтове |
Техническа сравнителна матрица: WOFF спрямо конкуренти
| Технически атрибут | WOFF (Текущ) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Кодек за компресия | Deflate (zlib) по таблица | Brotli с предварителна обработка на таблицата | Некомпресиран SFNT | Некомпресиран SFNT |
| Магически подпис | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Относителен размер на файла | Често по-малък от TTF; спестеният обем зависи от шрифта | Често по-малък от TTF; спестеният обем зависи от шрифта | Базов стандарт (100%) | Базов стандарт (100%) |
| Целева среда | Стари уеб браузъри (IE9+, Safari 5+) | Поддръжката варира според браузъра. | Операционни системи за настолни компютри | Настолно книгоиздаване и печат |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Предупреждение в конзолата на браузъра: „Неуспешно декодиране на изтегления шрифт: грешка при обработката от OTS“.
Първопричина: Несъответствие в декларираната дължина на некомпресираната таблица или повреден zlib поток.
Възстановяване: Компресирайте отново таблиците на шрифта или преобразувайте в WOFF2 с помощта на File2File.app Font Converter.
Анализ на сигурността и вектори на атака към парсера
Уеб браузърите анализират WOFF файлове, изтеглени от ненадеждни уеб домейни, като използват OpenType Sanitizer (OTS), за да блокират злонамерен код.
Известни вектори на атака
- Четене извън границите на буфера при zlib декомпресия на повредени блокове от таблици с шрифтове.
- Несъответстващи полета за дължина на таблицата, задействащи препълване на буфера в купчината в двигателите за визуализиране на шрифтове.
- Отказ от услуга чрез изтощаване на паметта по време на разширяването на таблицата с шрифтове.
Най-добри практики за защита: Винаги санирайте изтеглените WOFF файлове с OTS, преди да ги предадете на двигателите за шрифтове на операционната система.
Исторически произход и етапи
Основни предимства
- Намалява размера на файловете с уеб шрифтове с 30% до 50% в сравнение с необработените некомпресирани TTF или OTF файлове.
- WOFF се поддържа от много браузъри, включително по-стари версии; съвместимостта зависи от версията на браузъра и платформата.
- Включва незадължителен блок с XML метаданни за лицензиране на шрифтове, данни за автора и информация за авторските права на шрифтовата леярна.
Технически ограничения и минуси
- В много уеб работни процеси WOFF е изместен от WOFF2, който използва компресия Brotli и трансформации на таблиците на шрифта; спестеният обем зависи от шрифта.
- Не може да се инсталира директно в настолни операционни системи (Windows/Mac) без конвертиране в TTF/OTF.
- По-старият zlib алгоритъм за компресиране е по-малко ефективен от съвременните ентропийни кодери.
Интересни технически факти
- Магическите байтове за WOFF 1.0 са 'wOFF' (0x77 0x4F 0x46 0x46), докато WOFF 2.0 използва 'wOF2'.
- Шрифтовите леярни се съгласиха да разрешат шрифтовете си в мрежата само след създаването на WOFF, тъй като неговият специализиран контейнер разграничава уеб шрифтовете от десктоп шрифтовете, които могат да бъдат пиратствани.
- WOFF първоначално е внедрен във Firefox 3.6 през 2010 г., преди да стане официална препоръка на W3C.
Често задавани технически въпроси
Каква е разликата между WOFF и WOFF2?
WOFF използва компресия zlib, а WOFF2 - Brotli и трансформации на таблиците на шрифта. Разликата в размера на файловете зависи от шрифта и кодиращия инструмент.
Как мога да конвертирам WOFF шрифт в TTF или OTF за настолна употреба?
Можете да конвертирате WOFF файлове в инсталируеми настолни TTF или OTF шрифтове за секунди, като използвате File2File.app директно във вашия уеб браузър.
Все още ли ми трябва WOFF 1.0 за съвременните уебсайтове?
Основните съвременни браузъри поддържат WOFF2. Резервен WOFF може да е полезен за по-стари браузъри или някои вградени среди.