fix(mermaid): bak tekstlayout naar flutter_svg-veilige vorm (#868) #871
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!871
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/868-mermaid-text-normalize"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vervolg op #862. Nadat de diagramvormen weer kleurden, bleek de tekst een laag dieper alsnog verkeerd geplaatst: node-labels versprongen buiten hun knoop en overlapten, de knopen leken leeg.
Oorzaak: OciDeck tekent de mermaid-SVG met
flutter_svg(vector_graphics), dat mermaids tekstlayout niet betrouwbaar volgt —text-anchor:middle,em-eenheden iny/dy, en per woord geneste<tspan>s.Fix (de lichtere normalisatie): de gedeelde inliner (
assets/web_export/svg_style_inline.js) bakt nu, in de browser die mermaid al rendert, elke tekstregel om naar de vorm die flutter_svg wél volgt: één platte<tspan>met absolute px-x/yop de al berekende plek (getStartPositionOfChar, dus inclusief mermaids eigen middle-anchoring en em-berekening) entext-anchor:start. Geenmiddle, geenem, geen geneste tspans. Vector blijft behouden.Dezelfde slag repareert een separator-bug in de inliner: een bestaande
stylezonder afsluitende;smolt samen met de eerste toevoeging (stroke: nonefill:…).Verificatie: browserprobes bevestigen dat de bak-stap posities exact behoudt (
getStartPositionOfChar-drift = 0) en het<style>-blok verdwijnt. En vooral: een versemake build-weblokaal geserveerd met het live-deck toont in flutter_svg de labels nu gecentreerd ín hun knopen (rechthoek "Kat ziet iets op de rand van de tafel", ruit "Kijkt de mens?") in plaats van lege vakken met losgeslagen overlappende tekst. Raakt web en desktop (beide renderpaden delen de inliner).make checkgroen.fixes #868