Файл woff2 чем открыть
Расширение файла WOFF2
Web Open Font Format 2.0 Package Format
Что такое файл WOFF2?
Программы, которые поддерживают WOFF2 расширение файла
Следующий список содержит программы, сгруппированные по 3 операционным системам, которые поддерживают WOFF2 файлы. Файлы с суффиксом WOFF2 могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Программы, обслуживающие файл WOFF2
Как открыть файл WOFF2?
Причин, по которым у вас возникают проблемы с открытием файлов WOFF2 в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением WOFF2, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Получить ttf to woff2 converter
Проблемы с открытием и работой с файлами WOFF2, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами WOFF2 на вашем компьютере. Эта проблема может быть решена путем загрузки и установки # РЕКОМЕНДОВАННОЙ # или другой совместимой программы, такой как Google Chrome, Opera browser, Online font converter. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт ttf to woff2 converter и загрузите установщик.
Шаг 2. Обновите ttf to woff2 converter до последней версии
Если проблемы с открытием файлов WOFF2 по-прежнему возникают даже после установки ttf to woff2 converter, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия ttf to woff2 converter. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Это может быть одной из причин, по которой WOFF2 файлы не совместимы с ttf to woff2 converter. Последняя версия ttf to woff2 converter должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы Web Open Font Format 2.0 Package Format с ttf to woff2 converter
Если проблема не была решена на предыдущем шаге, вам следует связать WOFF2 файлы с последней версией ttf to woff2 converter, установленной на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Изменить приложение по умолчанию в Windows
Изменить приложение по умолчанию в Mac OS
Шаг 4. Проверьте WOFF2 на наличие ошибок
Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл WOFF2, о котором идет речь. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. Убедитесь, что WOFF2 не заражен компьютерным вирусом
Если случится так, что WOFF2 инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Сканируйте файл WOFF2 и ваш компьютер на наличие вредоносных программ или вирусов. WOFF2 файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что файл с расширением WOFF2 завершен и не содержит ошибок
Если вы получили проблемный файл WOFF2 от третьего лица, попросите его предоставить вам еще одну копию. В процессе копирования файла могут возникнуть ошибки, делающие файл неполным или поврежденным. Это может быть источником проблем с файлом. Если файл WOFF2 был загружен из Интернета только частично, попробуйте загрузить его заново.
3. Проверьте, есть ли у вашей учетной записи административные права
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Проверьте, может ли ваша система обрабатывать ttf to woff2 converter
Если система перегружена, она может не справиться с программой, которую вы используете для открытия файлов с расширением WOFF2. В этом случае закройте другие приложения.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Web Open Font Format 2.0 Package Format и обеспечить безопасность вашего устройства и операционной системы. Возможно, файлы WOFF2 работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла WOFF2 мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле WOFF2.
Расширение файла WOFF
Web Open Font Format
Что такое файл WOFF?
Популярность файлов WOFF
Дизайн формата WOFF
Формат WOFF был разработан с двумя целями. Первая цель состояла в том, чтобы отличить шрифты для веб-сайтов от тех, которые используются локально установленными приложениями, которые используют шрифты, установленные на локальном диске. Вторая цель состояла в том, чтобы уменьшить задержку веб-шрифтов при передаче шрифтов с сервера клиенту.
Дополнительная информация
Программы, которые поддерживают WOFF расширение файла
В следующем списке перечислены программы, совместимые с файлами WOFF, которые разделены на категории 3 в зависимости от операционной системы, в которой они доступны. WOFF файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.
Программы, обслуживающие файл WOFF
Как открыть файл WOFF?
Проблемы с доступом к WOFF могут быть вызваны разными причинами. К счастью, наиболее распространенные проблемы с файлами WOFF могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Мы подготовили список, который поможет вам решить ваши проблемы с файлами WOFF.
Шаг 1. Получить Microsoft Internet Explorer
Основная и наиболее частая причина, препятствующая открытию пользователями файлов WOFF, заключается в том, что в системе пользователя не установлена программа, которая может обрабатывать файлы WOFF. Этот легкий. Выберите Microsoft Internet Explorer или одну из рекомендованных программ (например, Opera, Mozilla Firefox, Google Chrome) и загрузите ее из соответствующего источника и установите в своей системе. Выше вы найдете полный список программ, которые поддерживают WOFF файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Microsoft Internet Explorer и загрузите установщик.
Шаг 2. Убедитесь, что у вас установлена последняя версия Microsoft Internet Explorer
Если проблемы с открытием файлов WOFF по-прежнему возникают даже после установки Microsoft Internet Explorer, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия Microsoft Internet Explorer. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Если у вас установлена более старая версия Microsoft Internet Explorer, она может не поддерживать формат WOFF. Последняя версия Microsoft Internet Explorer должна поддерживать все форматы файлов, которые совместимы со старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы Web Open Font Format с Microsoft Internet Explorer
После установки Microsoft Internet Explorer (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия WOFF файлов. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Процедура изменения программы по умолчанию в Windows
Процедура изменения программы по умолчанию в Mac OS
Шаг 4. Убедитесь, что файл WOFF заполнен и не содержит ошибок
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл WOFF действительным. Вероятно, файл поврежден и, следовательно, недоступен.
1. Убедитесь, что WOFF не заражен компьютерным вирусом
Если случится так, что WOFF инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Немедленно просканируйте файл с помощью антивирусного инструмента или просмотрите всю систему, чтобы убедиться, что вся система безопасна. Если файл WOFF действительно заражен, следуйте инструкциям ниже.
2. Убедитесь, что структура файла WOFF не повреждена
Если вы получили проблемный файл WOFF от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением WOFF был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Убедитесь, что у вас есть соответствующие права доступа
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл Web Open Font Format.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия Microsoft Internet Explorer
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы WOFF. Закройте все работающие программы и попробуйте открыть файл WOFF.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Web Open Font Format. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов WOFF.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла WOFF мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле WOFF.
Расширение файла WOFF2
Оглавление
Мы надеемся, что вы найдете на этой странице полезный и ценный ресурс!
1 расширений и 0 псевдонимы, найденных в базе данных
✅ Web Open Font Format 2.0 Font
Другие типы файлов могут также использовать расширение файла .woff2.
По данным Поиск на нашем сайте эти опечатки были наиболее распространенными в прошлом году:
Это возможно, что расширение имени файла указано неправильно?
Мы нашли следующие аналогичные расширений файлов в нашей базе данных:
Если дважды щелкнуть файл, чтобы открыть его, Windows проверяет расширение имени файла. Если Windows распознает расширение имени файла, файл открывается в программе, которая связана с этим расширением имени файла. Когда Windows не распознает расширение имени файла, появляется следующее сообщение:
Windows не удается открыть этот файл:
Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать для его открытия.
Если вы не знаете как настроить сопоставления файлов .woff2, проверьте FAQ.
🔴 Можно ли изменить расширение файлов?
Изменение имени файла расширение файла не является хорошей идеей. Когда вы меняете расширение файла, вы изменить способ программы на вашем компьютере чтения файла. Проблема заключается в том, что изменение расширения файла не изменяет формат файла.
Если у вас есть полезная информация о расширение файла .woff2, напишите нам!
Конвертировать WOFF2 онлайн
Введение в формат:
Web Open Font Format (WOFF) — расширение формата шрифта OpenType или TrueType со сжатием и полностью совпадающим с оригиналом, что позволяет оставить неизменным механизм отрисовки. Также формат включает дополнительные метаданные, в которые производитель шрифта может включить информацию об использовании шрифта. Эта информация не влияет на то как этот шрифт будет загружен, но позволяет определить происхождение этого шрифта, так заинтересовавшийся шрифтом использованным на веб-странице может проследить какой шрифт использован. Шрифты в WOFF сжаты, но не зашифрованы, этот формат не создавался как защищённый формат для желающих жёстко контролировать использование шрифта.
Расширение | .woff2 |
MIME-тип | font/woff2 |
Разработчик | W3C |
Тип формата | Компьютерный шрифт |
Связанное программное обеспечение | Firefox, Google Chrome, Internet Explorer, Microsoft Edge, Opera, Safari |
Пример файла | sample.woff2 |
Википедия | WOFF2 в Википедия |
В списке перечислены, какие форматы могут быть конверсированы из WOFF2 и какие форматы могут быть конверсированы в WOFF2.
Нажмите на ссылку ниже, чтобы начать конкретное преобразование.
WOFF File Format 2.0
W3C Recommendation 06 July 2021
Please check the errata for any errors or issues reported since publication.
Abstract
Based on experience with WOFF 1.0, which is widely deployed, this specification was developed to provide improved compression and thus lower use of network bandwidth, while still allowing fast decompression even on mobile devices. This is achieved by combining a content-aware preprocessing step and improved entropy coding, compared to the Flate compression used in WOFF 1.0.
Status of This Document
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.
This document was published by the Web Fonts Working Group as a Recommendation. It includes candidate corrections.
A W3C Recommendation is a specification that, after extensive consensus-building, has received the endorsement of the W3C and its Members. W3C recommends the wide deployment of this specification as a standard for the Web.
The WOFF 2.0 specification is implemented in all major browsers, and is widely used on production websites. It supports the entirety of the TrueType and OpenType specifications, including Variable fonts, Chromatic fonts, and font Collections.
A complete list of changes to this document since the last publication is available.
Supporting material, including results of compression measurements, may be found in the companion WOFF 2.0 Evaluation Report. The Working Group has created tests for WOFF2 encoders, decoders, browsers, and for the format itself (a WOFF2 validator). The source to build these tests is available on GitHub.
An Implementation Report is available. Note that, for OpenType Collections (previously, TrueType Collections) while there are two tested implementations of encoding and of decoding, no user agent is yet shown to use them after decoding. Browser support for font collections is expected to improve, and once it does WOFF 2.0 already has the needed support.
Please send comments about this document as GitHub issues.
This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
For the Brotli compression scheme used in WOFF 2.0, Google has made an RF licensing commitment for use in this specification.
1. Introduction
This document specifies the WOFF2 font packaging format. This format was designed to provide a reasonably easy-to-implement compression of font data with significantly better compression than previous techniques, suitable for use with CSS @font-face rules. The improvement in compression rates, compared to previously developed WOFF 1.0 format [ WOFF1 ] are realized due to improved entropy coding and font data preprocessing and optimization step that reduces built-in redundancy of various font data structures. The details about WOFF 2.0 development history can be found in the WOFF 2.0 Evaluation Report [ WOFF2ER ].
1.1 Notational Conventions
The all-uppercase key words «MUST», «MUST NOT», «REQUIRED», «SHALL», «SHALL NOT», «SHOULD», «SHOULD NOT», «RECOMMENDED», «MAY», and «OPTIONAL» in this document are to be interpreted as described in RFC 2119 [ RFC2119 ]. If these words occur in lower- or mixed case, they should be interpreted in accordance with their normal English meaning.
This document includes sections of text that are called out as «Notes» and set off from the main text of the specification. These notes are intended as informative explanations or clarifications, to serve as hints or guides to implementers and users, but are not part of the normative text.
This document also uses hexadecimal numerical notation «0x. » to define the constant binary values such as magic number or tag values, bitfields / flags format and mask values used in pseudo-code bitwise operators.
2. General Requirements
The input font file may contain a number of various font data tables described in the clause 5 of the [ OFF ] specification. The order of the tables in a font file may differ and, while the entries in the table directory have to be sorted in ascending order by tags, the actual tables can be presented in a font file in arbitrary order.
When WOFF2 file is decompressed, the decoder must sort the entries in the table directory in ascending alphabetical order by table tags and should arrange the table order in a font file according to the Recommendations (subclause 8.1 «Optimized table ordering») of the [ OFF ].
3. Overall file structure and basic data types
The structure of WOFF2 files is similar to that of SFNT and WOFF 1.0 font files, in that there is a header followed by a table directory, followed by the data for those tables. The SFNT structure is described fully in the TrueType [ TrueType ], OpenType [ OpenType ], and ISO «Open Font Format» [ OFF ] specifications. However, WOFF2 differs in some important aspects from SFNT. Most notably, the data for the font tables is compressed in a single data stream comprising all the font tables. Similar to WOFF 1.0 format, the optional extended metadata and private data blocks are each presented as separate blocks of data, and are concatenated together into the WOFF 2.0 file. The compression algorithm used for both the compressed font data stream and extended metadata block is Brotli [ Brotli ].
WOFF2 File | |
---|---|
WOFF2Header | File header with basic font type and version, along with offsets to metadata and private data blocks. |
TableDirectory | Directory of font tables, containing size and other info. |
CollectionDirectory | An optional table containing the font fragment descriptions of font collection entries. |
CompressedFontData | Contents of font tables, compressed for storage in the WOFF2 file. |
ExtendedMetadata | An optional block of extended metadata, represented in XML format and compressed for storage in the WOFF2 file. |
PrivateData | An optional block of private data for the font designer, foundry, or vendor to use. |
3.1. Data types
Data Types | |
---|---|
UInt8 | 8-bit unsigned integer. |
Int16 | 16-bit signed integer in 2’s complement format, stored big-endian. |
UInt16 | 16-bit unsigned integer, stored big-endian. |
255UInt16 | Variable-length encoding of a 16-bit unsigned integer for optimized intermediate font data storage. |
UIntBase128 | Variable-length encoding of 32-bit unsigned integers. |
255UInt16 Data Type
255UInt16 is a variable-length encoding of an unsigned integer in the range 0 to 65535 inclusive. This data type is intended to be used as intermediate representation of various font values, which are typically expressed as UInt16 but represent relatively small values. Depending on the encoded value, the length of the data field may be one to three bytes, where the value of the first byte either represents the small value itself or is treated as a code that defines the format of the additional byte(s). The «C-like» pseudo-code describing how to read the 255UInt16 format is presented below:
UIntBase128 Data Type
3.2. WOFF2 Header
The WOFF 2.0 header includes an identifying signature and provides the information about the compressed and uncompressed sizes of encapsulated font data. It also indicates the specific kind of font data included in the WOFF 2.0 file, font version number and provides offsets to additional data blocks included in the file.
WOFF2 Header | ||
---|---|---|
UInt32 | signature | 0x774F4632 ‘wOF2’ |
UInt32 | flavor | The «sfnt version» of the input font. |
UInt32 | length | Total size of the WOFF file. |
UInt16 | numTables | Number of entries in directory of font tables. |
UInt16 | reserved | Reserved; set to 0. |
UInt32 | totalSfntSize | Total size needed for the uncompressed font data, including the sfnt header, directory, and font tables (including padding). |
UInt32 | totalCompressedSize | Total length of the compressed data block. |
UInt16 | majorVersion | Major version of the WOFF file. |
UInt16 | minorVersion | Minor version of the WOFF file. |
UInt32 | metaOffset | Offset to metadata block, from beginning of WOFF file. |
UInt32 | metaLength | Length of compressed metadata block. |
UInt32 | metaOrigLength | Uncompressed size of metadata block. |
UInt32 | privOffset | Offset to private data block, from beginning of WOFF file. |
UInt32 | privLength | Length of private data block. |
The «totalSfntSize» value in the WOFF2 Header is intended to be used for reference purposes only. It may represent the size of the uncompressed input font file, but if the transformed ‘glyf’ and ‘loca’ tables are present, the uncompressed size of the reconstructed tables and the total decompressed font size may differ substantially from the original total size specified in the WOFF2 Header.
4. Font directory
The font directory section consists of the table directory, containing a single entry for each unique font table in the input font file, and may also include an optional collection directory table, when the input font file is a font collection.
4.1. Table directory format
The table directory is an array of WOFF2 table directory entries, as defined below. The directory follows immediately after the WOFF2 file header; therefore, there is no explicit offset in the header pointing to this block. Its size is dependent on the exact content; thus, the best strategy for decoding is to process the file as a stream, rather than trying to access it randomly. Each table directory entry specifies the original size of a single font data table and, for those tables where an additional transform has been applied, the size of the transformed table. Transformed tables are identified by their ‘flags’ field that combines known table tags (bits 0-5, see «Known Table Tags») and transformation version number (bits 6 and 7, see the description below) defining the applied transform. The combination of the table tag and the transform version number defines the exact transform that was applied to a table, currently defined transforms are specified in details in clause 5 of this specification.
Contrary to the way how table directory entries are specified in the original input font file (where table directory entries are sorted in ascending alphabetical order), the WOFF2 table directory entries define the physical order of tables in which they have been processed and encoded as part of the compressed font data stream. It is a decoder responsibility to sort and reorder the reconstructed table directory when the font file is decompressed.
The format of each individual table directory entry is as follows:
TableDirectoryEntry | ||
---|---|---|
UInt8 | flags | table type and flags |
UInt32 | tag | 4-byte tag (optional) |
UIntBase128 | origLength | length of original table |
UIntBase128 | transformLength | transformed length (if applicable) |
The interpretation of the flags field is as follows. Bits [0..5] contain an index to the «known tag» table, which represents tags likely to appear in fonts. If the tag is not present in this table, then the value of this bit field is 63. Bits 6 and 7 indicate the preprocessing transformation version number (0-3) that was applied to each table. For all tables in a font, except for ‘glyf’ and ‘loca’ tables, transformation version 0 indicates the null transform where the original table data is passed directly to the Brotli compressor for inclusion in the compressed data stream. For ‘glyf’ and ‘loca’ tables, transformation version 3 indicates the null transform where the original table data was passed directly to the Brotli compressor without applying any pre-processing defined in subclause 5.1 and subclause 5.3. The transformed table formats and their associated transformation version numbers are described in details in clause 5 of this specification.
If multiple transformation versions are defined for a given table, an encoder should normally choose the transformation version that results in the smallest transformed table length, unless the reduction is so slight as to be insignificant.
Known Table Tags | |||||||
---|---|---|---|---|---|---|---|
Flag | Tag | Flag | Tag | Flag | Tag | Flag | Tag |
0 | cmap | 16 | EBLC | 32 | CBDT | 48 | gvar |
1 | head | 17 | gasp | 33 | CBLC | 49 | hsty |
2 | hhea | 18 | hdmx | 34 | COLR | 50 | just |
3 | hmtx | 19 | kern | 35 | CPAL | 51 | lcar |
4 | maxp | 20 | LTSH | 36 | SVG | 52 | mort |
5 | name | 21 | PCLT | 37 | sbix | 53 | morx |
6 | OS/2 | 22 | VDMX | 38 | acnt | 54 | opbd |
7 | post | 23 | vhea | 39 | avar | 55 | prop |
8 | cvt | 24 | vmtx | 40 | bdat | 56 | trak |
9 | fpgm | 25 | BASE | 41 | bloc | 57 | Zapf |
10 | glyf | 26 | GDEF | 42 | bsln | 58 | Silf |
11 | loca | 27 | GPOS | 43 | cvar | 59 | Glat |
12 | prep | 28 | GSUB | 44 | fdsc | 60 | Gloc |
13 | CFF | 29 | EBSC | 45 | feat | 61 | Feat |
14 | VORG | 30 | JSTF | 46 | fmtx | 62 | Sill |
15 | EBDT | 31 | MATH | 47 | fvar | 63 | arbitrary tag follows |
Please note that according to the SFNT-based font format specifications all table tags should consist of four characters. Table tags with less than four letters, such as ‘ cvt ‘ (tag value 0x63767420) are padded with trailing spaces.
The transformLength field is present in the table directory entry if, and only if, the table has been processed by a non-null transform prior to Brotli compression. For tables that are not transformed, no transformLength field is present in the directory entry.
The field containing the transformed length provides information about the transformed table size prior to it being compressed by [ Brotli ]. This field is optional and is present only for certain tables (see below the description of the «Compressed data format»). Please note that while the transformed length can be relied upon to determined the decompressed table size, the original table length of the transformed font table should be treated with caution.
The reconstruction process of transformed tables guarantees preserving the functionality of the tables but may produce binary results that are different from the original data. For example, ‘glyf’ table records may have outline point coordinates encoded using one- or two-byte format, and the repetitive values can either be explicitly duplicated in the coordinate stream or omitted (which would be indicated by the flags byte of the control point). Therefore, various representations of glyph outline points are possible that would produce identical rendering results; however, the binary data of reconstructed glyph records may differ significantly from the original data. See subclause 5.3.3 of the ISO «Open Font Format» [ OFF ] specification for details.
For this reason, the value of the origLength field of transformed table should be treated only as a reference and should not be relied upon in making memory allocation decisions when the WOFF2 data is decoded.
4.2. Collection directory format
The collection directory is present only if the input font is a collection; i.e. if the value of the WOFF2 file header «flavor» field is set to 0x74746366 (‘ttcf’). If present, the collection directory follows immediately after the table directory. The collection directory consists of a CollectionHeader and one or more CollectionFontEntry records.
If input font is a collection, the table directory contains a single entry for each unique table in the entire collection, regardless of whether a table is shared among different fonts in a collection or not. Thus, the table directory for a font collection compressed with WOFF2 comprises all tables from all fonts contained in the font collection file.
The Collection directory starts with the Collection Header followed by an array of Collection Font Entries.
CollectionHeader | ||
---|---|---|
UInt32 | version | The Version of the TTC Header in the original font. |
255UInt16 | numFonts | The number of fonts in the collection. |
Collection font entries specify each font in the collection (defined by CollectionHeader «numFonts» field). The format of each individual collection font entry is as follows:
CollectionFontEntry | ||
---|---|---|
255UInt16 | numTables | The number of tables in this font |
UInt32 | flavor | The «sfnt version» of the font |
255UInt16 | index[numTables] | The index identifying an entry in the Table Directory for each table in this font (where the index of the first Table Directory entry is zero.) |
5. Compressed data format
The process of decoding the table data in a WOFF2 font file can be specified by decompressing the byte-level compression of the CompressedFontData field, yielding a «table data block», then applying additional decoding steps as described below. An actual implementation is free to combine these steps or perform some of the steps in an incremental or streaming fashion, but the results must be consistent with the sequential process as specified here.
The decompressed and reconstructed table data MUST be stored in the format specified by the [ OFF ] specification. Each reconstructed table directory entry MUST contain a valid ‘checkSum’ value, the decoder MUST recalculate the checkSum value for each decoded table. Also, due to modifying transforms applied to glyf and loca tables, the decoder MUST recalculate the checkSumAdjustment value of the entire font and MUST store the updated value in the head table.
The known table flag values should not be relied upon in determining the presence of transformed tables, it is feasible that e.g. the glyf table can be represented in the table directory with either flag = 10 and no tag, or with flag = 63 and ‘glyf’ tag that follows. The combination of flags value that defines a transform version number and the table tag should be used to determine the applied transform.
CFF table processing and de-subroutinization.
Since the CFF pre-processing / de-subroutinization is considered an external step that can be implemented prior to WOFF2 encoding, it is not covered by this specification. Font producers have an opportunity to optimize their production process to either reduce the compressed font size for fastest webfont data transfer at the expense of increasing the output CFF font size (which will also improve rendering performance) or to keep subroutinized CFF data to minimize input/output font size.
The WOFF 2.0 encoders MUST also set bit 11 of the ‘flags’ field of the head table (see [ OFF ] specification) to indicate that a recreated font file was subjected to lossless modifying transform.
5.1. Transformed glyf table format
The glyf table data can be presented in the WOFF2 file in one of two formats defined by the transformation version number (encoded in the table directory flag bits, see subclause 4.1 for details). The transformation version «3» defines a null transform where the content of the glyf table is presented in its original, unmodified format. The transformation version «0», specified below, is optional and can be applied to eliminate certain redundancies in the glyf table data.
The version «0» of the glyf table transformation (as defined by the table directory flag bits, see subclause 4.1 for details) specified in this subclause is intended to reduce redundant information and provide a more efficient encoding of the actual TrueType outlines of glyphs. The modified transformation is based on a similar transformation described in MicroType Express [ MTX ] specification. The reference to MTX is informative; the details of the modified transformation are stated below and this section is normative.
While glyf table transformation preserves the functionality and fidelity of rendering for every glyph in a font, it will most likely result in producing a new set of glyph records that will not be a binary match to the original font. According to the encoding rules specified in subclause 5.3.3 of [ OFF ], there may be multiple valid reconstructions of a glyph record. It is possible that depending on the context and on the level of optimizations being applied to reconstructed glyf table data, the size of the reconstructed table may be greater than, less than, or equal to the original size of the glyf table of the input font compressed by WOFF2. Neither this specification nor the [ OFF ] standard mandate specific optimizations being applied on the font data; therefore, it is the responsibility of WOFF2 decoder implementations to make sure that an adequate amount of memory is allocated when glyph records are being reconstructed from the WOFF2 file – the original glyf table size supplied as an origLength value for the transformed glyf table can only be used as a reference point.
For greater compression effectiveness, the glyf table is split into several substreams, to group like data together. The transformed table consists of a number of fields specifying the size of each of the substreams, followed by the substreams in sequence. During the decoding process the reverse transformation takes place, where data from various separate substreams are recombined to create a complete glyph record for each entry of the original glyf table.
The bit 6 flag (OVERLAP_SIMPLE) is different, it can only be set once on the first flag of the glyph. If set, it indicates that contours of the glyph _may_ overlap. The OpenType spec doesn’t require this flag be set, and some (but not all) rasterizers would ignore this bit. Bit7 is reserved / unused.
Since flag bit6 is not required and bit 7 is reserved, in the original WOFF2 Recommendation they could simply be omitted when the source data wass encoded, and set to ‘0’ upon reconstruction of glyph data. Apparently, this has caused the loss of data for flag bit 6 in some fonts that have glyphs with overlapping contours where this optional bit 6 is set, and it’s an issue for some rasterizers that still rely on flag bit 6 setting to deal with contour overlaps.
This Candidate Correction solves the problem, firstly, by redefining the previously 32-bit version field in the transformed ‘glyf’ table to 16 bits, and adding a 16-bit new ‘optionFlags’ field in the space vacated. One of these bits has been defined to be used as a flag indicating the presence of the new data stream, which has been used to encode the presence of overlap flag (bit 6) values. Secondly, since the bit 6 flag can only be set once per glyph, a new numGlyphs-long bit array has been defined and appended to the end of the WOFF2 transformed ‘glyf’ table.
Transformed glyf Table | ||
---|---|---|
Data Type | Semantic | Description and value type (if applicable) |
Fixed | version | = 0x00000000 |
UInt16 | numGlyphs | Number of glyphs |
UInt16 | indexFormat | Offset format for loca table, should be consistent with indexToLocFormat of the original head table (see [ OFF ] specification) |
UInt32 | nContourStreamSize | Size of nContour stream in bytes |
UInt32 | nPointsStreamSize | Size of nPoints stream in bytes |
UInt32 | flagStreamSize | Size of flag stream in bytes |
UInt32 | glyphStreamSize | Size of glyph stream in bytes (a stream of variable-length encoded values, see description below) |
UInt32 | compositeStreamSize | Size of composite stream in bytes (a stream of variable-length encoded values, see description below) |
UInt32 | bboxStreamSize | Size of bbox data in bytes representing combined length of bboxBitmap (a packed bit array) and bboxStream (a stream of Int16 values) |
UInt32 | instructionStreamSize | Size of instruction stream (a stream of UInt8 values) |
Int16 | nContourStream[] | Stream of Int16 values representing number of contours for each glyph record |
255UInt16 | nPointsStream[] | Stream of values representing number of outline points for each contour in glyph records |
UInt8 | flagStream[] | Stream of UInt8 values representing flag values for each outline point. |
Vary | glyphStream[] | Stream of bytes representing point coordinate values using variable length encoding format (defined in subclause 5.2) |
Vary | compositeStream[] | Stream of bytes representing component flag values and associated composite glyph data |
UInt8 | bboxBitmap[] | Bitmap (a numGlyphs-long bit array) indicating explicit bounding boxes |
Int16 | bboxStream[] | Stream of Int16 values representing glyph bounding box data |
UInt8 | instructionStream[] | Stream of UInt8 values representing a set of instructions for each corresponding glyph |
The format is best characterized by describing the decoding process, especially indications of what are valid and invalid data. Note also that this format specifies the decoded result at the semantic level, not specific byte streams.
Upon reading the Transformed glyf Table, the decoding process iterates one glyph at a time. For each glyph, it reads zero or more bytes from each of the streams referenced in the Transformed glyf Table. Also, at the point of reconstructing a glyph, a decoder needs to store for each glyph the corresponding offset in the new reconstructed glyph table, and this data will collectively become the contents of the reconstructed loca table (see subclause 5.3 below for more information about the reconstruction of the loca table).
Reconstruction of Glyph Records
The reconstruction process begins by performing the following step to determine the encoded glyph type (simple, composite or empty glyph):
Decoding of Empty Glyphs
Decoding of Simple Glyphs
For a simple glyph (when nContour > 0), the process continues as follows:
Decoding of Composite Glyphs
1a. Read a UInt16 from compositeStream. This is interpreted as a component flag word as in the TrueType spec. Based on the flag values, there are between 4 and 14 additional argument bytes, interpreted as glyph index, arg1, arg2, and optional scale or affine matrix.
2a. Read the number of argument bytes as determined in step 2 a from the composite stream, and store these in the reconstructed glyph. If the flag word read in step 2 a has the FLAG_MORE_COMPONENTS bit (bit 5) set, go back to step 2 a.
3a. If any of the flag words had the FLAG_WE_HAVE_INSTRUCTIONS bit (bit 8) set, then read the instructions from the glyph and store them in the reconstructed glyph, using the same process as described in steps 4 and 5 above.
Finally, for both simple and composite glyphs, if the corresponding bit in the bounding box bit vector is set, then additionally read 4 Int16 values from the bbox stream, representing xMin, yMin, xMax, and yMax, respectively, and record these into the corresponding fields of the reconstructed glyph. For simple glyphs, if the corresponding bit in the bounding box bit vector is not set, then derive the bounding box by computing the minimum and maximum x and y coordinates in the outline, and storing that.
5.2. Decoding of variable-length X and Y coordinates
Simple glyph data structure defines all contours that comprise a glyph outline, which are presented by a sequence of on- and off-curve coordinate points. These point coordinates are encoded as delta values representing the incremental values between the previous and current corresponding X and Y coordinates of a point, the first point of each outline is relative to (0,0) point. To minimize the size of the dataset of point coordinate values, each point is presented as a (flag, xCoordinate, yCoordinate) triplet. The flag value is stored in a separate data stream and the coordinate values are stored as part of the glyph data stream using a variable-length encoding format consuming a total of 2-5 bytes per point.
Each of the 128 index values define the following properties and specified in details in the table below:
Please note that “Byte Count” field reflects total size of the triplet (flag, xCoordinate, yCoordinate), including ‘flag’ value that is encoded in a separate stream.
Triplet Encoding | |||||||
---|---|---|---|---|---|---|---|
Index | Byte Count | X bits | Y bits | Delta X | Delta Y | X sign | Y sign |
0 | 2 | 0 | 8 | N/A | 0 | N/A | — |
1 | 0 | + | |||||
2 | 256 | — | |||||
3 | 256 | + | |||||
4 | 512 | — | |||||
5 | 512 | + | |||||
6 | 768 | — | |||||
7 | 768 | + | |||||
8 | 1024 | — | |||||
9 | 1024 | + | |||||
10 | 2 | 8 | 0 | 0 | N/A | — | N/A |
11 | 0 | + | |||||
12 | 256 | — | |||||
13 | 256 | + | |||||
14 | 512 | — | |||||
15 | 512 | + | |||||
16 | 768 | — | |||||
17 | 768 | + | |||||
18 | 1024 | — | |||||
19 | 1024 | + | |||||
20 | 2 | 4 | 4 | 1 | 1 | — | — |
21 | 1 | + | — | ||||
22 | 1 | — | + | ||||
23 | 1 | + | + | ||||
24 | 17 | — | — | ||||
25 | 17 | + | — | ||||
26 | 17 | — | + | ||||
27 | 17 | + | + | ||||
28 | 33 | — | — | ||||
29 | 33 | + | — | ||||
30 | 33 | — | + | ||||
31 | 33 | + | + | ||||
32 | 49 | — | — | ||||
33 | 49 | + | — | ||||
34 | 49 | — | + | ||||
35 | 49 | + | + | ||||
36 | 2 | 4 | 4 | 17 | 1 | — | — |
37 | 1 | + | — | ||||
38 | 1 | — | + | ||||
39 | 1 | + | + | ||||
40 | 17 | — | — | ||||
41 | 17 | + | — | ||||
42 | 17 | — | + | ||||
43 | 17 | + | + | ||||
44 | 33 | — | — | ||||
45 | 33 | + | — | ||||
46 | 33 | — | + | ||||
47 | 33 | + | + | ||||
48 | 49 | — | — | ||||
49 | 49 | + | — | ||||
50 | 49 | — | + | ||||
51 | 49 | + | + | ||||
52 | 2 | 4 | 4 | 33 | 1 | — | — |
53 | 1 | + | — | ||||
54 | 1 | — | + | ||||
55 | 1 | + | + | ||||
56 | 17 | — | — | ||||
57 | 17 | + | — | ||||
58 | 17 | — | + | ||||
59 | 17 | + | + | ||||
60 | 33 | — | — | ||||
61 | 33 | + | — | ||||
62 | 33 | — | + | ||||
63 | 33 | + | + | ||||
64 | 49 | — | — | ||||
65 | 49 | + | — | ||||
66 | 49 | — | + | ||||
67 | 49 | + | + | ||||
68 | 2 | 4 | 4 | 49 | 1 | — | — |
69 | 1 | + | — | ||||
70 | 1 | — | + | ||||
71 | 1 | + | + | ||||
72 | 17 | — | — | ||||
73 | 17 | + | — | ||||
74 | 17 | — | + | ||||
75 | 17 | + | + | ||||
76 | 33 | — | — | ||||
77 | 33 | + | — | ||||
78 | 33 | — | + | ||||
79 | 33 | + | + | ||||
80 | 49 | — | — | ||||
81 | 49 | + | — | ||||
82 | 49 | — | + | ||||
83 | 49 | + | + | ||||
84 | 3 | 8 | 8 | 1 | 1 | — | — |
85 | 1 | + | — | ||||
86 | 1 | — | + | ||||
87 | 1 | + | + | ||||
88 | 257 | — | — | ||||
89 | 257 | + | — | ||||
90 | 257 | — | + | ||||
91 | 257 | + | + | ||||
92 | 513 | — | — | ||||
93 | 513 | + | — | ||||
94 | 513 | — | + | ||||
95 | 513 | + | + | ||||
96 | 3 | 8 | 8 | 257 | 1 | — | — |
97 | 1 | + | — | ||||
98 | 1 | — | + | ||||
99 | 1 | + | + | ||||
100 | 257 | — | — | ||||
101 | 257 | + | — | ||||
102 | 257 | — | + | ||||
103 | 257 | + | + | ||||
104 | 513 | — | — | ||||
105 | 513 | + | — | ||||
106 | 513 | — | + | ||||
107 | 513 | + | + | ||||
108 | 3 | 8 | 8 | 513 | 1 | — | — |
109 | 1 | + | — | ||||
110 | 1 | — | + | ||||
111 | 1 | + | + | ||||
112 | 257 | — | — | ||||
113 | 257 | + | — | ||||
114 | 257 | — | + | ||||
115 | 257 | + | + | ||||
116 | 513 | — | — | ||||
117 | 513 | + | — | ||||
118 | 513 | — | + | ||||
119 | 513 | + | + | ||||
120 | 4 | 12 | 12 | 0 | 0 | — | — |
121 | + | — | |||||
122 | — | + | |||||
123 | + | + | |||||
124 | 5 | 16 | 16 | 0 | 0 | — | — |
125 | + | — | |||||
126 | — | + | |||||
127 | + | + |
For additional information and background on the triplet encoding please see section 5.11 of the MTX proposal [ MTX ].
5.3. Transformed loca table format
The loca table data can be presented in the WOFF2 file in one of two formats defined by the transformation version number (encoded in the table directory flag bits, see subclause 4.1 for details). The transformation version «3» defines a null transform where the content of the loca table is presented in its original, unmodified format. The transformation version «0», although optional, MUST be applied to the loca table data whenever glyf table data is transformed. In other words, both glyf and loca tables must either be present in their transformed format or with null transform applied to both tables.
The version «0» of the loca table transformation (as defined by the table directory flag bits, see subclause 4.1 for details) is specified below.
5.4. Transformed hmtx table format
The hmtx table data can be presented in the WOFF2 file in one of two formats defined by the transformation version number (encoded in the table directory flag bits, see subclause 4.1 for details). The transformation version «0» defines a null transform where the content of the hmtx table is presented in its original, unmodified format. The transformation version «1», specified below, is optional and can be applied to eliminate certain redundancies in the hmtx table data.
The transformation version «1» exploits the built-in redundancy of the TrueType glyphs where the outlines of the glyphs designed according to the TrueType recommendations would likely have their left side bearing values equal to xMin value of the glyph bounding box. The hmtx table format is specified in subclause 5.2.4 of [ OFF ] and includes two arrays of left side bearing information for proportional and monospaced glyph runs. Each of these arrays can be eliminated from the original input font data and reconstructed from the glyph bounding box information if certain conditions are met.
The transformation version 1 described in this subclause is optional and can only be used when an input font is TrueType-flavoured (i.e. has a glyf table), and when the leftSideBearing values for each glyph in the proportional or monospaced glyph runs encoded in the hmtx table exactly match the corresponding xMin values in the glyf table. A special case needs to be checked when an encoded leftSideBearing value corresponds to an empty glyph, where hmtx table transform can only be applied if leftSideBearing of an empty glyph is set to zero.
5.5. Table order constraints
The following constraints on valid WOFF2 files are intended to facilitate a memory-efficient WOFF 2.0 file transfer and decoding process.
6. Extended Metadata Block
7. Private Data Block
A. Internet Media Type Registration
This appendix registers a new Internet Media type, under the font top level type [ RFC8081 ]. This appendix is in conformance with BCP 13 and W3CRegMedia.
WOFF 2.0 is an improvement on WOFF 1.0. The two formats have different Internet Media Types and may be used in parallel.
This media type registration is extracted from the WOFF 2.0 specification at W3C.
Applications that use this media type:
WOFF 2.0 is used by Web browsers, often in conjunction with HTML and CSS.
Additional information: Magic number(s): The signature field in the WOFF header MUST contain the «magic number» 0x774F4632 (‘wOF2’) File extension(s): woff2 Macintosh file type code(s): (no code specified) Macintosh Universal Type Identifier code: org.w3c.woff2 @font-face Format: woff2 Fragment Identifiers See Section 4.2 of [RFC8081] Person & email address to contact for further information:
Chris Lilley (www-font@w3.org).
Restrictions on usage:
The WOFF2 specification is a work product of the World Wide Web Consortium’s WebFonts Working Group.
The W3C has change control over this specification.
B. Changes
This appendix is informative.
Changes since the Recommendation of 01 March 2018
Changes since the Candidate Recommendation of 15 March 2016
Changes since the Working Draft of 14 April 2015
Changes since the First Public Working Draft of May 8, 2014
C. Considerations for Security and Privacy
This appendix is informative.
The W3C TAG is developing a Self-Review Questionnaire: Security and Privacy for editors of specifications to informatively answer.
No. Credit card information and the like is not stored in WOFF2.
No. Specifically, WOFF2 fonts are only available to the documents that reference them; they do not persist for use by other applications or documents on the user’s system.
No. WOFF2 fonts do not contain, or link to, scripts.
No. WOFF2 fonts are typically generated and stored on a server, and have no access to the user environment when generated. Once decompressed, they contain no active code and cannot inspect the user environment.
The Security section of the font top level type [ RFC8081 ] contains additional security-related information relevant to WOFF2.
WOFF2 uses Brotli compression. The Security Considerations section of the Brotli specification [ Brotli ] should be consulted, in addition to this appendix.