Wuff
A lightweight, pure-Rust decoder for WOFF and WOFF2 web fonts.
Wuff takes a compressed WOFF or WOFF2 file and decodes it back into a plain OpenType/TrueType (sfnt) font that can be parsed by standard font tooling.
It is hand-ported from Google's woff2 C++ library and has been verified to produce byte-identical output to Google's woff2 library for every font in the google/fonts repository.
Why Wuff?
- Pure Rust — no C/C++ toolchain or bindings required.
- Support both WOFF and WOFF2 formats
- Lightweight — minimal dependencies, with the compression backends behind optional features.
- Bring your own decompressor — use the bundled backends, or plug in your own Brotli/zlib implementation.
Encoding
Wuff currently only includes the decoder and does not yet have a port of the encoder. For encoding, consider:
- https://github.com/bearcove/woofwoof (Rust bindings to the C++ woff2 library)
- https://github.com/0x6b/ttf2woff2 (AI-assisted port of the C++ woff2 encoder to Rust)
Usage
Decode a WOFF2 file into an OpenType/TrueType font:
let woff2_bytes = read?;
let otf_bytes = decompress_woff2?;
Decode a WOFF (version 1) file:
let woff_bytes = read?;
let otf_bytes = decompress_woff1?;
Custom decompressors
If you'd rather not pull in the bundled compression crates (for example to share a Brotli implementation you already depend on), disable the default features and supply your own decompression closure:
use decompress_woff2_with_custom_brotli;
let otf_bytes = decompress_woff2_with_custom_brotli?;
A matching decompress_woff1_with_custom_z is available for WOFF1.
Feature flags
brotli(default) — bundle a Brotli backend for WOFF2 decoding (decompress_woff2).z(default) — bundle a zlib backend for WOFF1 decoding (decompress_woff1).
Disable default features to bring your own decompressors via the
decompress_woff2_with_custom_brotli / decompress_woff1_with_custom_z entry points.
About this repository
This crate lives in the wuff workspace
alongside a C-API wrapper (wuff-capi), a conformance test harness, and a copy
of the reference C++ woff2 library. See the
repository README for details.
License
Licensed under the MIT License.