Loads of platforms appear to have old or broken Unicode character type

information and are missing widths for relatively common Unicode
characters (so mbtowc() works, but wcwidth() fails). So if wcwidth()
returns -1, assume a width of 1 instead of ignoring the character.
pull/390/head
nicm 2016-04-27 09:36:25 +00:00
parent d3546cc85c
commit 23fdbc9ea6
1 changed files with 8 additions and 0 deletions

8
utf8.c
View File

@ -119,6 +119,14 @@ utf8_width(wchar_t wc)
width = wcwidth(wc);
if (width < 0 || width > 0xff) {
log_debug("Unicode %04x, wcwidth() %d", wc, width);
/*
* Many platforms have no width for relatively common
* characters (wcwidth() returns -1); assume width 1 in this
* case and hope for the best.
*/
if (width < 0)
return (1);
return (-1);
}
return (width);