mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-11 02:19:56 -06:00
Extrude & Bevel, Inflate and Rotate broke on shapes whose contours cross. Type often draws a glyph that way: Roboto Slab's "k" has its arm and leg as one contour that crosses both the stem and the leg's foot serif. rings() decided each contour's role (outline, hole, or no edge at all under nonzero) from the contour's first point only. A contour that starts inside another was dropped or flipped into a hole, cutting part of the glyph away. A contour that starts outside was kept whole, so its walls and bevels ran through the overlap and the overlapping parts drew as separate boxes. The profile now goes through vectorcraft_pathops::try_normalize first, so rings() only ever sees simple contours that do not cross. A path the boolean refuses is used as it was.