scour-project / scour

Scour - An SVG Optimizer / Cleaner
Apache License 2.0
770 stars 60 forks source link

[feature request] simplify nested uses #291

Open JoKalliauer opened 2 years ago

JoKalliauer commented 2 years ago

Input

SVG-File

<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 40 30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs>
  <text id="a" x="5" y="20">no g</text>
  <use id="b" xlink:href="#a"/>
 </defs>
 <use xlink:href="#b"/>
</svg>

Desired Output

simplify nested use and concatenate transforms

<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 40 30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs>
  <text id="a" x="5" y="20">no g</text>
  <use id="b" xlink:href="#a"/>
 </defs>
 <use xlink:href="#a"/>
</svg>

Reason: Librsvg-Bug

see: https://commons.wikimedia.org/wiki/File:Librsvg_bug_nested_use.svg and https://phabricator.wikimedia.org/T276684

Copyright

Author: Cmglee

License: CC-BY-SA 4.0

Source: https://commons.wikimedia.org/wiki/File:Librsvg_bug_nested_use.svg