icu_tool
v0.4.0 - 2026-07-13
0.4.0
Jul 13 2026 at 03:52 UTC
๐ Version Tag
- ๐ New Features:
- โจ SVG gradient import/export โ
usvg::Paint::LinearGradient/RadialGradientconvert tomirx::Paint::LinearGradient/RadialGradientwith stops, spread mode, gradient units, transform. SVG export emits<linearGradient>/<radialGradient>defs +url(#gradN)fill references. Pattern paints still dropped (no mirx Pattern variant). - โจ SVG clipPath import/export โ
<clipPath>elements convert toSceneOp::PushClip/PopClipwithResourceRef::Inline(Path). SVG export emitsclip-path="url(#clipN)"attributes. - โจ SVG filter wire โ
<filter>primitives (feGaussianBlur, feColorMatrix) encode intoGroupBegin.filteras a semicolon-separatedResourceRef::Tokenstring (blur:<sx>:<sy>/cm:<matrix|saturate|hueRotate|luminance>). SVG export emitsfilter="url(#filterN)". - โจ SVG
<text>import โ usvg text feature enabled;<text>/<tspan>flatten to glyph outline paths viausvg::Tree::flattened(). Font size / family / weight resolved by usvg. - โจ SVG
<image>import โ<image href="...">embeds raster data as a placeholder rect (usvg doesn't expose pixel data to the tree walker). - โจ stroke-dasharray import/export โ
usvg::Stroke::dasharray()maps toStrokePath.dash(Cow); SVG export emitsstroke-dasharray="a,b,c"when dash is non-empty. - โจ NonZero fill-rule โ
usvg::FillRule::NonZeropasses through toSceneOp::FillPath { fill_rule: NonZero }instead of being coerced to EvenOdd. - โจ Font viewer glyph grid โ per-glyph thumbnail grid mode; click a glyph to inspect its outline path. Glyph diff mode overlays two atlases from different fonts.
- โจ Indexed image export โ save edited indexed data (palette + per-pixel indexes) back to PNG (palette-encoded) or LVGL binary (I1/I2/I4/I8). Dither slider + palette edit panel + merge panel for multi-font bundles.
- โจ Path viewer op inspector โ right panel shows selected SceneOp's fields (path cmds, paint, transform, fill_rule, stroke params).
- โจ Multi-font bundle โ
FontData::MirxBundlevariant + bundle selector in font viewer;icu merge-fontsCLI merges single-font.mirxfiles. - โจ Theme-aware font rendering โ atlas tinted by theme fg color on bg, not raw grayscale; cache tint per theme, only re-render on theme switch.
- โจ woff2 font decode โ
can_decodedetects woff2 magic; font info panel decompresses woff to ttf for metadata.
- โจ SVG gradient import/export โ
- ๐ง Improvements:
- ๐งน Atlas render via SwRenderer draw_label โ proper SDF sampling instead of raw byte threshold; ARGB8888 output uses
AlphaMode::Blendwith RGB forced to fg color for clean alpha edges. - ๐งน mirui dependency bumped to v0.42.0 (crates.io) โ
Paintenum replacesColorinFillPath/StrokePath;stops/dashfields moveVecโCow<'static, [...]>for const construction. ICU wraps runtime-built stops/dash inCow::Owned.
- ๐งน Atlas render via SwRenderer draw_label โ proper SDF sampling instead of raw byte threshold; ARGB8888 output uses
- ๐ Bug Fixes:
- ๐ Font atlas black edges fixed โ SDF threshold-to-alpha conversion tints by coverage instead of hard threshold.
- ๐ Indexed hover stuck on theme switch โ cache invalidated on theme change.
- ๐ Path highlight + diff conflict on simultaneous selection resolved.
๐ฆ Dependencies
- mirui
0.41โ0.42.0(Paint enum, gradient/clip/blur, StrokePath cap/join/dash)