grid: a pending zero-width joiner survives a C0 control #412
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#412
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?
Split from #401 (noticed while pinning the batched print paths in #410).
A pending zero-width joiner is disarmed by printable ASCII (fixed in #410) but not by C0 controls handled in
execute: afterZWJ, a TAB or CR followed by a joinable character still joins that character to the cluster written before the control. Both the per-byte and the batched print paths behave the same way, so the proptest added in #410 does not flag it.Expected: any C0 control that moves the cursor or ends the run disarms the pending joiner, as a printable ASCII byte does. Pin it with a deterministic test per control (TAB, CR, LF, BS).