mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-08 03:41:28 +00:00
usvg turns each <circle> and <ellipse> into arcs and then into a number of cubics that depends on f32 rounding: an ellipse that export wrote as <ellipse> could come back with eight anchors instead of the four it was written from. The renderer flattens the two outlines differently, so a round trip of a flat filled ellipse redrew 158 edge pixels by up to 43 levels, and prop_svg::plain_art_survives_visually failed on main. Import now records the ids of <circle> and <ellipse> elements in the prepass and rebuilds each as the ellipse VectorCraft draws: four smooth anchors on the axes, starting at the right as SVG defines, with handles KAPPA of the radii long, then transformed as before. Tests: prop_svg::filled_ellipse_on_the_artboard_edge_survives_visually (the failing case) and basic_shapes::circles_and_ellipses_import_as_the_ellipse_drawn fail without the change.