Open MichaelHinrichs opened 5 months ago
It's not a bug. It's a desirable behavior. Unfortunately, it's not easy to implement. Merging paths can lead to issues like excluding sections. To avoid them one need to check for intersections or even path directions. Currently there is quick and dirty check for convex hulls intersections (by GJK algorithm). If you know a library that can do such a check for paths better than with O(n²) complexity, please let me know.
Running into this too. Sometimes when I export a flattened SVG from Figma I get three paths. These paths don't intersect, but I'd like them to merge into one path (our design system library expects this) but svgo leaves them as 3 paths.
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="...pathdata" fill="black"/>
<path d="...pathdata" fill="black"/>
<path d="...pathdata" fill="black"/>
</svg>
Is that expected that it won't merge paths that don't touch?
Yes, if their convex hulls touch.
Describe the bug When I try to use SVGOMG to merge the paths in the attached SVG, two paths remain unmerged.
To Reproduce
Expected behavior All paths merge, leaving only one.
Screenshots
Desktop (please complete the following information):
Additional context I'm able to merge the paths with a text editor with no issue. The SVG looks exactly the same, so I'm not sure what's preventing SVGO from doing it. The original file comes from here, as well as others that may replicate the same problem.