Clamp too large bboxes instead of panicking - #989
Conversation
| let mut pixmap = tiny_skia::PixmapMut::from_bytes(pixmap, width, height).unwrap(); | ||
|
|
||
| resvg::render(&tree.0, transform.to_tiny_skia(), &mut pixmap) | ||
| .expect("Failed to render to pixmap"); |
There was a problem hiding this comment.
Should we panic or fail quielty?
| size.height() as f32 / tree.size().height() as f32, | ||
| ); | ||
| resvg::render(&tree, render_ts, &mut pixmap.as_mut()); | ||
| resvg::render(&tree, render_ts, &mut pixmap.as_mut()).expect("Failed to render"); |
There was a problem hiding this comment.
The best would be to resturn a Option<usize> or a Result<usize, String>
I don't really like to .expect() but I do it now for this MR for no breaking change
There was a problem hiding this comment.
It's fine, it's just for testing.
|
I understand that I made multiple MRs to improve safety but they contains breaking changes. Another solution would be to add more public method which are safer instead of editing the current ones (I can do that). Aka Instead of modifying |
Hi With the upcoming release introducing breaking changes (#922), maybe Thanks |
|
Hi, sorry, I know that the lack of response here is probably frustrating. Just to explain, your (and other) PRs are not being ignored, the problem is simply that no one has really had the bandwidth to work on resvg (at least for me it's lack of time but also a bit lack of motivation), we've managed to pull of the harfrust migration because it's pretty important, but that's about it. This is why there are so many unmerged PRs. But anyway, a second reason is that even though replacing panics with errors is a good idea in general and seems easy to do on the surface, it still requires a bit more consideration about whether we really want to make that change, and that requires digging into the codebase again which I've not had the time to do!. While in general removing panics is good, we need to distinguish between unwraps that can actually fail (like the filter ones) and unwraps which shouldn't be able to fail and therefore are fine keeping. For example:
I don't think there is any point in removing the unwrap here because the pixmap size itself is already guaranteed to be non-zero IIRC, so this should never fail. For the filter case, I'm still unsure whether it's really worth it to make rendering fallible because of this single case, because other than that I don't think there are that many fallible operations in I'll try to make more time for resvg in the near future, but of course I can't make promises, because it's just in my free time after all. :) |
render a fallible method|
I've decided to just clamp now. If you are trying to rasterize SVGs with millions of pixel in a single dimension, I think you have other problems to worry about. 😄 |
|
#937 is not fixed by this, but this seems to be a bug in tiny-skia itself with very large paths. The correct fix for both will be to introduce a fallible API and allow restricting the maximum dimensions, but that's a whole other can of worms we don't need to address in this PR now. Apart from that, users can also detect the SVG size themselves and not even start rendering if they want to. So I think this is good enough for now, thanks! |
On my side, I'm also interested in the I think this could give the lib user some error and a way to know if the render failed ^^ Thanks |
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
##### [v0.48.1](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0481-2026-08-02) This release has an MSRV of 1.85.0 for `usvg` and `resvg` and the C API. ##### Changed - MSRV lowered from 1.89 to 1.85. ([#1109](linebender/resvg#1109)) - Downgraded strict-num dependency to 0.1.1. This prevents duplicate versions from being included ([#1110](linebender/resvg#1110)) ##### Fixed - Fixed an `as_mut_slice` future-compatibility warning. ([#1108](linebender/resvg#1108)) ##### [v0.48.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0480-2026-07-31) This release has an MSRV of 1.89.0 for `usvg` and `resvg` and the C API. The big change in this release is that text support is now backed by [`skrifa`](https://github.com/googlefonts/fontations) and [`harfrust`](https://github.com/harfbuzz/harfrust) rather than [`ttf-parser`](https://github.com/harfbuzz/ttf-parser) and [`rustybuzz`](https://github.com/harfbuzz/rustybuzz): - Moves resvg onto an actively maintained font stack. - Should have faster and more correct text rendering. - Will enable further improvements to things like variable font rendering in future. - May impact binary size (expected +\~500kb for people not otherwise including fontations dependencies in their tree). - May result in small rendering changes compared to older versions of resvg. ##### Added - New `svgz` and `writer` feature gates to reduce the number of required dependencies. ([#1088](linebender/resvg#1088) by [@reed-smout](https://github.com/reed-smout)) - Warnings when parsing malformed paths. ([#1011](linebender/resvg#1011)) - A `Display` implementation for `Units`. ([#986](linebender/resvg#986)) ##### Changed - MSRV bumped from 1.87 to 1.89. The requirement comes from `font-types`. - Text shaping now uses `harfrust` instead of `rustybuzz`, and font parsing uses `skrifa` (fontations) instead of `ttf-parser`. ([#922](linebender/resvg#922) by [@nicoburns](https://github.com/nicoburns)) - Filter input dimension checks are now debug-only assertions. ([#991](linebender/resvg#991)) ##### Fixed - Glyph advances are now calculated correctly. ([#1043](linebender/resvg#1043) by [@fundon](https://github.com/fundon)) - Text nodes now inherit their absolute transform. ([#1040](linebender/resvg#1040) by [@fundon](https://github.com/fundon)) - Fixes related to non-finite values. ([#1049](linebender/resvg#1049) by [@SAY-5](https://github.com/SAY-5)) - Transforms are no longer applied twice in `abs_transform`. ([#1056](linebender/resvg#1056) by [@fundon](https://github.com/fundon)) - `fr` is now resolved for radial gradients referenced via `href`. ([#1098](linebender/resvg#1098) by [@T1mVo](https://github.com/T1mVo)) - Panic in `feComposite` with the `arithmetic` operator when the filter region is larger than the clamped layer. ([#1021](linebender/resvg#1021), [#1007](linebender/resvg#1007)) - Application of `transform` (and other group properties like `opacity`) on a nested `svg` element. - The missing dimension of an `svg` with only `width` or `height` specified is now computed from its `viewBox` aspect ratio. ([#1045](linebender/resvg#1045)) - The `wght` variation coordinate is now set even when `font-weight` has its default value. ([#1099](linebender/resvg#1099)) - The unprefixed `href` attribute now takes precedence over the deprecated `xlink:href` when both are present, as required by SVG 2. ([#1015](linebender/resvg#1015)) - Incorrect y-axis offsets when transforming `feSpotLight` sources. ([#1052](linebender/resvg#1052)) - Panics caused by bounding boxes that exceed the supported integer range. ([#989](linebender/resvg#989)) ##### [v0.47.0](https://github.com/linebender/resvg/blob/HEAD/CHANGELOG.md#0470-2026-02-05) This release has an MSRV of 1.87.0 for `usvg` and `resvg` and the C API. ##### Added - Focal radius (`fr`) supported for Radial Gradients. ([#1014](linebender/resvg#1014) by [@wmedrano](https://github.com/wmedrano)) - Support for variable fonts based on font-variation-settings CSS property. ([#997](linebender/resvg#997) by [@oetiker](https://github.com/oetiker)) ##### Changed - `tiny-skia` has a major version bump from 0.11 to 0.12.
Fix #937
Fix #941
This change the API of render() but is still compatible I think
(returns None instead of crashing)
Maybe we could add #[must_use] ?