是否有任何命令行工具可以从 SVG 文件中删除变换(或者更确切地说应用变换),将所有坐标转换为原位?
据我所知,这是最著名的 SVG 清理工具(svgo、svgcleaner等)都无法处理的事情之一。
换句话说,我想从这样的事情开始:
<g
transform="matrix(0.9,0,0,0.99,650,280)"
>
<path
d="M591,1037 L589,1044 ...
>
</g>
像这样的事情
<g>
<path
d="M204,503 L321,403 ...
>
</g>
...或者来自这样的事情:
<path
transform="matrix(0.9,0,0,0.99,650,280)"
d="M591,1037 L589,1044 ...
>
像这样的事情
<path
d="M204,503 L321,403 ...
>
链接
作为参考,有一个旧的、未维护的 Inkscape 扩展可以执行此操作:Apply Transforms)
Stack Overflow 问题,提供有关如何在 Inkscape 中(通过 GUI)执行此操作的提示,包括注释,这过去可以通过 svgo 实现:Removing Transforms in SVG files
在 svgo 存储库中打开票证:请添加展平变换的选项 #624
SVGO对于你的例子来说效果很好。我在3.2.0上测试过。
npm i -g svgo
和svgo in1.svg in2.svg -o out1.svg out2.svg
:in1.svg
in2.svg
out1.svg
=out2.svg
观察到所有
transform
s 都被删除(应用)并且事物保持在原位。我不知道为什么这个问题仍然悬而未决,可能是因为边缘情况,但默认情况下会启用删除变换。关注最近的拉取请求,并在有新版本时进行更新。有一些小错误很快就会修复。将支持形状,但问题讨论的是路径。