About this project

Static to Variable is a command-line tool that turns a folder of separate static font weights (for example thin, regular and bold) into one variable font whose weight axis slides across everything in between. Rather than bundling the original files, it redraws each weight onto a shared skeleton so the outlines correspond point for point and can interpolate; glyphs it cannot convert cleanly are skipped instead of producing broken interpolation. Installation is global via npm (`npm install -g static-to-variable`). It requires Node 24.11+, Python 3.11+ and uv, which the CLI uses to run the underlying font toolchain. The workflow is three steps from a folder containing the static fonts: `init` scans the folder and writes `stv.config.json`; `build` produces the variable font into `build/`; `release` emits the shippable TTF and WOFF2. A `split` command reverses the process, generating one static TTF and WOFF2 per weight step from a variable font. `doctor` reports readiness of node, python, uv and config, and `status` prints an aggregate pipeline report. Configuration covers italics, named instances and per-glyph fixes, documented by a JSON schema and an Inter example in the repository. The README also notes that coding agents can be taught the CLI via `npx skills add mblode/static-to-variable`, and that the full flag reference lives in the CLI package docs. Licensing is called out explicitly: the code is MIT, but fonts keep their own licenses. Converting a font counts as modifying it, which most commercial EULAs forbid, so foundry permission is needed; open licenses such as the SIL OFL (covering most Google Fonts) permit it, and users' own fonts are fine.