From c375c4b217f4e4203d2e982ef33a505af9e28358 Mon Sep 17 00:00:00 2001 From: Jakub <106778416+MarekZegare4@users.noreply.github.com> Date: Sun, 24 May 2026 14:47:06 +0200 Subject: [PATCH] fix(eink): pass UTF-8 through unchanged when Lemon font is active MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit drawTextCentered/Left/Right/Ellipsized all call translateUTF8ToBlocks before passing text to print(), which converted Cyrillic (and other Unicode) to block characters even when the Lemon font was selected. Override translateUTF8ToBlocks in GxEPDDisplay to skip conversion when _use_lemon is true — the Lemon/GFX font handles UTF-8 natively. Co-Authored-By: Claude Sonnet 4.6 --- src/helpers/ui/GxEPDDisplay.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/helpers/ui/GxEPDDisplay.h b/src/helpers/ui/GxEPDDisplay.h index afea0a4f..06c37d26 100644 --- a/src/helpers/ui/GxEPDDisplay.h +++ b/src/helpers/ui/GxEPDDisplay.h @@ -86,6 +86,14 @@ public: } void setLemonFont(bool enabled) override { _use_lemon = enabled; _vw_dirty = true; } bool isLemonFont() const override { return _use_lemon; } + void translateUTF8ToBlocks(char* dest, const char* src, size_t dest_size) override { + if (_use_lemon) { + strncpy(dest, src, dest_size - 1); + dest[dest_size - 1] = '\0'; + } else { + translateUTF8Static(dest, src, dest_size); + } + } bool begin(); bool isOn() override { return _isOn; }