Web Open Font Format (.woff)
W3C СтандартWeb Open Font Format (WOFF) е историческият уеб шрифт формат с отворен стандарт от първо поколение, одобрен от W3C, който обвива стандартни TrueType или OpenType шрифтове с zlib компресия и XML метаданни за лицензиране.
Инспектиране и метаданни
Операционните системи и файловите анализатори идентифицират WOFF файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на хедъра (Magic Bytes)
Операционните системи и файловите анализатори идентифицират WOFF файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
77 4F 46 46ASCII ПРЕДСТАВЯНЕ: wOFF
Стандартизация: W3C Recommendation (2012)
Технически спецификации
| Контейнерна архитектура | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| Компресия | Deflate (zlib) compression applied to each individual font table |
| Поредност на байтовете (Endianness) | Big-Endian (SFNT standard) |
| Цветови пространства | Inherited from underlying font tables |
| Канали и структура | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| Максимални размери | Up to 65,535 glyphs per font file |
| Прозрачност | Inherited from underlying font format |
| Стрийминг и прогресивно зареждане | Table-by-table decompression enables streaming font loading |
Техническа сравнителна матрица: 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) |
| Относителен размер на файла | ~40% по-малък от TTF | ~60% по-малък от TTF | Базов стандарт (100%) | Базов стандарт (100%) |
| Целева среда | Стари уеб браузъри (IE9+, Safari 5+) | Съвременни уеб браузъри (универсални) | Операционни системи за настолни компютри | Настолни публикации и печат |
Често срещани режими на повреда и ръководство за хекс възстановяване
Предупреждение в конзолата на браузъра: 'Failed to decode downloaded font: OTS parsing error'.
Първопричина: Несъответствие в декларираната дължина на некомпресираната таблица или повреден zlib поток.
Възстановяване: Прекомпресирайте таблиците на шрифта или конвертирайте в WOFF2 с помощта на File2File Font Converter.
Анализ на сигурността и вектори на атака към парсера
Уеб браузърите анализират WOFF файлове, изтеглени от ненадеждни уеб домейни, като използват OpenType Sanitizer (OTS), за да блокират експлойт полезни данни.
Известни вектори на атака
- Препълване на буфера при zlib декомпресия на повредени блокове от таблици с шрифтове.
- Несъответстващи полета за дължина на таблицата, задействащи препълване на буфера на купчината в рендериращите шрифтове.
- Отказ от услуга чрез изтощаване на паметта по време на разширяването на таблицата с шрифтове.
Защитни добри практики:
Исторически произход и етапи
Основни предимства и плюсове
- Намалява размера на файловете с уеб шрифтове с 30% до 50% в сравнение с необратените некомпресирани TTF или OTF файлове.
- Универсална обратна съвместимост с всеки десктопен и мобилен уеб браузър, пуснат след 2011 г.
- Включва незадължителен блок с XML метаданни за лицензиране на шрифтове, кредити на автора и информация за авторските права на леярната.
Технически ограничения и минуси
- Заменен от WOFF2, който компресира с около 30% по-малко, използвайки алгоритъма 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 на Google и трансформиране на таблици, което води до файлове, които са приблизително с 30% по-малки от WOFF.
Как мога да конвертирам WOFF шрифт в TTF или OTF за настолна употреба?
Можете да конвертирате WOFF файлове в инсталируеми настолни TTF или OTF шрифтове за секунди, като използвате File2File.app директно във вашия уеб браузър.
Все още ли ми трябва WOFF 1.0 за съвременните уебсайтове?
Не. Всички модерни браузъри поддържат WOFF2 нативно. WOFF 1.0 е необходим само ако трябва да поддържате остарели браузъри като Internet Explorer.