From 2f5d28a864b4c305023096b685817ce8ef5fa5a1 Mon Sep 17 00:00:00 2001 From: Renaud Fivet Date: Sat, 20 Jun 2020 14:25:53 +0800 Subject: [PATCH] Improve UTF-8 display under NetBSD. --- main.c | 2 +- utf8.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index c409d0a..f0f0c2f 100644 --- a/main.c +++ b/main.c @@ -141,7 +141,7 @@ int main(int argc, char **argv) int errflag; /* C error processing? */ bname_t bname ; /* buffer name of file to read */ - setlocale( LC_CTYPE, "") ; /* wide character support (UTF-32) */ + setlocale( LC_CTYPE, "en_GB.UTF-8") ; /* wide character support (UTF-32) */ #if PKCODE & BSD sleep(1); /* Time for window manager. */ diff --git a/utf8.c b/utf8.c index c7dc148..9448356 100644 --- a/utf8.c +++ b/utf8.c @@ -15,8 +15,9 @@ unsigned utf8_width( unicode_t c) { assert( sizeof( wchar_t) == 2) ; /* wcwidth only handles UTF-16 */ return (c < 0x10000) ? (unsigned) wcwidth( (wchar_t) c) : 2 ; #elif BSD - assert( sizeof( wchar_t) == 4) ; /* wcwidth should handle UTF-32 */ - return 1 ; +// assert( sizeof( wchar_t) == 4) ; /* wcwidth should handle UTF-32 */ + int ret = wcwidth( (wchar_t) c) ; + return (ret < 0) ? 1 : (unsigned) ret ; #else return (unsigned) wcwidth( (wchar_t) c) ; #endif