Mermaid: node-tekst rendert op verkeerde positie in flutter_svg (labels leeg/verspringen), vervolg op #862 #868
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#868
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Waargenomen op de live webdemo (ocideck.librekat.nl, bundel v0.1.0-23-g2f3df910, ná de #862-fix), slide 33 "De grote kat-beslisboom" van de proefpresentatie.
Symptoom: de vormen van een mermaid-diagram renderen sinds #862 correct in kleur (lichtgrijze nodes, ruit, dunne pijlen), maar de node-tekst staat niet in de vorm. De rechthoek- en ruit-nodes zijn leeg; labels verschijnen losgekoppeld op de verkeerde positie en overlappen elkaar (bijv. het label "Kat ziet iets op de rand van de tafel" zweeft rechts van zijn node en de laatste tekens vallen samen). Systemisch: bij elke node getoetst.
Oorzaak (analyse): OciDeck rendert de mermaid-SVG via
flutter_svg(vector_graphics) naar het CanvasKit-canvas. Mermaid stelt de labelposities in met genestetransform/tspan-coordinaten die uitgaan van browser-fontmetrics;flutter_svgmatcht die tekstlayout niet (geneste transforms op tekstgroepen +tspanx/dy + tekstmeting met een ander font), waardoor de labels verkeerd geplaatst worden. Dit staat los van #862: #862 ging over het<style>-blok dat flutter_svg negeert (fills), en is opgelost door de stijl-inliner. De tekst-positionering is een tweede, dieper liggende flutter_svg-beperking die pas zichtbaar werd toen de vlakken niet meer zwart waren.Reproductie:
ocideck.librekat.nl/?deck=https://librekat.nl/downloads/proefpresentatie.ocideck.Kandidaat-aanpakken (ontwerpkeuze):
getBoundingClientRect), en toon die PNG i.p.v. de SVG aan flutter_svg. De browser doet dan de tekstlayout perfect. Nadeel: raster i.p.v. vector (schaalbaarheid, bestandsgrootte, exportkwaliteit bij inzoomen).transform/tspan-structuur naar een vorm normaliseren die flutter_svg wél goed plaatst (transforms platslaan, tekst herpositioneren). Onzeker of het volledig kan; flutter_svg's tekstondersteuning is beperkt.Aanbeveling: A (rasteren) geeft de betrouwbaarste weergave over alle vier de oppervlakken, maar het is een ontwerpkeuze (vector vs raster) — eerst afstemmen.
Ook meegenomen: een groot diagram loopt in presentatiemodus buiten het slidekader (onderkant valt weg). Mogelijk deels een gevolg van de verkeerde bounding box door dezelfde tekst-/transformkwestie; hoort in dezelfde slag.