From 95c5d576fafa2f705e6562f57bab9a9d583c8776 Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Wed, 29 Nov 2017 22:19:10 +0100 Subject: Update UTF-8 base code UTF-8 encodes characters in one to four bytes (since 2003). Because 0 is a valid code point, the decode function utf8_ord() should return -1, not 0, on error. As a consequence utf8_width() should return 0 for a continuation byte (as it did previously). Signed-off-by: Lukas Fleischer --- src/calcurse.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'src/calcurse.h') diff --git a/src/calcurse.h b/src/calcurse.h index f4f0e6c..5bf32cf 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -225,13 +225,10 @@ #define TOSTRING(x) STRINGIFY(x) #define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__) -#define UTF8_MAXLEN 6 -#define UTF8_LENGTH(ch) ((unsigned char)ch >= 0xFC ? 6 : \ - ((unsigned char)ch >= 0xF8 ? 5 : \ - ((unsigned char)ch >= 0xF0 ? 4 : \ +#define UTF8_MAXLEN 4 +#define UTF8_LENGTH(ch) ((unsigned char)ch >= 0xF0 ? 4 : \ ((unsigned char)ch >= 0xE0 ? 3 : \ - ((unsigned char)ch >= 0xC0 ? 2 : 1))))) -#define UTF8_ISMULTI(ch) ((unsigned char)ch >= 0x80) + ((unsigned char)ch >= 0xC0 ? 2 : 1))) #define UTF8_ISCONT(ch) ((unsigned char)ch >= 0x80 && \ (unsigned char)ch <= 0xBF) -- cgit v1.2.3-54-g00ecf