A Fontello alternative that builds locally
Fontello is open source and its CLI is genuinely useful — but the CLI posts your
config.json to fontello.com and downloads what comes back, so a build needs
the internet and someone else's server to be up. Iconotype builds the font on the machine
that asked for it.
Moving across, honestly
Fontello's config.json is not read yet — if that is what you
have, say so on
the issue tracker and it is a
reasonable thing to add. What works today:
- the SVGs you uploaded in the first place — a folder or an archive of them
- an IcoMoon project,
selection.jsonor font package - picking equivalents out of 230+ open collections, licences attached
If your font is already in production, take the codepoints with you: put them in
codepoints.lock and every future build honours them, so the classes in your
stylesheets keep rendering what they rendered yesterday.
What is actually different
| Iconotype | Fontello | |
|---|---|---|
| Where the build happens | your machine, or your CI runner | fontello.com, via its API |
| Works with no network | yes | no |
| Inside your editor | VSCode extension: completion, previews, rename, usage | — |
| SVG repair before the build | 13 stages, 31 reported findings, visual regression tested | — |
| Codepoint drift | locked, and iconotype diff fails the PR |
config holds codes; nothing checks them |
| Reproducible output | same input, same bytes | depends on the service |
| Licence | MIT | MIT |
Written to be checkable rather than flattering — Fontello's client and server are both open source, and self-hosting its server is a real option if that is the part you mind. If anything here is wrong or has changed, say so.
The build, in one command
# from a folder of SVGs
npx @iconotype/cli init --input icons/ --fonts-dir app/fonts --styles-dir app/css
npx @iconotype/cli build --input app.iconotype.json
Out comes woff2, woff, ttf, the stylesheet, and
whatever else the project asks for: SCSS or LESS variables, a JSON map, a sprite sheet, a
.d.ts of every icon name, or a Flutter IconData class. Identical
bytes are never rewritten, so a no-op build leaves the working tree clean.
Questions
- Can Iconotype read a Fontello
config.json? -
Not yet. Import the SVGs instead, and carry your codepoints over in
codepoints.lockso existing stylesheets keep working. - Does it need a server?
- No. The font is built where you run it — a browser tab, a desktop app, a CI runner — and nothing is uploaded.
- Can it run in CI?
-
That is what it is for.
iconotype buildis deterministic andiconotype difffails a pull request that moves or removes a codepoint. - What does it do about broken SVGs?
- Outlines strokes, bakes transforms, applies clips and masks, converts even-odd fills — and reports anything it cannot represent rather than mangling it quietly.
Point it at your icons
Nothing to install, and nothing leaves your machine.