Skip to content

usvg/parser: fix width/height computation when only one is specified - #1045

Merged
LaurenzV merged 2 commits into
linebender:mainfrom
simartin:only_one_width_height
Aug 1, 2026
Merged

LaurenzV merged 2 commits into
linebender:mainfrom
simartin:only_one_width_height

Conversation

@simartin

@simartin simartin commented May 5, 2026

Copy link
Copy Markdown
Contributor

In case only one of the height/width attributes are set and we have a viewBox, we currently report an incorrect size: the height/width that is set and 100% of the viewbox's attribute for the other attribute.

This is incorrect, and we should instead compute the missing attribute value from the specified one and the viewBox' aspect ratio, like was done by #715.

I have validated that this fixes servo's
servo/servo#41273

In case only one of the height/width attributes are set and we have a
viewBox, we currently report an incorrect size: the height/width that is
set and 100% of the viewbox's attribute for the other attribute.

This is incorrect, and we should instead compute the missing attribute
value from the specified one and the viewBox' aspect ratio, like was
done by linebender#715.

I have validated that this fixes servo's
   servo/servo#41273

Signed-off-by: Simon Martin <simon@nasilyan.com>
@simartin
simartin force-pushed the only_one_width_height branch from fabe160 to bf698e0 Compare May 5, 2026 15:56
@LaurenzV

LaurenzV commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

Thanks!

@LaurenzV
LaurenzV merged commit 714638f into linebender:main Aug 1, 2026
5 checks passed
@simartin
simartin deleted the only_one_width_height branch August 1, 2026 07:06
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 9, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 9, 2026
##### [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.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 9, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 9, 2026
##### [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.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Aug 26, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Aug 26, 2026
##### [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.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Sep 7, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Sep 7, 2026
##### [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.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Sep 15, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Sep 15, 2026
##### [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.
renovate Bot added a commit to gwennlbh/vgvf that referenced this pull request Sep 24, 2026
##### [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.
renovate Bot added a commit to gwennlbh/shapemaker that referenced this pull request Sep 25, 2026
##### [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.
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.

2 participants