From 325de78d0f9edfae088c45da253f51c45902eaca Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 27 Mar 2024 01:49:25 +0100 Subject: [PATCH] fix(bw): missing PT special chars handling (#4806) Co-authored-by: philmoz --- radio/src/fonts/sqt5/font_pt_04x06.png | Bin 130 -> 1702 bytes radio/src/fonts/std/font_pt_04x06.png | Bin 284 -> 1702 bytes radio/src/gui/128x64/lcd.cpp | 2 ++ radio/src/gui/212x64/lcd.cpp | 1 + radio/src/gui/common/stdlcd/utf8.cpp | 7 +++++++ 5 files changed, 10 insertions(+) diff --git a/radio/src/fonts/sqt5/font_pt_04x06.png b/radio/src/fonts/sqt5/font_pt_04x06.png index b3bc84800816a5ce210810e5e8f9b114886dea1b..0058383f08e3161fcce2353e4a45c7664c05fe3a 100644 GIT binary patch literal 1702 zcmbVNU5MON6ppfDyGvix7Fk5YtwM{N|H;H$Hr=i}+uec9y6z4*eNcLHbCZcP$xV~Y z&g>TaS)sLkkiHa4S?EivpwPaQzW5+0NZ$kzK@cBA#D{|HgCGU1H}ezPx?7h9lH4TU zIp;g)JNM-5(&F5{(eY7^3EB6h<#x8f$Jx-r5{lJO4lgUAAZeDNjV1J?p?=(cRfGo%sB zuP0<>eX)kuo7i;0)DeEN3z>tEWQgyEttf?E3-tU#w$5KmfbT)FrUj<+fPCFv;%8_= zcvDmaEXyiyn4;?-%|)7{Pw=X&YLcQ#iY_QJEU8d4_`v~Kz{K_7a^=_{9DA}rBg}VoQd`U4)Q<7ClRRx9+(zPf*Di$0a$fy zyNIzZmoO|sq}l8$OJh)wZP96MEhf@3NohO5WOkL&JeX$_!*952RDMG32lm$n2WPzBDsv&|)Iz~hL3dQYQ+o8S7?9GzvDVk{rhGOWaL>=?O#g*w!Kj6k^SVGE^i7rAEZpKwZWcPAtwi`R>1fA03w|Cw*_!6 zEOEi$b+AnZc9%ilZKpw)(}&32ho#iZIw&F2KC9L)8cN!Ueu`EfPJVat?L_{827EN~ zgVN##ihROmrUdeIq{^WxXZ`W7aCl;Rh{`mQkQSJcO;`eThynpTUg-#7zy7}|# zpT4EsG3wt;T)BFE?&O=V+<1QCv(1mUk_#)%W2hs(G&VQxz`vdgPG3DYd;O=2fA06| z?~Gh7o&M<7#F<~W9zTEP@8;&*yXU^UTaS)sLkkiHa4S?EivpwPaQzW5+0NZ$kzK@cBA#D{|HgCGU1H}ezPx?7h9lH4TU zIp;g)JNM-5(&F5{(eY7^3EB6h<#x8f$Jx-r5{lJO4lgUAAZeDNjV1J?p?=(cRfGo%sB zuP0<>eX)kuo7i;0)DeEN3z>tEWQgyEttf?E3-tU#w$5KmfbT)FrUj<+fPCFv;%8_= zcvDmaEXyiyn4;?-%|)7{Pw=X&YLcQ#iY_QJEU8d4_`v~Kz{K_7a^=_{9DA}rBg}VoQd`U4)Q<7ClRRx9+(zPf*Di$0a$fy zyNIzZmoO|sq}l8$OJh)wZP96MEhf@3NohO5WOkL&JeX$_!*952RDMG32lm$n2WPzBDsv&|)Iz~hL3dQYQ+o8S7?9GzvDVk{rhGOWaL>=?O#g*w!Kj6k^SVGE^i7rAEZpKwZWcPAtwi`R>1fA03w|Cw*_!6 zEOEi$b+AnZc9%ilZKpw)(}&32ho#iZIw&F2KC9L)8cN!Ueu`EfPJVat?L_{827EN~ zgVN##ihROmrUdeIq{^WxXZ`W7aCl;Rh{`mQkQSJcO;`eThynpTUg-#7zy7}|# zpT4EsG3wt;T)BFE?&O=V+<1QCv(1mUk_#)%W2hs(G&VQxz`vdgPG3DYd;O=2fA06| z?~Gh7o&M<7#F<~W9zTEP@8;&*yXU^U{QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIO>_%)r1c48n{Iv*t(u1=&kHeO=ifGVw7eD^?0Cz6J{Md%8G=a9mIR(a$B3afY4Y z(V>hPy+O<6fKsX@t`Q|Ei6yC4$wjF^iowXh&|KHRNY~IL#K6GH*wo6{SlhtR%D}*3 hviTDf4Y~O#nQ4`{H5i`jj{s_5@O1TaS?83{1OWN`MPmQ} diff --git a/radio/src/gui/128x64/lcd.cpp b/radio/src/gui/128x64/lcd.cpp index a8b40a141..47c25b1a5 100644 --- a/radio/src/gui/128x64/lcd.cpp +++ b/radio/src/gui/128x64/lcd.cpp @@ -262,6 +262,7 @@ uint8_t getTextWidth(const char * s, uint8_t len, LcdFlags flags) while (len--) { #if !defined(BOOT) unsigned char c = map_utf8_char(s, len); + if (c >= 0x95 && FONTSIZE(flags)) c -=21; #else unsigned char c = *s; #endif @@ -305,6 +306,7 @@ void lcdDrawSizedText(coord_t x, coord_t y, const char * s, uint8_t len, LcdFlag else if (c >= 0x20) { // UTF8 detection c = map_utf8_char(s, len); + if (c >= 0x95 && fontsize) c -=21; if (!c) break; lcdDrawChar(x, y, c, flags); diff --git a/radio/src/gui/212x64/lcd.cpp b/radio/src/gui/212x64/lcd.cpp index 0665479a9..318c10358 100644 --- a/radio/src/gui/212x64/lcd.cpp +++ b/radio/src/gui/212x64/lcd.cpp @@ -309,6 +309,7 @@ void lcdDrawSizedText(coord_t x, coord_t y, const char * s, uint8_t len, LcdFlag #if !defined(BOOT) // UTF8 detection c = map_utf8_char(s, len); + if (c >= 0x95 && FONTSIZE(flags)) c -=21; if (!c) break; if (c == 46 && FONTSIZE(flags) == TINSIZE) { // '.' handling diff --git a/radio/src/gui/common/stdlcd/utf8.cpp b/radio/src/gui/common/stdlcd/utf8.cpp index 5ac1fdd30..e7dcb627b 100644 --- a/radio/src/gui/common/stdlcd/utf8.cpp +++ b/radio/src/gui/common/stdlcd/utf8.cpp @@ -81,6 +81,13 @@ static wchar_t _utf8_lut[] = { L'Ñ', L'ñ', L'Á', L'á', L'É', L'é', L'Í', L'í', L'Ó', L'ó', L'ú', }; +#elif defined(TRANSLATIONS_PT) +static wchar_t _utf8_lut[] = { + L'Á', L'á', L'Â', L'â', L'Ã', L'ã', L'À', + L'à', L'Ç', L'ç', L'É', L'é', L'Ê', L'ê', + L'Í', L'í', L'Ó', L'ó', L'Ô', L'ô', L'Õ', + L'õ', L'Ú', L'ú', +}; #elif defined(TRANSLATIONS_FI) static wchar_t _utf8_lut[] = { L'å', L'ä', L'ö', L'Å', L'Ä', L'Ö',