• docs/v322_new.md src/sbbs3/answer.cpp

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Oct 23 20:52:46 2026
    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