From 7bc821b434b2b736e7553c498d39e9b3536343f7 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 17 Nov 2021 03:18:36 +0100 Subject: Fix font glyph overlaps --- depends/mgl | 2 +- include/mglpp/system/Utf8.hpp | 8 ++++++++ src/system/Utf8.cpp | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/depends/mgl b/depends/mgl index ccd0e65..c18f87a 160000 --- a/depends/mgl +++ b/depends/mgl @@ -1 +1 @@ -Subproject commit ccd0e65a0ddccd9c52d4c075ec1cad41ae7edb40 +Subproject commit c18f87ad13da518af5ff245dbce2a9e608097ea1 diff --git a/include/mglpp/system/Utf8.hpp b/include/mglpp/system/Utf8.hpp index 4f6a39a..ba1b90e 100644 --- a/include/mglpp/system/Utf8.hpp +++ b/include/mglpp/system/Utf8.hpp @@ -5,7 +5,15 @@ #include namespace mgl { + // Returns false on failure. |decoded_codepoint| is set to |str[0]| if size > 0 and |codepoint_length| is set to 1 bool utf8_decode(const unsigned char *str, size_t size, uint32_t *decoded_codepoint, size_t *codepoint_length); + /* + |str| should be the start of the utf8 string and |size| is the size of the string. + Returns the index of the start of the codepoint that starts at or before |offset|, + or if the string contains invalid utf8 then the index to the invalid character is returned. + Returns 0 if start of codepoint is not found. + */ + size_t utf8_get_start_of_codepoint(const unsigned char *str, size_t size, size_t offset); } #endif /* MGLPP_UTF8_HPP */ diff --git a/src/system/Utf8.cpp b/src/system/Utf8.cpp index be9b2af..a416477 100644 --- a/src/system/Utf8.cpp +++ b/src/system/Utf8.cpp @@ -8,4 +8,8 @@ namespace mgl { bool utf8_decode(const unsigned char *str, size_t size, uint32_t *decoded_codepoint, size_t *codepoint_length) { return mgl_utf8_decode(str, size, decoded_codepoint, codepoint_length); } + + size_t utf8_get_start_of_codepoint(const unsigned char *str, size_t size, size_t offset) { + return mgl_utf8_get_start_of_codepoint(str, size, offset); + } } \ No newline at end of file -- cgit v1.2.3