charWidth function
Returns the display width (number of terminal columns) of a single codePoint.
Wide characters (e.g. CJK, emoji) return 2; control characters return 0.
Implementation
int charWidth(int codePoint) {
if (codePoint < 32) return 0;
if (codePoint < 127) return 1;
if (codePoint < 0xA0) return 0;
if (_isWide(codePoint)) return 2;
return 1;
}