feat(pdf): aanvullend symbolen-font voor pijlen en wiskundetekens (#1968) #1984

Merged
brenno merged 1 commit from fix/1968-unicode-font-diagrams into main 2026-09-04 05:31:14 +00:00
Owner

Summary

  • Sinds #1942 wordt de tekst in een ingesloten tekening op Roboto gezet, maar Roboto dekt geen pijlen (U+2190–U+21FF) en geen wiskundige operatoren (U+2200–U+22FF). Een pijl in een diagramlabel wordt een leeg blokje.
  • Deze wijziging voegt een subset van Noto Sans Math toe als tweede terugvalfont — ~250 KB in plaats van de volledige 1 MB, beperkt tot de Unicode-blocks die in diagrammen en formules voorkomen.
  • De fallback-lijst in DocumentPdfFonts was al een lijst, dus de bedrading lag er: het symbolen-font komt erachter te staan en de pdf-bibliotheek probeert ze in volgorde.
  • Voor de SVG-lezer (die maar één font kiest) kiest svgTypesetting nu het symbolen-font als de SVG tekens bevat die Roboto niet dekt.

Test plan

  • flutter test test/pdf/ — 178 tests groen
  • flutter analyze --fatal-infos — geen issues
  • Nieuwe tests: pijl unsupported zonder symbolen-font, pijl gedekt met symbolen-font, wiskundetekens gedekt, SVG met pijl kiest symbolen-font, SVG met gedachtestreepje kiest Roboto

Generated with Devin

## Summary - Sinds #1942 wordt de tekst in een ingesloten tekening op Roboto gezet, maar Roboto dekt geen pijlen (U+2190–U+21FF) en geen wiskundige operatoren (U+2200–U+22FF). Een pijl in een diagramlabel wordt een leeg blokje. - Deze wijziging voegt een subset van Noto Sans Math toe als tweede terugvalfont — ~250 KB in plaats van de volledige 1 MB, beperkt tot de Unicode-blocks die in diagrammen en formules voorkomen. - De `fallback`-lijst in `DocumentPdfFonts` was al een lijst, dus de bedrading lag er: het symbolen-font komt erachter te staan en de `pdf`-bibliotheek probeert ze in volgorde. - Voor de SVG-lezer (die maar één font kiest) kiest `svgTypesetting` nu het symbolen-font als de SVG tekens bevat die Roboto niet dekt. #### Test plan - [x] `flutter test test/pdf/` — 178 tests groen - [x] `flutter analyze --fatal-infos` — geen issues - [x] Nieuwe tests: pijl unsupported zonder symbolen-font, pijl gedekt met symbolen-font, wiskundetekens gedekt, SVG met pijl kiest symbolen-font, SVG met gedachtestreepje kiest Roboto Generated with [Devin](https://devin.ai)
feat(pdf): aanvullend symbolen-font voor pijlen en wiskundetekens (#1968)
All checks were successful
scans / scans (pull_request) Successful in 2m58s
web-gate / web-gate (pull_request) Successful in 6m14s
static-gate / static-gate (pull_request) Successful in 8m15s
495771e28a
Sinds #1942 wordt de tekst in een ingesloten tekening op het gebundelde
Roboto-Variable.ttf gezet zodra er een teken boven U+00FF staat. Dat lost
het afbreken van de export op, maar Roboto dekt geen pijlen (U+2190–U+21FF)
en geen wiskundige operatoren (U+2200–U+22FF). Een pijl in een diagramlabel
wordt dus een leeg blokje.

Deze wijziging voegt een subset van Noto Sans Math toe als tweede
terugvalfont — ~250 KB in plaats van de volledige 1 MB, beperkt tot de
Unicode-blocks die in diagrammen en formules voorkomen (Arrows,
Mathematical Operators, Supplemental Arrows, Misc Mathematical Symbols).

De `fallback`-lijst in `DocumentPdfFonts` was al een lijst, dus de
bedrading lag er: het symbolen-font komt erachter te staan en de
`pdf`-bibliotheek probeert ze in volgorde.

Voor de SVG-lezer (die maar één font kiest, zonder terugvallijst) kiest
`svgTypesetting` nu het symbolen-font als de SVG tekens bevat die Roboto
niet dekt — een pijl die er wél is maar in de verkeerde snede staat is
beter dan een leeg blokje in de juiste snede.

Nieuwe tests verifiëren:
- Zonder symbolen-font is U+2192 (→) unsupported
- Met symbolen-font komen pijlen en wiskundetekens er wél in
- Een pijl in een SVG kiest het symbolen-font
- Een gedachtestreepje kiest nog steeds Roboto

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit f10e37fcab into main 2026-09-04 05:31:14 +00:00
Sign in to join this conversation.
No description provided.