mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-14 08:56:08 +00:00
* PDF import: outlined Indic glyphs keep their own stroke and transparency (#5235) Follow-up to #6906, for two review findings on how a line kept as outlines is joined into paths: - Glyphs were joined when their stroke widths matched; dash, cap, join and miter limit were ignored, so a dashed glyph took the stroke of the solid one before it. They join only when the whole stroke matches. - Translucent glyphs were joined into one fill, where overlapping marks paint once instead of compositing as the file draws them. Only opaque glyphs join. Also records the fix in the PDF row of docs/target-app-parity.md and in docs/roadmap.md, as AGENTS.md asks. Tests: outlined_glyphs_stroked_differently_stay_apart and outlined_translucent_glyphs_stay_apart (both fail without the change). * PDF import: outlined Indic glyphs under a soft mask stay apart; check kept geometry (#5235) Review follow-ups on #6957 and #6906: - Glyphs kept as outlines under a soft mask were joined into one path, so the mask was applied once to all of them where the file applies it to each glyph. They now join only when no soft mask is active. - The fallback tests counted outline nodes only. A new test compares the kept outlines (element count and bounding box) with the same file opened as outlines, so a dropped or moved glyph fails it. Tests: outlined_glyphs_under_a_soft_mask_stay_apart (fails without the change) and kept_glyphs_are_where_the_file_draws_them. * PDF import: mask outlined Indic glyphs one by one under a soft mask (#5235) Review follow-up on #6957. Keeping glyphs out of one shared path was not enough: each path still went into the soft mask's queue and flush_masked wrapped them all in one masked group, so a mask that is not constant was applied once to every glyph, where overlapping glyphs composite one by one in the file. With a soft mask active the queued art is now drained before the first glyph and after each one, so every glyph gets a mask of its own. Test: outlined_glyphs_under_a_varying_soft_mask_are_masked_one_by_one checks that each outlined glyph carries its own mask (0 of 3 without the change). * #6957: clarify soft-mask exception in glyph grouping docs --------- Co-authored-by: ruchirguitar <info@jeevantirth.org>