From bc5696e5bbd4739691f53563f3506b30b9be1ad3 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Thu, 1 Jun 2023 00:18:08 +0200 Subject: Simplify rendering and prepare for props Mark rendering is now a lot simpler and uses "properties". --- src/dged/utf8.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/dged/utf8.c') diff --git a/src/dged/utf8.c b/src/dged/utf8.c index abf5ef7..30344be 100644 --- a/src/dged/utf8.c +++ b/src/dged/utf8.c @@ -1,6 +1,7 @@ #include "utf8.h" #include +#include bool utf8_byte_is_unicode_start(uint8_t byte) { return (byte & 0xc0) == 0xc0; } bool utf8_byte_is_unicode_continuation(uint8_t byte) { @@ -65,3 +66,19 @@ uint32_t utf8_nbytes(uint8_t *bytes, uint32_t nbytes, uint32_t nchars) { return bi; } + +uint32_t utf8_visual_char_width(uint8_t *bytes, uint32_t len) { + if (utf8_byte_is_unicode_start(*bytes)) { + wchar_t wc; + size_t nbytes = 0; + if (nbytes = mbrtowc(&wc, (char *)bytes, len, NULL) > 0) { + return wcwidth(wc); + } else { + return 0; + } + } else if (utf8_byte_is_unicode_continuation(*bytes)) { + return 0; + } else { + return 1; + } +} -- cgit v1.2.3