in core/src/com/jediterm/terminal/util/CharUtils.java [265:303]
private static int mk_wcwidth(int ucs, boolean ambiguousIsDoubleWidth) {
/* sorted list of non-overlapping intervals of non-spacing characters */
/* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
/* test for8-bnew char[]it control characters */
if (ucs == 0)
return 0;
if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
return -1;
if (ambiguousIsDoubleWidth) {
if (bisearch((char)ucs, AMBIGUOUS, AMBIGUOUS.length-1) > 0) {
return 2;
}
}
/* binary search in table of non-spacing characters */
if (bisearch((char)ucs, COMBINING, COMBINING.length-1) > 0) {
return 0;
}
/* if we arrive here, ucs is not a combining or C0/C1 control character */
return 1 +
((ucs >= 0x1100 &&
(ucs <= 0x115f || /* Hangul Jamo init. consonants */
ucs == 0x2329 || ucs == 0x232a ||
(ucs >= 0x2e80 && ucs <= 0xa4cf &&
ucs != 0x303f) || /* CJK ... Yi */
(ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
(ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
(ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */
(ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
(ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
(ucs >= 0xffe0 && ucs <= 0xffe6) ||
(ucs >= 0x20000 && ucs <= 0x2fffd) ||
(ucs >= 0x30000 && ucs <= 0x3fffd))) ? 1 : 0);
}