From 945f0edaae25da72817c8594a5537f5157911656 Mon Sep 17 00:00:00 2001 From: Dav999 Date: Sat, 6 Jan 2024 01:56:45 +0100 Subject: [PATCH] Ignore directional control chars in font::len() They're invisible in font::print(), but they were still considered characters with widths in the width function. This change made the levels screen look better in RTL too - I was wondering why the level options were too far left. --- desktop_version/src/Font.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/desktop_version/src/Font.cpp b/desktop_version/src/Font.cpp index 932bd1cd..cc64dadd 100644 --- a/desktop_version/src/Font.cpp +++ b/desktop_version/src/Font.cpp @@ -1233,7 +1233,10 @@ int len(const uint32_t flags, const char* text) uint32_t codepoint; while ((codepoint = UTF8_next(&text))) { - text_len += get_advance(pf.font_sel, codepoint); + if (!is_directional_character(codepoint) && !is_joiner(codepoint)) + { + text_len += get_advance(pf.font_sel, codepoint); + } } return text_len * pf.scale; }