diff --git a/CHANGELOG.md b/CHANGELOG.md index a6680edbb..24ffab2be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,61 @@ follow semantic versioning; release dates are ISO 8601. ## v2.2.1 — Planned +### Fixed + +- **The SVG reader honours the opacity family.** `opacity`, `fill-opacity` and + `stroke-opacity` — attribute or `style=""`, number or percentage, with SVG's + inheritance for the paint slots and composition for group `opacity` — now + multiply into each layer's flat paint alpha, on top of any alpha the colour + already carries from an 8-digit hex or `rgba()`. They were read from nowhere + before: a translucent logo landed on the page fully opaque, and the only fix + was editing the SVG. A slot whose product reaches zero is treated like + `fill="none"`, so an `opacity="0"` guide layer no longer paints at all. A + *partial* opacity cannot reach a gradient slot — the `DocumentPaint` contract + refuses translucent stops because shadings carry no alpha — so a gradient + under `fill-opacity="0.5"` still paints opaque, now with a one-line warning + naming the approximation. Group opacity is the per-layer approximation of SVG's + offscreen compositing — overlapping siblings inside one translucent group + darken where a browser would flatten them first — which is the same trade + every lightweight icon reader makes. + +- **What the SVG reader cannot honour now says so.** `fill-rule="evenodd"` was + read from nowhere and filled with non-zero winding — a donut whose hole is cut + by a same-direction subpath came out solid, silently; it still renders the + same way, but the icon now logs one warning naming the approximation (a + `fill-rule` value outside nonzero / evenodd / inherit, previously unread, is + now refused like any other bad presentation value). A `mask="url(#id)"` or + `filter="url(#id)"` attribute — whose definition sits in ``, where the + walk never looks — paints unmasked / unfiltered as before, but the + referencing attribute is now read and warned about, because that attribute is + the only place the divergence is observable. Element kinds outside the + reader's vocabulary (`mask`, `pattern`, `marker`, `