
Hi all,
I've been in a little discussion with Jasper and he has found a problem with the new path representation. A story about what now works, and what now does not work.
Please check what I state here. It is how I have understood the SVG standard, but I could well be wrong. On purpose, Jasper and I discussed obscure paths.
== Explicit closing line segment == A: "M 0,0 L 1,1 z" B: "M 0,0 L 1,1 L 0,0 z" These two paths are not identical in SVG. When adding midpoint markers, path A will not have a marker at (0,0), but path B will. Inkscape 0.46 did not distinguish between these two paths. 0.47 does distinguish them, however after nodetool editing, path A is converted to path B. I think this is a bug and it is better to always output path A after nodetool editing. It will be harder to remember whether to explicitly state the closing segment without showing multiple nodes on-canvas etc...
== Line segment without moveto after closing path == C: "M x1,y1 ... z L x2,y2" D: "M x1,y1 ... z M x1,y1 L x2,y2" These paths are also not identical. I think this has to do with the stroke of a path being continued for path C after the closing "z" ; instead for path D, a new stroke is started after "z". Inkscape 0.47 is not able to represent the difference between these two paths, converting path C to path D. Unfortunately, 2geom's path representation (at the moment) is not able to represent path C. I can try to change things, but it will be an ugly hack probably...
== Only moveto's in a path == E: "M 0,0 M 1,1 M 2,3" Such a path is used for paths where only markers should be shown, without stroking the rest of the path. Inkscape 0.46 discards this path data; 0.47 correctly handles this kind of path.
Regards, Johan