summaryrefslogtreecommitdiff
path: root/docs/design.typ
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 17:56:54 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:17 -0300
commitb6f07ba4e84e6d8474a118bee6e69e4b554417f1 (patch)
tree3e9e1b2766e2fcc7f44afd3edd952d62877b2c89 /docs/design.typ
parent031989d927b07d38f0874a0b78a52f54ad285efb (diff)
downloadpardes-b6f07ba4e84e6d8474a118bee6e69e4b554417f1.tar.gz
pardes-b6f07ba4e84e6d8474a118bee6e69e4b554417f1.zip
An invalid byte in a grapheme is one cell, and never reaches vaxis's width
uucode joins a stray lead byte (as U+FFFD) to a following e and combining mark into one grapheme; vaxis's gwidth then counts back the replacement rune's three bytes over the one byte it stood for and overflows (gwidth.zig:62), panicking the next frame after a write of \xee e \xcc\x81 to xdata (the 9P monkey's crash-b2417c49). graphemeDisplayWidth now gives each invalid byte one cell, as surface.zig draws it, and measures the valid runs between alone. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs/design.typ')
0 files changed, 0 insertions, 0 deletions