• src/xpdev/unicode.c unicode_defs.h

    From Rob Swindell (on Windows 11)@1:103/705 to Git commit to main/sbbs/master on Thu Feb 15 21:37:00 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/3b4ec79b4aa0b5bccc389526
    Modified Files:
    src/xpdev/unicode.c unicode_defs.h
    Log Message:
    Better unicode character display-width calculation (in columns)

    Tested with Windows Terminal Version: 1.18.10301.0 and all codepoints between 0x100 and 0x1FFFF, this change reduces the width mismatches from > 8000 to
    349. The "Zero width" mismatches are probably the most important/glaring and will need to be addressed next (since some terminals don't move the cursor
    for zero width chars, and some do).
    --- SBBSecho 3.20-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on ChromeOS)@1:103/705 to Git commit to main/sbbs/master on Thu Feb 20 20:47:28 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/e616456630ff07132475b1b4
    Modified Files:
    src/xpdev/unicode.c unicode_defs.h
    Log Message:
    Define/use UNICODE_VERTICAL_LINE

    Resolve GCC warning: case value ‘124’ not in enumerated type
    ‘enum unicode_codepoint’
    --- SBBSecho 3.23-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)
  • From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Wed Jul 29 23:14:42 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/fc331f0f3e988c2119ab9507
    Modified Files:
    src/xpdev/unicode.c unicode_defs.h
    Log Message:
    xpdev: approximate the remaining dashes as an ASCII hyphen for CP437

    unicode_to_cp437() knew about EM DASH but not the four narrower dashes,
    so U+2010 HYPHEN, U+2011 NON-BREAKING HYPHEN, U+2012 FIGURE DASH and
    U+2013 EN DASH had no CP437 equivalent and came out as the unsupported character. CP437 has an exact glyph for none of them but a perfectly good approximation in the ASCII hyphen, which is already what
    utf8_normalize_str() folds all four into.

    This only shows up on the paths that convert without normalizing first;
    where both run, normalization gets there first and the result is the same either way.

    Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)