fontcull-cli

Crates.iofontcull-cli
lib.rsfontcull-cli
version1.0.6
created_at2025-12-03 11:54:10.157931+00
updated_at2026-01-23 13:10:48.944936+00
descriptionCLI tool to subset fonts based on actual glyph usage from web pages
homepagehttps://github.com/bearcove/fontcull
repositoryhttps://github.com/bearcove/fontcull
max_upload_size
id1963920
size99,846
Amos Wenger (fasterthanlime)

documentation

README

fontcull-cli

CLI tool to subset fonts based on actual glyph usage from web pages.

Uses a headless browser to render pages and extract exactly which glyphs are used by each font family, then subsets fonts to include only those glyphs.

Installation

cargo install fontcull-cli

Usage

Extract unicode ranges

Scan a URL and print the unicode range of characters used:

fontcull https://example.com
# Output: U+20-7E,U+A0,U+2019

Subset fonts

Subset font files based on glyph usage from a page:

fontcull https://example.com --subset "fonts/*.ttf" --output dist/

Spider multiple pages

Crawl same-origin links to gather glyphs from multiple pages:

fontcull https://example.com --spider-limit 50 --subset "fonts/*.woff2"

Filter by font family

Only include glyphs used by specific font families:

fontcull https://example.com --family "Inter,Roboto" --subset fonts/inter.ttf

Add whitelist characters

Always include certain characters even if not detected:

fontcull https://example.com --whitelist "0123456789" --subset fonts/body.ttf

Options

Option Short Description
--subset <PATTERN> -s Font files to subset (glob patterns supported)
--output <DIR> -o Output directory for subset fonts
--family <NAMES> -f Only include glyphs from these font families (comma-separated)
--spider-limit <N> Maximum pages to crawl (0 = disabled)
--whitelist <CHARS> -w Characters to always include

Output

  • Subset fonts are written as WOFF2 files with -subset suffix
  • Without --subset, prints the unicode range to stdout

Requirements

  • A Chromium-based browser must be installed (Chrome, Chromium, Edge)
  • The browser is launched headlessly via CDP

License

MIT

Commit count: 35

cargo fmt