aspose.info
EN

WOFF - Web Open File Format

Updated

What is a WOFF file?

A file with .woff extension is a web font file based on the Web Open Font Format (WOFF). It has format-specific compressed container based on either TrueType (.TTF) or OpenType (.OTT) font types. WOFF was introduced with the aim to differ web fonts from fonts files used in desktop applications. In addition, the format targeted to reduce the latency of fonts transfer from server to client’s computer over the network. Several tools are available that can convert WOFF files to TTF and other font file formats.

WOFF File Format

WOFF font format compresses font data tables of table-based sfnt structures used in different font types such as TrueType, OpenType, and Open Font Format. It is like a container for these font types and also has the room to include font’s metadata and private-use data to be included in the container. Converters use the sfnt files into a WOFF formatted file and user agents restore the encoded file for use with the web document. It is to be noted that the restored font data exactly matches the input font format from all aspects.

WOFF file Utilities often contain additional features such as glyph subsetting, validation or font feature additions but its not necessary. Both the creator and use agents must ensure that the validity of the underlying font data is preserved.

WOFF File Structure

WOFF file structure is similar to that of sfnt fonts. It is based on a table directory that contains the lengths and offsets to each font data tables. All the tables are followed after this initial information. The file contains font database that are the same as in the original fonts. The order of the tables are also the same but each may be compressed. WOFF table directory replaces the original table directory though.

A WOFF file consists of following:

  • WOFFHeader - File header with basic font type and version, along with offsets to metadata and private data blocks.
  • TableDirectory - Directory of font tables, indicating the original size, compressed size and location of each table within the WOFF file.
  • FontTables - The font data tables from the input sfnt font, compressed to reduce bandwidth requirements.
  • ExtendedMetadata - An optional block of extended metadata, represented in XML format and compressed for storage in the WOFF file.
  • PrivateData- An optional block of private data for the font designer, foundry, or vendor to use.

WOFF Header

The WOFF header comprises of an identifying signature which indicates the the kind of data included in the file. The WOFF header along with its fields is as follow.

TypeField NameDescription
UInt32signature0x774F4646 ‘wOFF’
UInt32flavorThe “sfnt version” of the input font.
UInt32lengthTotal size of the WOFF file.
UInt16numTablesNumber of entries in directory of font tables.
UInt16reservedReserved; set to zero.
UInt32totalSfntSizeTotal size needed for the uncompressed font data, including the sfnt header, directory, and font tables (including padding).
UInt16majorVersionMajor version of the WOFF file.
UInt16minorVersionMinor version of the WOFF file.
UInt32metaOffsetOffset to metadata block, from beginning of WOFF file.
UInt32metaLengthLength of compressed metadata block.
UInt32metaOrigLengthUncompressed size of metadata block.
UInt32privOffsetOffset to private data block, from beginning of WOFF file.
UInt32privLengthLength of private data block.

References