Skip to content

feat(pipeline): add a curveTolerance icon set option - #99

Open
stachbial wants to merge 3 commits into
@stachbial/merge-windingfrom
@stachbial/pipeline-fixes
Open

stachbial wants to merge 3 commits into
@stachbial/merge-windingfrom
@stachbial/pipeline-fixes

Conversation

@stachbial

@stachbial stachbial commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Description

  • New iconSets option curveTolerance: how far the font's curves may be from the SVG's, as a fraction of the em (the size prop). The default is 1/512, as before. It is part of the fingerprint, so font families are renamed once.
  • README: the new option. FONT_INTEGRITY.md: the fingerprint inputs.

Test plan

  • yarn test (617 tests), ts-check and lint clean. New: iconSetOptions, fingerprint and CLI validation for curveTolerance.
  • curveTolerance: 1/8192 on a test set: the font grows from 23,192 to 26,976 bytes and renders the same.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Font benchmark: ✅ pass

base 681d3ca → pr ac0e1fe. 3 runs per set. Sizes are exact; times come from separate runners.

Details

Fonts

Raw is the .ttf on disk. Compressed is the same file after deflate at level 9, which is roughly what an APK or IPA carries.

Set Raw Compressed
MaterialIcons_baseline 307,392 → 307,392 (0.0%) 163,726 → 163,726 (0.0%)
MaterialIcons_outline 337,968 → 337,968 (0.0%) 182,623 → 182,623 (0.0%)
MaterialIcons_round 416,836 → 416,836 (0.0%) 216,805 → 216,805 (0.0%)
MaterialIcons_sharp 273,120 → 273,120 (0.0%) 150,595 → 150,595 (0.0%)
MaterialIcons_twotone 451,124 → 451,124 (0.0%) 236,451 → 236,451 (0.0%)
SWMIcons_outline 107,096 → 107,096 (0.0%) 28,616 → 28,616 (0.0%)
SWMIcons_duotone 115,600 → 115,600 (0.0%) 34,117 → 34,117 (0.0%)
SWMIcons_curved 102,524 → 102,524 (0.0%) 31,597 → 31,597 (0.0%)

Package

base pr Δ
Tarball bytes 134,784 135,128 +0.3%
Files 290 290

Checks

Check Limit Result
Raw font growth ≤ 6% per set ✅
Tarball growth ≤ 6% ✅
Byte-identical rebuilds required ✅ (base: yes)
OpenType Sanitizer every font accepted ✅
Build time, median of 3 runs (not gated)
Set base pr Δ
MaterialIcons_baseline 4,962 ms 3,022 ms -39.1%
MaterialIcons_outline 5,321 ms 3,078 ms -42.2%
MaterialIcons_round 6,477 ms 3,795 ms -41.4%
MaterialIcons_sharp 4,468 ms 2,663 ms -40.4%
MaterialIcons_twotone 6,682 ms 3,989 ms -40.3%
SWMIcons_outline 2,526 ms 1,487 ms -41.1%
SWMIcons_duotone 2,678 ms 1,543 ms -42.4%
SWMIcons_curved 2,417 ms 1,431 ms -40.8%

@stachbial stachbial changed the title feat(pipeline): support xmldom 0.8, fix same-color merging, add curveTolerance feat(pipeline): add a curveTolerance icon set option Oct 21, 2026
@stachbial
stachbial changed the base branch from main to @stachbial/merge-winding October 21, 2026 23:53
@stachbial
stachbial added this pull request to stack #103 October 21, 2026 23:53
@stachbial
stachbial force-pushed the @stachbial/pipeline-fixes branch from daf44b2 to ac0e1fe Compare October 28, 2026 11:46
@stachbial
stachbial marked this pull request as ready for review October 29, 2026 18:03
@stachbial
stachbial force-pushed the @stachbial/pipeline-fixes branch from ac0e1fe to 9ceb62c Compare October 29, 2026 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant