Slice

Slice

Build custom design sub-spaces from variable fonts — one static instance, or a variable font with fewer axes and narrower ranges. In your browser.

Try it now Read the manual

Slice takes a variable font and gives you a smaller one. Pin an axis to freeze it, narrow an axis to keep it variable over less of its range, correct the names and style bits so the result identifies itself properly, and — new in this version — remove overlapping contours, which after more than a decade still trips up a great deal of design software.

Your font never leaves your machine. The page is static files and a WebAssembly module: the browser reads the font, slices it, and hands it straight back as a download. There is no server and nothing to upload. Load the page, go offline, and it still works.

Where to go

How it differs from the original

This is a reimplementation of Slice by Source Foundry. The interface is deliberately close, because the original’s interface is good and people know it. Four things are different.

It removes overlaps. The original never did. fontTools does this through Skia’s path ops, which has no WebAssembly build, so the union here is computed with linesweeper, a robust Bentley–Ottmann sweep line in pure Rust.

It runs in a browser. No install, no Python environment, no platform builds to code sign and notarise.

It fixes four defects. Measured, not asserted — see the adjudication. The original clears every exposed fsSelection bit on save, deletes name IDs 16, 17, 21 and 22, ignores the extension you type when choosing the output container, and accepts wght=300:1e3 by silently deleting the weight axis.

It says what it cannot do. Measured over every variable font in Google Fonts, 1479 of 1481 slicing jobs succeed and 177,153 sampled glyphs match fontTools exactly; the two that do not are a font fontTools itself crashes on. What remains unsupported is listed in the manual rather than left to be discovered.