• src/xpdev/unicode.c unicode_defs.h

    From Rob Swindell (on Windows 11)@VERT 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).

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on ChromeOS)@VERT 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’

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT 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) <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net