WOFF File Format 2.0:
Implementation Report

Editor:
Chris Lilley
Last modified:
2024-07-30

Introduction

This report summarizes the implementation status of WOFF File Format 2.0 W3C Recommendation, 10 March 2022 in browsers, woff2 encoders, and woff2 decoders.

Only the status of the two Proposed Corrections are described; the WOFF 2.0 Implementation Report of 11 Dec 2017 is a snapshot of the existing woff2 features.

The input data and tools to build the woff2 test suite are on GitHub.

1. Simple glyph flags

Proposed Correction 1 avoids data loss of an optional flag bit which indicates the presence of overlapping glyph contours. This correction affects woff2 encoders and decoders; it cannot be tested directly in User Agents as there is no effect on rendering.

Implemented in FontTools, a library to manipulate font files from Python. [added Nov 11, 2022].

Implemented in Google woff2, a C++ woff2 encoder and decoder. [added Mar 30, 2022].

Overlap Flag

[tests added Jun 24, 2022]

FontTools Google woff2
tabledata-transform-glyf-006
tabledata-transform-glyf-007

Round Trip

[tests added Jun 24, 2022]

FontTools Google woff2
roundtrip-glyf-overlaps-001
roundtrip-glyf-overlaps-002

2. Polarity of on-curve bit

The specification was unclear whether a bit flag, used to indicate whether a point was on the curve or off the curve, was indicated by the bit being set or unset. This Proposed Correction explicitly states that a value of 0 corresponds to on-curve.

In practice, implementations were already assuming that 0 means on-curve, the same as described in MicroType® Express (MTX) Font Format submission.

On-curve bit

There are no tests, as implementations were already conforming; the specification was corrected to document this.