The zip you know
Same layout: fonts, style.css, variables, a demo page, and
selection.json so you can go back to IcoMoon whenever you like.
IcoMoon is a good tool, and for a font you make once it is hard to beat. Iconotype is for the other case: a font that ships repeatedly, from a repository, with other people reviewing it. It imports IcoMoon's own formats, keeps every codepoint, and never asks you to upload anything.
The thing that keeps people on IcoMoon is not the editor, it is the
selection.json in their repository and the codepoints baked into every
stylesheet they have already shipped. Iconotype reads all of it:
selection.json.zip.svg filesCodepoints come across exactly as they were. That is the point: a font you already shipped has its codepoints baked into every built stylesheet, and renumbering them would silently change which glyph each existing class renders. From then on they are append-only and recorded in a lockfile, so no future export can move them either.
npx @iconotype/cli init --input icomoon/project.json \
--fonts-dir app/fonts --styles-dir app/css --style-kind scss-variables
That writes a committed <name>.iconotype.json and a
codepoints.lock. Nothing is uploaded, and the IcoMoon file is left untouched.
| Iconotype | IcoMoon | |
|---|---|---|
| Where the project lives | a JSON file in your repo, reviewable in a diff | in the browser, or a file you download |
| Building without a network | iconotype build |
— |
| Inside your editor | VSCode extension: completion, previews, rename, usage | — |
| Codepoint drift | locked, and iconotype diff fails the PR |
— |
| Licence and designer credit | carried into the generated stylesheet | — |
| Reproducible output | same input, same bytes | — |
| Licence | MIT, self-hostable | proprietary service |
Written to be checkable rather than flattering. If something here is wrong or has changed, say so and it gets corrected.
Same layout: fonts, style.css, variables, a demo page, and
selection.json so you can go back to IcoMoon whenever you like.
.icon-home, prefixes, postfixes and the ${u} interpolation
IcoMoon supports — so an existing stylesheet keeps working untouched.
IcoMoon's stacked-layer model, palettes included, rather than a flattened approximation of it.
Lucide, Material Symbols, MDI, Tabler, Phosphor and hundreds more, each landing with its own licence attached to the artwork.
Strokes outlined, transforms baked, even-odd converted — and anything that cannot survive the trip reported instead of silently mangled.
iconotype diff fails a pull request that would move a codepoint;
scan finds icons nothing references any more.
selection.json, a downloaded font package zip, or
a folder of SVGs. Codepoints are preserved exactly.
selection.json IcoMoon can open, which is the
same file it would have written itself.
The web app opens with nothing to install. Drop your selection.json on it
and see whether the codepoints line up.