From c18f87ad13da518af5ff245dbce2a9e608097ea1 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 17 Nov 2021 03:15:16 +0100 Subject: Attempt to fix font glyph texture overlap by aligning texture size to next character size Add function to get the start of a utf8 codepoint (backwards), test utf8 functions --- src/system/utf8.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/system') diff --git a/src/system/utf8.c b/src/system/utf8.c index 201fedf..5d5ec79 100644 --- a/src/system/utf8.c +++ b/src/system/utf8.c @@ -73,3 +73,20 @@ bool mgl_utf8_decode(const unsigned char *str, size_t size, uint32_t *decoded_co *decoded_codepoint = codepoint; return true; } + +/* TODO: Optimize (remove branching, etc) */ +size_t mgl_utf8_get_start_of_codepoint(const unsigned char *str, size_t size, size_t offset) { + if(size == 0) + return 0; + + if(offset > size - 1) + offset = size - 1; + + /* i <= offset is an overflow (underflow?) check */ + for(size_t i = offset; i <= offset; --i) { + if((str[i] & 0xC0) != 0x80) + return i; + } + + return 0; +} -- cgit v1.2.3