From 22b1207455f3682e17078d9ed72a28bc62b2ca77 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 30 Mar 2024 22:34:29 +0100 Subject: [PATCH] fix(bw): add missing UA characters, mapping (#4823) --- radio/src/fonts/std/font_ua_04x06.png | Bin 450 -> 2994 bytes radio/src/fonts/std/font_ua_05x07.png | Bin 571 -> 1670 bytes radio/src/fonts/std/font_ua_08x10.png | Bin 994 -> 2983 bytes radio/src/fonts/std/font_ua_10x14.png | Bin 1303 -> 2436 bytes radio/src/gui/common/stdlcd/utf8.cpp | 79 ++++++++++++++++------- radio/src/targets/taranis/CMakeLists.txt | 4 ++ radio/util/font2png.py | 2 +- 7 files changed, 59 insertions(+), 26 deletions(-) diff --git a/radio/src/fonts/std/font_ua_04x06.png b/radio/src/fonts/std/font_ua_04x06.png index 6d959dc6474bbdbc1c2ddf7c3bb18e845456ff5a..96b1e6b326028860bcb9821168a00d4282bffd8b 100644 GIT binary patch literal 2994 zcmb_e1y~dPAD?1ipkgbEb6AMC-QD_NC~PQGhKN&9tlI@U*>-bxz(BFPyE`yY>`rX# zZfvo;`~7Xe^nL%l@%a4rJh%Pg8=r4{?z@pO(XD*S)-Ed$2z>OBx>)d=2cFX2Uf?@u zRd$v@;3bHOGDd)Hv0}xF7ccJRh)#`M*h=_=mEnBu~)haSFQm@yyZr!>~n>JBVQ3it{Iy$;-+qN+=G40y5 zi;azK-@d)kXzb9TL&uICJ9X+57Z=yLbLTEyy2QuFckSA>TeoiAyLa!=qesu4J#id2 znM?#hkR(Y_6iw3!2?=JinPHe-y?P}kCR!{OtJP|=*;tmf+wHx3_jWiO9LMoIpOlo8 zoSdAJlHznaQ&UsZ($f0$>C?Aw-}LnKe*OCO@85sGfB^#s4jeRS(BQ#?hYT4qbm-7w z!-fqXK77Q85hF*A95rgx=+UFcj2Sa_?AUSR#*H68e!_$a6DLlbG-=Z0$&;r{nKE_i z)M?YEO`kq}#*7&=XU?28Yu4=9v**m2Gk5OXdGqGYpFe-Wf&~i~E?l%|(c;C6mn>Pb zbm`KJjErT=mMvete8q|tD_5?}%*(;Gbzkb7p4I4LZ z+_Y)a=FOY8Y}vAP>(*`Cwr$_OeaDU+J9qBfwQJYz-Mjbf*|T@=-t6q`ef#$9-@pIB zfddB*9z1mD(BZ>}j~qFYlaq7w=+R@xjvYUK{KSb9Cr_R{b?VgV)2GjzIdk^x*>mU4 zoj-s6!i5VLFJ8QK>C)xPm#ymjl=?c2BS+_`i2 z?%jL$?%ltCKQAxu!Gi}6A3l8a=+WcHkDokw^7QG`XV0EJfByW%ix)3nzI^rS)$7-< z-@JMA_U+qu@7}$C|Ng^=4(_7JzJ34x{l||Vch+`G2OKD4 zkL=6|1m&u@o??Pob7}&zj9`p$e4HT)BUq~#Cs`9Ec3SN~S|A8%?zH1XBE<_$R03nu zh+gd2BN8&CM$}1efDLvnWo9DN98~+XXd{u9NT^9s^H5=k69WdU6pss?R*Q|poEnka zE(X@FV~I%U7U2^$qA-_3VVogGsAV0LP$7mP0)|l`f+)m@LZ(zGnh8-DMISm4I;Wj|jMPkTe#nYgyn7>@*@X&)YGH1azc0MJi?;2|!n^cG*Bt2uMI&s*T5; zkc|r{w4kFn!ok>ihP4S@7I71s#A`$VYJLn>yT`1JE65Ybn8b8Fu}Kbsibw`916j7e2NFbWp=q6U^^=+wW6s*MPO$rPZ#e-Z^fL*hLCufimO z(X7LYgMb+;o_YeJxn8S{aj-OF0T()!7q-F~8|b=*ZlneS zrnhlCZX+nYP9p+&5i<;l$w?(_B4{;)<4PQos%0ujjVM95ausb-n{Y%$lZE;^mPm3{ zzfhk9`Y>%mXq3buN+Bm8f|enW3RlV@gvOG7^Sp1mLA)G8DoI1qG>4se(il3OS`9 zLL@Hw02BGl1PfQnTp<%Cl%_~p4wt%Mo3B~V~iNJPIM%ztB9k#+drcgg=R75o|o;m9l|6Il%Dj_aPGkgZF@57iLr)n>$5cd9TpB#DgF6pVwLBy|u*T z!3}+xmN7Y@EyBZ(q(`1^T=_(=`0c@jGacc^rD*%q@_m$>X%C;{e^s*iM6P7G|J!Og z!BwjF+BmH#k}l1BxnOFk%~hX9r3X$5hkp2OY4D)jtU*27#vi%9KUeQ}nck}PU8l$@ zzw7vlFR^~FN9U1_<$0w;2Bv=)lcUdAwyyqtKR)7I7+q`LRdYI;8Kml7DdWJKfb0xr tjX8d1HB}4hG~OY2ga7VGA~`U--Xy%+o`b`EPP+a{=p&+aS>Zhg{Q;s(Q&|82 literal 450 zcmV;z0X_bSP)Px#1am@3R0s$N2z&@+hyVZqY)M2xRA_3_c$gm&Kc@gT?G+-ZrY!+pYFs zMjz!H*|54I{fI}!zvADw`FEKDYNmZqgL}OZkiST$A2uQmld&fDbws(0`hxN{y~s8b zm(}(pGBb>9QN5mo{u#}u_=o)z|8lmg{ChE{(Ty7ob>zB_`J{}@>a3w)3U7^JWoxx}~P>{~ZDvCoUtD6{25N+*QQ&v*YA>(jJGXm6= zQy)>JrUs}1Z45*C06P1lVLI~46=r>tR%TQ1cAl~+8#3;IZGRMV_8E8+KQ!_ zj)n}<)hNf&h!dc&t3?jFSy5})r8wb;v02$jgx?o&YSeS-7G#nda z`3lxdA_v(?^e?I_*Eblzv5iJ6Hg4*Ru2)RhPUk45Q3}XS(ROUiglr$Q(TJtM&Qa`U zqsztwK?}+bvSJ9O%bDseyG#l^Bao{HG($xhyJ?XC49N}*P&jKM&9%^i6vHX=dVwf5 za{}PFA~cFrEiv{_C=Uc4a5qA6&8V^?-x91UAb~7h#)LIp9)hfC3{hkyj39{8$ijwQ z?-rj&g27%3CA2iYu=~2!labD#kC%KtT44BsyU{3!7`7uD3XFsT6b=rfX)2H;0ZJ}U z(I-I~dPP4S7oneSm3&@54>>9BSIhDtq>Q*FP?lH!r~D>M!#yacZ(EPsnQrZXux8_| zj+I)c9}bsxX^kwD3y>AJ4FZ(n<{x4P#bfQZBT$sjBq3J%A9YcL*(l*;WD9l-;b`5m z?pW+R>o#nW2m5!5g}X(~U54X{;chFl3cpmQ9W?NWv+yi?K&!cnAUsu(P)E$a=fjxi z&Z>v2XY%=LOzmtoKKc!wNe62WFZFKygj-0}&3*dA#kZe5JMhzR=Cj7(qut5`n19)m z-P`q4YVY|`N^RY7fW7*a)U@j2<>aq5zddr{QuF?a-024K?C+D08R7|jzV5~EHt(6) zvGVk?%i;^O_fWIvrjpZ39zQpA;gutQo)PQczc07^GadW+4A8{mI#@UpD1p zbHBW|`O<^_r@Md59ai4ja_#dEMEV%G?w!_%Z`aM7KecQBf~W0D;-PV+`cV7Sp;sf% aujn|ju4^P)Px#1am@3R0s$N2z&@+hyVZqBgd*0Zvgz+XUvZe8hOdy{9JrfAZtr>qb**{Gn zI~wq}CXfdSXJlT;1Z06ld!WmUWS%0y_^k9Ts;d=rc1bOJQ9fGdWS0x+vSgHgN>~k8 zIPg2_v4KQ%+8H*LH;fsfwRcG;5ufC;4UyeOfG$3 zof2Kf8BWqh6f=9X#wB^Z-GE0MtO-XNF#Bfl$@peXAR3=c1Ge(ddf}oqGY!}}H%|km z1rP<*3N&&IIqL05S~0U;LD`GVxI}d`>zM9{nPk&+W%97skmRAo%KLg{oKXH*dRqQT zyKJ;OCI8qYB@d0ExfSLm$Q0M>v002ov JPDHLkV1mVX{z(7; diff --git a/radio/src/fonts/std/font_ua_08x10.png b/radio/src/fonts/std/font_ua_08x10.png index ecea362710ce9a0c1c7bc5faf242b63d8136dce1..b503f4f521255f817b07b2edeadbe38150ab0771 100644 GIT binary patch literal 2983 zcmbVO30M;A8b--AZL>^mal&lVff-N)5=+695+kLwvSok)Nni+2(XwpMHcKn5%*x6Z zvnPT+ z&kZ6FjMVtr%AAP*1_*5NKO#X8AoRsAjf{+pjg5&!Vy8}>OiWBnO-;?r%*@TrEi5c7 zEiF5D?rddcWo>QUrAwEtUAuPc)~$Q@?mc?+u(7e}*|TS_UcGE>ZF~3bZD(g^Z*TA5 z;LxW}pT2$j_UqTLfB*iDj*b8T3>YwgL?SskISm{*(An8}(4aws2M-=HWXRB=Lx&9; z=HlYw>go!DAel_2P$&=t!7xmvQfV}ro12@vyE~mu_wevwFc?fGlf_~UA3ogE)053+ zdwF?{7%^hx$dTUO-abA)91e%e<@);ijv6(}&(F`_-=D|hjUGLE%$P9&0RenIKQJ(G z?AWmafneOYaX~>r!NI{op>X{8@e?LY2nh)Z4Go<*apI&&lO|7|92OQfWy+MPQ>RXw zHf{R!=?H>|L?W?RERjf16qQP)GMOwqJX|i9&zLbIA|gVeP$-p3l}d$Sm|Cr#Idi5) zqtR-$I-M>uGBPSEDmpq^uh+-K#KgwN&YCrA_UzeladC6z%$YlPZhU&?k)oa$QNlHpe zPEKCCcI~=#>(;MdpOTW2nwq*{!-kC;H*VUrDJ?B+^XARz>FHaxY}vYX>$Yv%GBPr@ zZ{NOS$BvylcV=d0?%K6$_wL<$_UzfacW+i!*1moFva_@I@85smz=52coP!4s9y)X= zH#hh2;loFc9LdYeJ9_l!v17-MA3uKL#EFw9Po6q;>h$T;`T6+;1qFqLg=fy3IeYeO zQBl#kbLY;VKY!uEh2rAkl9G~(7cXAAbm{Wt%U7;kxq9_#X=&-TYuBz{zkcJ!jhi=b zmX(#=x^?UJ?c3$$=%@#Dvpm6cUhRn^ti zPo6w^`t<3uXV0ELe_m5l^Ww#emoHzwdiCn{>(_7Iym|Zf?YnpH-oJleTU-0#!-u-M zy88P1j~_oaG&Fqr^r^A2@$=`;U%q_#`t@s5Q`5I^-@bqU-rU^$81QVfTz0xp71cK)Xy&4fmpgKT=%H%3G z>HWz95+IkbNg?ihh_B|L;d1|24H_I9C=|y=h?x@72rs}>&%z0ms15=2N`*?x(z8h| zyexcexJ@AeEf8GsH0~ghbHFC91j;R0xBO<~gb!-wYwKWE%x`S4wZOap$F^V2hQ(!V=h^YlA z5qIF!ks3vdbBUOODo`b=(rIxl+<{exV>(P5j{OC7$M*j?z;nyzclh|N7NxSog;wVq zg@@6Wkl&)U!WcD52|~44q(+STM&UA@4AH1r91V)-FpUty6z!D~v`Yr4FqsMr36ZNL zShRNNPX;I#(V=V-UNtumqJdNoAUFiI^qDG)e>ySgu55C`GN3k${dgvN)Im)8LK`>VCe@<8TBTOe$C48(d5W_#tu? z-gV9`O8I;iPo>o%Dly9AvPpPe$a1-a1=HP8CJMWQQmLCeNQK%pf+B>$#1C_k z*j);@+jB8-q@nul_7a0VB%+B#ZU{&fyNN(ZjN3DqA`vJ-m`s@J!Jt7BTD$#NjT|38 zMDeeA@G1Fk7TQ_7@rbl|d9`gbSJJ0A~fHcTX&BsR1n zDj~JqmjA9I|0tuaw9(-xPWm@3+6vQRQe8BnLA_;o_5L^ll)n9hL z$ow1WZD|#UBPtn+pYIfsA()oBwibo*YrR_bemXSU;rK~xSav)E@QaS82&%%VHTW|^ zkg@U`{z`U}$MqJ57ClR;(i8z!3mTd!+28$hP{iS$;_}1thVu1xM8`a+QbxJc`$0p! zw8^gAE1@Fl?mWl1>Zm6Dc@Nlg&Z-)}C-RcA9-^WrU|<Vs`n#!H9?j0X%(H!DmX7#)A@c2dMK)67S3kV9U4@-xQf zdBl-(7gc3(XihbC)n$@pqxy$UI}~s>&2LEePA(y@>*>klte!7_7}xfy%}>o!qq*CD fyq=L*jBT9uJ$v0tUd%Gs@cO{>4dm|knLhtNb;x^E literal 994 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 N002ovPDHLkV1l7Jj8y;t diff --git a/radio/src/gui/common/stdlcd/utf8.cpp b/radio/src/gui/common/stdlcd/utf8.cpp index 8513c0bcf77..55b5073322d 100644 --- a/radio/src/gui/common/stdlcd/utf8.cpp +++ b/radio/src/gui/common/stdlcd/utf8.cpp @@ -26,13 +26,13 @@ #include "translations/untranslated.h" #if defined(TRANSLATIONS_FR) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'é', L'è', L'à', L'î', L'ç', }; #if !defined(COLORLCD) #define UTF8_SUBS_LUT -static wchar_t _utf8_substitution_lut[] = { +static uint16_t _utf8_substitution_lut[] = { L'Â', L'A', L'À', L'A', L'Ê', L'E', @@ -50,15 +50,15 @@ static wchar_t _utf8_substitution_lut[] = { }; #endif #elif defined(TRANSLATIONS_DA) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'å', L'æ', L'ø', L'Å', L'Æ', L'Ø', }; #elif defined(TRANSLATIONS_DE) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'Ä', L'ä', L'Ö', L'ö', L'Ü', L'ü', L'ß', }; #elif defined(TRANSLATIONS_CZ) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'á', L'č', L'é', L'ě', L'í', L'ó', L'ř', L'š', L'ú', L'ů', L'ý', L'Á', L'Í', L'Ř', L'Ý', L'ž', L'É', L'ň', @@ -66,7 +66,7 @@ static wchar_t _utf8_lut[] = { #if !defined(COLORLCD) #define UTF8_SUBS_LUT -static wchar_t _utf8_substitution_lut[] = { +static uint16_t _utf8_substitution_lut[] = { L'Ě', L'ě', L'Š', L'š', L'Č', L'č', @@ -78,33 +78,33 @@ static wchar_t _utf8_substitution_lut[] = { }; #endif #elif defined(TRANSLATIONS_ES) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'Ñ', L'ñ', L'Á', L'á', L'É', L'é', L'Í', L'í', L'Ó', L'ó', L'ú', }; #elif defined(TRANSLATIONS_PT) -static wchar_t _utf8_lut[] = { +static uint16_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[] = { +static uint16_t _utf8_lut[] = { L'å', L'ä', L'ö', L'Å', L'Ä', L'Ö', }; #elif defined(TRANSLATIONS_IT) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'à', L'ù', }; #elif defined(TRANSLATIONS_PL) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'ą', L'ć', L'ę', L'ł', L'ń', L'ó', L'ś', L'ż', L'ź', L'Ą', L'Ć', L'Ę', L'Ł', L'Ń', L'Ó', L'Ś', L'Ż', L'Ź', }; #elif defined(TRANSLATIONS_RU) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'А', L'Б', L'В', L'Г', L'Д', L'Е', L'Ж', L'З', L'И', L'Й', L'К', L'Л', L'М', L'Н', L'О', L'П', L'Р', L'С', L'Т', L'У', L'Ф', @@ -117,20 +117,46 @@ static wchar_t _utf8_lut[] = { L'я', }; #elif defined(TRANSLATIONS_UA) -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'Ч', L'Ш', L'Щ', L'Ъ', L'Ы', - L'Ь', L'Э', L'Ю', L'Я', L'а', L'б', L'в', - L'г', L'д', L'е', L'ж', L'з', L'и', L'й', - L'к', L'л', L'м', L'н', L'о', L'п', L'р', - L'с', L'т', L'у', L'ф', L'х', L'ц', L'ч', - L'ш', L'щ', L'ъ', L'ы', L'ь', L'э', L'ю', - L'я', +#if !defined(COLORLCD) +#define UTF8_SUBS_LUT +// Warning, albeit the following table looks useless +// It does translate Cyrillic to Latin +static uint16_t _utf8_substitution_lut[] = { + L'А', L'A', + L'а', L'a', + L'В', L'B', + L'С', L'C', + L'с', L'c', + L'Е', L'E', + L'е', L'e', + L'Н', L'H', + L'К', L'K', + L'М', L'M', + L'І', L'I', + L'і', L'i', + L'О', L'O', + L'о', L'o', + L'о', L'o', + L'Р', L'P', + L'р', L'p', + L'Т', L'T', + L'Х', L'X', + L'х', L'x', + L'у', L'y' +}; +#endif + +static uint16_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'г', 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_SE) -static wchar_t _utf8_lut[] = { +static uint16_t _utf8_lut[] = { L'å', L'ä', L'ö', L'Å', L'Ä', L'Ö', }; #else @@ -138,6 +164,9 @@ static wchar_t _utf8_lut[] = { #endif #if !defined(NO_UTF8_LUT) +#define MAX_TRANSLATED_CHARS 107 +static_assert(sizeof(_utf8_lut) / sizeof(_utf8_lut[0]) <= MAX_TRANSLATED_CHARS, "Number of translated chars exceeds the limit"); + static unsigned char lookup_utf8_mapping(wchar_t w) { for (uint32_t i=0; i < DIM(_utf8_lut); i++) { @@ -149,7 +178,7 @@ static unsigned char lookup_utf8_mapping(wchar_t w) #endif #if defined(UTF8_SUBS_LUT) -static wchar_t lookup_utf8_substitution(wchar_t w) +static uint16_t lookup_utf8_substitution(wchar_t w) { for (uint32_t i=0; i < DIM(_utf8_substitution_lut); i+=2) { if (w == _utf8_substitution_lut[i]) diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 5ca8efb04c3..741d3615736 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -507,6 +507,10 @@ else() message( FATAL_ERROR "Unknown CPU_TYPE_FULL" ) endif() +if(TRANSLATIONS STREQUAL UA AND NOT TARGET_FLASH_SIZE STREQUAL 1M) + set(PXX2 OFF) +endif() + if(ENABLE_SERIAL_PASSTHROUGH) set(CLI ON "Enable CLI") endif() diff --git a/radio/util/font2png.py b/radio/util/font2png.py index b4ea283a7d2..cc0528ae6ca 100644 --- a/radio/util/font2png.py +++ b/radio/util/font2png.py @@ -17,7 +17,7 @@ chars_pl = u"""ąćęłńóśżźĄĆĘŁŃÓŚŻŹ""" chars_pt = u"""ÁáÂâÃãÀàÇçÉéÊêÍíÓóÔôÕõÚú""" chars_ru = u"""АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя""" -chars_ua = u"""АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯабвгґдеєжзиіїйклмнопрстуфхцчшщьюя""" +chars_ua = u"""БГҐДЄЖЗИЇЙЛПУФЦЧШЩЬЮЯбвгґдєжзиїйклмнптфцчшщьюя""" COUNT_EXTRA_CHARS = 21