| Existing codepoints survive a pack changeIf an assignment moves, shipped application code renders the wrong glyph. | ●Supported: Committed lock file`iconfont.lock.json` is generated into the output tree and read on every later build. Removed icons leave a tombstone in `retired` instead of freeing the codepoint. | ◐Conditional: If you re-import selection.jsonThe FAQ states the codes of previously selected glyphs will not change when the previous `selection.json` is imported, and that "newly imported SVGs do not have any codes assigned to them", so re-importing and reselecting everything "would most likely result in different codes". Stability depends on keeping that file and importing it every time. | ◐Conditional: If you re-import config.jsonInherits the Fontello session model, where the downloaded `config.json` records each glyph code and can be imported again. Stability depends on retaining and re-importing that file. | -Not documented: No documented mechanismNeither the pub.dev page nor the README documents a lock file or persistence mechanism. Published examples show codepoints running sequentially from `0xe000` in glyph order. | ◐Manual: Hand-pinned in configA `codepoints` map in the config assigns fixed values, so stability is achievable. The map is maintained by hand rather than generated and updated by the tool. |
|---|
| CI can prove committed output is currentGenerated artifacts drift from sources silently unless something fails the build. | ●Supported: `--check` exits 3 when staleRebuilds a candidate artifact set and compares it without rewriting the owned output tree. Verified: exit 0 on current output, exit 3 after a source edit. | ○Not supported: No CLI to run in CIThe documentation describes a browser application, with no command-line interface. | ○Not supported: No first-party staleness checkThe third-party `fontello-cli` can install a config against a host, but neither it nor the site offers a check that fails on stale committed output. | ○Not supported: Not offeredThe CLI generates output. No check or verify mode is documented. | ○Not supported: Not offeredNo check or verify mode is documented. |
|---|
| Runs entirely on your machineUnreleased or licensed artwork often cannot leave the building. | ●Supported: Local CLI, no network stepA Python command-line compiler. No website step, no project service, no server that receives artwork. | ●Supported: In-browser, not uploadedThe FAQ states that "when you import SVG files or when you generate a font, everything happens in your browser", and that SVGs are not uploaded unless you opt into paid project storage. It also documents working offline after preloading the generate pages. | ○Not supported: Hosted service sessionA hosted web application in the Fontello lineage, where the font configuration is posted to the service and held in a server-side session. | ●Supported: Local CLIRuns locally. Described as written fully in Dart with no external dependency. | ●Supported: Local CLIRuns locally on Node. |
|---|
| Byte-identical rebuildsNon-reproducible artifacts turn every rebuild into an unreviewable diff. | ●Supported: Same bytes across worker countsSame inputs, config, lock, and compiler version produce byte-identical artifacts. Verified: identical SHA-256 across default, 1, and 4 worker processes. | -Not documented: Not documented | -Not documented: Not documented | -Not documented: Not documented | -Not documented: Not documented |
|---|
| Explicit policy for SVG a font cannot holdAn icon font stores monochrome coverage. Something has to decide what happens to a blur or a half-transparent fill. | ●Supported: Two policy axes, both strict by default`lossy` and `unrepresentable` each default to `error`. Approximations and omissions require explicit opt-in and are reported as typed, coded issues. | -Not documented: No published policy | -Not documented: No published policy | -Not documented: No published policyExposes `--[no-]normalize` and `--[no-]ignore-shapes` flags, but documents no classification of unsupported input. | -Not documented: No published policy |
|---|
| Generates a Flutter IconData APIHand-written IconData constants are the place codepoint drift actually bites. | ●Supported: Const class, tree-shakeableEmits a `@staticIconProvider` class of `const IconData` values, with `fontPackage` handling and optional layered-icon widgets. | ○Not supported: No Dart outputDocumented export targets are Font, SVG, SVG sprite, Elm, React, Vue, Tiles, PNG, Favicon, and CSH. | ●Supported: Dart icon classPurpose-built for Flutter: exports a font plus a Dart icon class. | ●Supported: Dart icon classGenerates an OTF font and a Flutter-compatible class. | ○Not supported: Web asset types onlyGenerates CSS, SCSS, SASS, HTML, JSON, and TypeScript. No Dart or Flutter output. |
|---|
| Web assets: WOFF2 and CSSThe honest place GlyphPact is behind. If you need a web icon font today, these tools already do it. | ○Not supported: OpenType/CFF onlyEmits a `.otf` font and the lock registry. No WOFF, no WOFF2, no generated CSS. Web use means converting the font and writing the CSS yourself. | ●Supported: Fonts plus CSSDocumented export targets include a web font pack and further asset types. | ●Supported: Web font packFontello lineage produces web font formats alongside the Flutter output. | ○Not supported: OTF only | ●Supported: WOFF2, WOFF, TTF, EOT, SVG, CSSDocumented font formats are EOT, WOFF2, WOFF, TTF, and SVG, with CSS, SCSS, SASS, HTML, JSON, and TS asset types. |
|---|
| Generates an attribution recordThird-party icon licences usually require attribution, and audits ask for it. | ●Supported: `ATTRIBUTION.md` per buildCarries declared author, licence, and source URL per glyph, and counts emitted icons with no declared provenance. It does not verify ownership. | -Not documented: Not documented | ◐Conditional: Bundled-pack licencesShips licence information for the open-source packs it bundles. Not an attribution file generated from your own artwork metadata. | ○Not supported: Not offered | ○Not supported: Not offered |
|---|
| Required runtimeA toolchain you do not already run is a toolchain you have to maintain. | ●Supported: Python 3.10+Dart 3+ only to consume the generated provider. | ●Supported: A browser | ●Supported: A browserOptional third-party CLI needs Node. | ●Supported: Dart | ●Supported: Node 16+ |
|---|
| Coding-agent integrationIcon work is increasingly delegated, and an agent needs typed results rather than screenshots. | ●Supported: Claude Code and Codex pluginA local stdio MCP server exposes `audit_icon_pack`, `build_icon_font`, `check_icon_font`, and `read_icon_report`, plus the config, report, and CLI-result schemas as resources. | ○Not supported: Not offered | ○Not supported: Not offered | ○Not supported: Not offered | ○Not supported: Not offered |
|---|