A TypeScript library for handling WOFF2 encoding using WebAssembly.
- If using Node,
>= 18.x
npm install woff2-encoder
If you only need to decompress WOFF2 files, it's recommended that you import
from woff2-encoder/decompress
(see the Decompress only
example below). This will net your end users a significant decrease in bundle
size as it uses its own separate WASM file with a much smaller footprint.
Compresses SFNT (TrueType/OpenType) font data to WOFF2 font data.
Returns: Promise<Uint8Array>
A promise resolving to the WOFF2 font data.
Parameter | Type | Description |
---|---|---|
buffer | ArrayBuffer | Uint8Array |
The SFNT font data. |
Decompresses WOFF2 font data back to SFNT (TrueType/OpenType) font data.
Returns: Promise<Uint8Array>
A promise resolving to the SFNT font data.
Parameter | Type | Description |
---|---|---|
buffer | ArrayBuffer | Uint8Array |
The WOFF2 font data. |
import fs from 'node:fs';
import { compress } from 'woff2-encoder';
async function example() {
const fontFile = fs.readFileSync('./my-font.ttf');
const output = await compress(fontFile);
}
import { decompress } from 'woff2-encoder';
async function example() {
const fontBuffer = await fetch('https://example.com/my-font.woff2').then(
(res) => res.arrayBuffer()
);
const output = await decompress(fontBuffer);
}
Parse a WOFF2 font with opentype.js
import fs from 'node:fs';
import opentype from 'opentype.js';
import { decompress } from 'woff2-encoder';
async function example() {
const fontFile = fs.readFileSync('./my-font.woff2');
const output = await decompress(fontFile);
// Since opentype.js requires a buffer, we pass
// in the buffer and not the byte array itself
const fontData = opentype.parse(output.buffer);
}
import fs from 'node:fs';
import opentype from 'opentype.js';
import decompress from 'woff2-encoder/decompress';
async function example() {
const fontBuffer = await fetch('https://example.com/my-font.woff2').then(
(res) => res.arrayBuffer()
);
const output = await decompress(fontBuffer);
}
- google/woff2 - For the C++ implemention for encoding WOFF2 files.
- fontello/wawoff2 - For the initial WebAssembly port of Google's WOFF2 encoder.
MIT License. See LICENSE for details.