https://gitlab.synchro.net/main/sbbs/-/commit/50a5a194e66000493f55a783
Modified Files:
docs/v322_new.md src/sbbs3/answer.cpp
Log Message:
answer: detect UTF-8 with U+2060 Word Joiner, not obsolete ZWNBSP
Terminal auto-detection has sent U+FEFF (ZWNBSP) after a CR and taken
the second cursor-position report as the verdict since 11d3f59f5a (error-3-cancel, 2019-06-28): column 1 or 2 means UTF-8. Since Unicode
3.2, U+2060 is the in-text zero-width no-break character and U+FEFF is
just the byte-order mark, which a terminal may render as an unsupported character. A UTF-8 terminal drawing a full-width replacement glyph
lands on column 3 and goes undetected.
Probe with U+2060 (E2 81 A0) instead. glibc wcwidth() gives both 0, and
in tmux both leave the cursor where it was, so conforming terminals see
no change. A terminal too old to know U+2060 and drawing it one column
wide still lands on column 2 and is detected, with unicode_zerowidth=1.
The "x < 3" threshold stays: 0x81 is a C1 control in ISO-8859-x, so a
Latin-1 terminal that swallows it prints two glyphs and lands on
column 3, which must not read as UTF-8.
Fixes #1284
Co-Authored-By: Claude Opus 5.5 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net