From 030e2d68d64789731f7db53c7c6752368e81b2fd Mon Sep 17 00:00:00 2001 From: MysterD Date: Thu, 20 Apr 2023 20:54:19 -0700 Subject: [PATCH] Added cyrillic to normal/tiny fonts --- src/pc/djui/djui_unicode.c | 96 +++++++++++++++++- .../custom_font/custom_font_normal.rgba32.png | Bin 10129 -> 14680 bytes .../custom_font/custom_font_tiny.rgba32.png | Bin 3196 -> 4848 bytes 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/src/pc/djui/djui_unicode.c b/src/pc/djui/djui_unicode.c index 4f0d2fcf..90e4edbf 100644 --- a/src/pc/djui/djui_unicode.c +++ b/src/pc/djui/djui_unicode.c @@ -2,6 +2,7 @@ #include #include #include +#include #include "data/dynos_cmap.cpp.h" #define SPRITE_INDEX_START_CHAR '!' @@ -82,6 +83,80 @@ struct SmCodeGlyph sSmCodeGlyphs[] = { { "¡", '!', 0, 0 }, { "¿", '?', 0.3750f, 0 }, + + { "Б", 15, 0, 0 }, + { "Г", 14, 0, 0 }, + { "Д", 17, 0, 0 }, + { "Ж", 17, 0, 0 }, + { "З", 13, 0, 0 }, + { "И", 15, 0, 0 }, + { "Й", 15, 0, 0 }, + { "Л", 13, 0, 0 }, + { "П", 14, 0, 0 }, + { "У", 12, 0, 0 }, + { "Ф", 17, 0, 0 }, + { "Ц", 14, 0, 0 }, + { "Ч", 11, 0, 0 }, + { "Ш", 17, 0, 0 }, + { "Щ", 17, 0, 0 }, + { "Ъ", 13, 0, 0 }, + { "Ы", 17, 0, 0 }, + { "Ь", 12, 0, 0 }, + { "Ѣ", 14, 0, 0 }, + { "Э", 13, 0, 0 }, + { "Ю", 17, 0, 0 }, + { "Я", 13, 0, 0 }, + { "Є", 12, 0, 0 }, + + { "а", 13, 0, 0 }, + { "б", 11, 0, 0 }, + { "в", 11, 0, 0 }, + { "г", 10, 0, 0 }, + { "д", 12, 0, 0 }, + { "ж", 15, 0, 0 }, + { "з", 13, 0, 0 }, + { "и", 12, 0, 0 }, + { "й", 12, 0, 0 }, + { "к", 9, 0, 0 }, + { "л", 10, 0, 0 }, + { "м", 11, 0, 0 }, + { "н", 11, 0, 0 }, + { "п", 11, 0, 0 }, + { "т", 11, 0, 0 }, + { "ф", 14, 0, 0 }, + { "ц", 11, 0, 0 }, + { "ч", 9, 0, 0 }, + { "ш", 17, 0, 0 }, + { "щ", 17, 0, 0 }, + { "ъ", 14, 0, 0 }, + { "ы", 17, 0, 0 }, + { "ь", 12, 0, 0 }, + { "ѣ", 13, 0, 0 }, + { "э", 12, 0, 0 }, + { "ю", 16, 0, 0 }, + { "я", 12, 0, 0 }, + { "є", 12, 0, 0 }, + +}; + +struct SmCodeGlyph sSmCodeDuplicateGlyphs[] = { + { "А", 'A', 0, 0 }, + { "В", 'B', 0, 0 }, + { "Е", 'E', 0, 0 }, + { "К", 'K', 0, 0 }, + { "М", 'M', 0, 0 }, + { "Н", 'H', 0, 0 }, + { "О", 'O', 0, 0 }, + { "Р", 'P', 0, 0 }, + { "С", 'C', 0, 0 }, + { "Т", 'T', 0, 0 }, + { "Х", 'X', 0, 0 }, + { "е", 'e', 0, 0 }, + { "о", 'o', 0, 0 }, + { "р", 'p', 0, 0 }, + { "с", 'c', 0, 0 }, + { "у", 'y', 0, 0 }, + { "х", 'x', 0, 0 }, }; static void* sCharMap = NULL; @@ -123,6 +198,22 @@ void djui_unicode_init(void) { struct SmCodeGlyph* glyph = &sSmCodeGlyphs[i]; glyph->spriteIndex = (128 + i) - SPRITE_INDEX_START_CHAR; + u64 key = convert_unicode_char_to_u64(glyph->unicode); + s32 bytes = count_bytes_for_char(glyph->unicode); + assert(bytes >= 2 && bytes <= 4); + assert(key > 127); + hmap_put(sCharMap, key, glyph); + printf(">>> %llu\n", key); + } + + // add duplicate glyphs + size_t dupCount = sizeof(sSmCodeDuplicateGlyphs) / sizeof(sSmCodeDuplicateGlyphs[0]); + for (size_t i = 0; i < dupCount; i++) { + struct SmCodeGlyph* glyph = &sSmCodeDuplicateGlyphs[i]; + assert((u32)glyph->base < 128); + assert((u32)glyph->base > SPRITE_INDEX_START_CHAR); + glyph->spriteIndex = ((u32)glyph->base) - SPRITE_INDEX_START_CHAR; + u64 key = convert_unicode_char_to_u64(glyph->unicode); s32 bytes = count_bytes_for_char(glyph->unicode); assert(bytes >= 2 && bytes <= 4); @@ -178,6 +269,9 @@ f32 djui_unicode_get_sprite_width(char* text, const f32 font_widths[]) { // use the custom width return glyph->width; } + if ((u8)glyph->base < (u8)'!') { + return glyph->base; + } // use the base width return font_widths[(u8)glyph->base - SPRITE_INDEX_START_CHAR]; } @@ -255,7 +349,7 @@ char djui_unicode_get_base_char(char* text) { if ((u8)*text < 128) { return *text; } u64 key = convert_unicode_char_to_u64(text); struct SmCodeGlyph* glyph = hmap_get(sCharMap, key); - return (glyph != NULL) ? glyph->base : '?'; + return (glyph != NULL || ((u8)glyph->base < (u8)'!')) ? glyph->base : '?'; } void djui_unicode_get_char(char* text, char* output) { diff --git a/textures/custom_font/custom_font_normal.rgba32.png b/textures/custom_font/custom_font_normal.rgba32.png index 14dee8942ca9b92ced4ea8a685f6d6272bda2e69..85de128d0b609da71ff4078209441b678c8a55cf 100644 GIT binary patch literal 14680 zcmeIZXH-*NxGowH1uRqrk*Xm0NfQLAAt)svO)OLa6_9QO=>Y;ZKuYLHFHu2y3sE2h z3%y1NB@s{{fbpU2(XUjNp@-nmlmv92bEcpM;t-O5M(1Nv5W5f(8OoO`e9oE#52W z$J{R5-M4C#gj>CEqfY#QX>Y}+BnKSlKfaeYQ@*7KKgjsw@#Kk}Z|?dNiAOJa%hF5x zE;}ASX)$d67#A%I>J+0as4WH9eiZ@dCx^!yE8m=YH<7hs9?_I_cZ0nheA^x2y7xz5 z0@SwQ2jW8gu3m2|iLaxFaK&+JkKSWM^!qHh>;##t5#lFLX`?H>6D73?FGrvjD5~^7 zGK7+wUj}(wlne=)8Y&Tv%;INJ+*=_u6Z?jC?ju2%5SsY@NAF{|O?oaIb^z~FGskBD zzzLy$SB@XEF$@4e24HS{{cgA`sc0?q=cm+HdX4m<2)06@{acvVheeO?zRmfjW}M=& z#^y-0ot;q9r)WU^?T@Ve7a%!9&i_Pe5ZvEd?5&qdz>;|bEK9Fc!#WB(D2_q5;r8`f ztoHu&`C0XWaI;_fT%BH@zM2>oKI(b?cWPIdDrW?q;2y{X@TLKH*KK|kXxJ*0@9pi) z*ZJr%?LHKZ)wHR9HDT6Y)6^kF%J-I^@U&w<50_6{0raf~rA&5jZ?DmWJH|^Gx41>G zQ%^UL6V39LG9V5s*>Uao2Naur^M_w0l`R@)I zBZ{@XBf_a8ptbKj?QU14~S4#rtdlEJK?1F!9LNRRTLN z;CuZgOr<`(5pF0F){^>F0f6B1AyuAJ860SC5kofj`58<|w!U`>xFhdA_)>}4+_%Hn z9Eb=Bh?&CMD!@|2>*2gIOz#OAD1;FW>)U@ZU1Y^dH*a4xiM}pBB*i!3su45nRt>tz z!VQ6m_m23FT}j1nBdFuCjS2s;gvtS8&qvA`exSLAnVU{$4O1dWfF9^T z^hz5u=(~}cNWmgRKP-6d
WkjM3*>V0P1rm_9uk)g_Z`wD#|xw2{024im_B5N*X zDz^wWSVlb$y`_J-vwAvlf}zw?Q*=s~m%4!U?fcr*MxW|I%*X)?qFT<(O~y6 z-`TJB`BKqIIxMy z!IgG>0T3o7KlbI)s=ded7~fK@^khFouHNbj`Yrs=wIur_jHlGcFDHT3pM1b%Zx^rc z4~M(Axn%sh;m7=dUs3y0&PScEw@99up$+n}Xf!rV6y|kAXjOE8dYPnU4R_{6#K}Xo zo`tI5W1%MObSLtu59rR9mNg=D^mWv%t)K4W7oj=DjvEM;p8`*F+r+ek-?efDT_02b z+y3Ik1UmlAH*G zt@oHZR~og@IJHha^bM((nCNuVE$kdRX)ii(Zrc&sspny=4PN2excg7_3bgKpy#=YZz=V z@Jdxr>Yz5Zej-q8?XBURc#yhw8MDj%YCE~bz?(((Y2PoKnF=={YBGmEyr;8LDw&lX zI2c6FB-A348JIoO#X3tA;hj{<7$$F=IMyI#;pLrBJkT(l$LAml-% z*9ZQFSVtCm=Ae-VZCh4pdNeYDATpEn(CaZ-fqvid{OZr93Oc~FiMNi-+{FZBOw&4i z--qR8U5Acr#7|M~ER5qF^89M_Bg+*yqzVuws~^_fidpY)3*IsQVSA&A(NI-mLd@y; zy;ei@BQdQ33Y8(S@t4vwYc;QG;5!a40a z0sen&#@G#HTe>aH8(>Qpq$RgaiQKv*Z6kdnpl{cNo=Em%u7{#`k+?jQs zNUhoQ%vi+@#)-b6qHj+U)h>-p^PU@O=r`xd+FE`F-leF1ZL^RzF!#Csq;TU7AZ^c| z@yf8L4rs(Ze&b*0BEnh7P|n)*+ip?-(9ggBBg^}AIZ7@7ee9ZbEwE@lx(5(5%bi-?(Q6$*} zX+eTn@=O4NZ2JoeXu5hM`hQ|Afw*<@k%n`sne0l^<&v7t!B8m}j{HIOX057EpM!~s z>nSmpQ)f!&ASTuQeL3Kn!QIL1zzMQEt2a!kG(v*rLv^E|g2Y40FPEH&$AKn_ukn;h z*bz`cKMo3($^#Q7-R{nvLrqz?{w&>Kh0&QXus%#d6%|^0@ z{LLaXQoULAD)Zvp9D> zv9oh^12Z3IB`LQ`6EvwUI^Rm#RvLEOEemdo{$QhHva|`1IOS&olyM-(rZwwFg92}D zGT6257}h~Q6DA&Z*FZMr9bjZEGz)P6eaH8m^K?ufvJW2gU<;8RA25hVP7}^XHwxF5 zWK)8KTE4?xA24^m0BI<-@U^h-$0gYv`q15i`S%UjDCc{s&27Nvn8IfQ1sG*OlU=z} zQ_U1HHo0#&^o$*_nh>$*Mnd(*gmTaAD7Q=gPMnv$^T=4YqxZFZ=0ljqhJ-EKmW@1G z(*p?xHpc*?2fupeNGEmV4m&PA4uLK)?oe)7*JDe5Uj-CDzn(&#W$~%453leY02Ph~ z{H*4#QligAx&^>mj+px0={au$)`)hExkom09WUsH)$@Y4F}+lOadYLp73y3+VO@g{ zNA@A>M6;Rzn<9_0w`&Y>)&IH(Kly+C=T5Cd&l`CXnU-YuLH(57epzx9>D-E9(=+z(TdpYgJ|92Vjwp zjbWt1HE`jB{-YXSJD{Agm%LNJ8z!fL#b+$_08nPCb(bw|;L15n7>9fq-@VZuVQ9JW z&ixa)GltvSQ%Ki4ziTlsIqKVQW%z5cS(y*3D-fd4-cDU}Q~BbN8>LZ7q{4{Ac zEq+%QCss$GOmry~OXKW0#bXFUfoU!0GM`3G-RoW%#`hu0OEm_qGBwU-L)IfuAiqn7C1mpJDx-G~ow z9M`HgldM@-iFe1WJ>@y!!m(xx_#$82Jq0C;EyvVEt8}?*P5Z#B@qMEUdv$+Cby*zya>5Q9E(45Lpj!f}_>sSN6(ANkc(Tm&`NlPI#eN zM6RyPecc(Yy_6C?&Ua^(d%r^s{S|&K92t}x7P3v90>Z5ZxW@>h@8 zcBUCTKzjOk)k-I+*c2p0t2~hY{+s(L8aYYX{WI)GxZ|9ktaZ$aELo31B__$)T0fwA z{JLD-u)-;KSz5U+FM8>B*SdDi!N@flm|KwiHwDF4&Wa@2ef9;Zziu%ww&5(_GA6=D z;@3fr5r#Svl3J_M1lYv}g8L+?3*K3B*8H~ej_dE*Rjvd!v^AQ#zvp2w`;1cz8HVha zll|lEQu`qE^(Vwn*L$qbfXdzx3Yq7vQ}Sf|bY$zzzz7imFzM3Z#<`h?(D0ER=XK}M z-y*;l495B?KxL<*G(9pX(k?G!urIdr5vT5vK}1gh_UsIeIZA0aQ?ae{>SKzKOKRuA zJ#dPy5q;JgkgC#Y`(saKpy^Yh($jL2G*3`z1wBw2-r26qS>C&#$X$PuU@LiODCa5D zqh}!(m)V>%ezbd~hT+;9l*ryj+}5gS~LeSlqUka##K%Shw7QIvPK_NQzm77B=`uc(rOe%9S8m)nO%U5YD56)-o8C`vsDnx=cW| zBv#&^2jsvjqRm%pKGjG*diRZTtfROF_vDqzyyuv_(fB=*AL%jgNP-(4b)eal@_l^K ztKUVhAth8GyC5ufd|^x*moIH~JUV+L7r!DUxwtU@FV$L%hDJ1 zi1X1fRhCnH|pk;K>a9<8u!79~|;st$Ck#cUtc^rx(YKRXde&tZC$ z*CNF+JzobVnx4*mV^6BA`av2cwy^FXLVN-n+{ZUR^^-u7{w)yDag1Yf%5N#pHY4^B zrTlZtLjjW;t-L$@gx2!<0L?qso%|RU&KbMDt0^1Sp%PXdmYlAZZkW|IX~P$B4!Ej7 zoD!P$d!A$*l4i5IB%K)7^nV~{oFcV`wwm&s?YYRzF+t%wSuo|ClWxE^bw<6;XJ>G0SVXHo zuLO49ypU_etgDUJszhK^V?R`C^Af*_1m%u)&4b3TkLAZI*|m%u_Kx%YyvE!1DskCN zpq7xYEC-0gLwIjPYa1^2=*l;#Dp}o+4kW6!#6!JBmi>p4$~tdm@)9k3a&iD|uh+ub zI0HmPcydzY?uk3!u>nkPu~dLTn;~B=p(;B@{caY;#aOFnQXk$ z0nqmA)x*~#NVp}hbyls(XK?#r{(sxNtjjqW2PukgvE-x+Y$m_@ebn$2(Na?Nz|c_+ z=(Qk_xad9eZ&vKq4=LWXu6Ztf;ipXdZgoF+Yb-*5 zH%37D>zLwNwm4C-ihPGPWjExLG*Mjt!-mAZ&5d`hCd)n9Al&k1nlb|-b`Dh3-y$>3 z?~a_Csw}z}6P)2ytElXjFa3rMx|Ry_)g%;ruVo+>YrC~93Wnj7u~0Ec=e?4F`C{!i z!0N)ov*P5AJxz8y|ugXf8yCa-( zP)T$hY?Oy=DduA=Ba$$A0UDiot*$1bUxUXc>1q2rC%hvW@Zu})`AJ8g}X&9ZT=FdA%-mQa#uyxP_|1J%I%fRweri{Is25 z)kLo&#XX?a_7C$x=!0L9drH?H2V6K34p{)_)xBw_0yDq7iRx1;olvj*PjVUMoWn(uklc z1@$=NMOWo{@fCgKO1jS)t4i2R14f#@C>EYqP6g%nDeqbotcKAD7lgNLGEKJC3X%z* zoZ4@H@GPY%coKb{%d6IdYybmt5^?0&M!WcOir_qvtIhXHVo$6*%q~mNMeIb?NxGe6 zI`2&+-@;DP*O*51!=MbWtoZ{!i>4R2=4mi`(8cyI=mMaZA?2~ zp?jwvQqN!A7%DUkag--krhH&c*q~G7*$Mo!<`jtC2U$4g0EU1toqxLpy)e)cI z>sJNYUQJNTPdPClzf7PCYgesncYBZc8L(!Py&d{;^2w4UV2MsC{GW11I(B4#v+;9PLLP^Czs)9(3jb_B<1;SC*x^i+n5CmD388 zuDZYT+iW-nDOnVyp*OjPj&kz6iZ_ve3TG;@<`~1iqr&``@6es;VYr8X+2~d?KExte zTy=pwL=Lrm{^yM3XcI+xSlUSo+%o@2T~$Vw)hB_{Nk0*{{`qesA>&n2ok1jpCv8qH z-ZDz)>?3iPE2V9%= zj+Dd-T8{cJ`qKWG&*fDocBcQI41QsuA@lxn|Li;Hf1m|E&RH)2p4+Iy=5-`dLhaT| zE;E@t03CAj60LjR_TVh%;d~T7dS{aR#@M4elI`bnK}$Q=2Vz*5D7{%?Ou0k{2Y5X) z;O6H9{^GWz>A^QT&TuVx2%C!cTQs=CruH;vxY?bGa35{50rm=*u}{ZJL;+s}whI_u zv9wlE*=uY$`9x6i74)uDe^DV;3U4#FmmiGxkq!wt&85_7Ptk2ZJD*OO|_ z-46gM@~vWd8La^CFeXxwycx z{MZD4m~+2s^)XrG_<-r^yt-+V6<^#2ui@si*-_QAO`*lEmr9!Igx{31*>@&Yb;8}9 zZpC0ZDyi4Lf<&nEKNKH<10H|>C&a_@<-Lll#kbfYc*gVd)3EU$&%giZ(2CK)oCKJy zi|tmrpNjhipPYOdQF!n3qCu0ar?phC;9z5L?zE@Gii&o;JTk3IleYo$AfiA8P=3YD zDkk`6%+dvb1;}|m#W0xTpo)TM9MFC3a?dphLSD;b)<>1xWa`o>R#kmk1FbPxZ{0kH zq@+Ry={lFv>@&%;des=C2^x*}CZRK;{&*O>sBz-I zBEr^cELjw>Yvhhs6VY2osVJ~l_urBODS*v6@Qbp0Q`tn>J=HZWPA8rIQ2X4yo@h~> z&)%jB87FS-#C6!`f*qPkom}OMm?=Gk?kqJM5&uwP|0@6uv7uA954VUcCEt@RIG)kL8F*WBG`6`$FKe}yG3 zZjk5M#W}!}E%#a1Y)U=~*oSe|GcViQ6*11oA$Y^r>^2NLV%%n9QuK6xxw^1UKKpX{ zHLzXE?a-@rG&W*Oy~?FpdKC)LfAJi*KO4&Ks~Z1C#d)+QUTi6EYtzps+mpf^g|!Fh zbtH7}CiqqKcqQLSnoh?(pnQzGKvX0t1=@WoM66dGts-#YY{4X;Gb~bDcvVFQ*AsJMs zLOz~@Yi8`6~A{Hi)u%S!7@^<2E zdC1PqXS(WUXd%&_NQt;zS^wfr@$CBaR_WR8of8A>?Oh{9Oqf&wl^O_Q!Cl}CRqA$=bvyx`Z+h7;4JpCW*-k`Svhuw?|bf z0qRvs(w;k4d#?>1ESw1#n-H_LLPR{=##?^U#?s7eFK5DR$D8WQXf+b1(q@v8OfupNBiDQaFGKU|E65*n> zJeVs`xgtNo0b4B@ZVst{F zq4Tyr{k=OvE8mypLBrzvemL+9q^I-`KJmA!yuPYQc~ zKb%q3Hw8nq&tJ2HfOeb6Ge%J>MBenh1IcW{A^X<8+V8*-834ZCnkiDXwi-A%jnLT~ zs9&1K?;gM>Q?Ahv2X+*r=pv-sFi2J;m@?Gh7#u~2iEJ~)ko!;1BUmU3_)jy^S>$SZ z$)y(w0oDEooL$YUGajAM15Bkdogu$SNTZ&Dgd)osCzNMXO*^|ryWBleZbZlk*q^X+-Gg{Gwr}K5 zQ(p1TQA5qglKTb<47ZY?`D%#^u2hNbmW7?CD0m|Ag-Bk z6(D#v>*C=^i?f%#r7%2atgH7N9+Y47px=vAsTJ?Vna10(3~tmqKzEB;h=0UT=bJv) zP=I!J^TZ2WzbAVVR%b|DU7W=MBUTR-&hLs}#rL|c z8Ao`uVa*+yZdi*rIaki+@K!AY#VePkmb{NHax@Oaw8V~H!fe6xGu7znF(qnz%CB9S z5x%PKs0E_v@V9%!Y?np2G8}e+>P(1Py+<^mSA28=t)%+j4MX%BHzQ^sVf7-`_|&s` zJ83Z=k+=nkev8j-0!apdmAv>4_tfN5*lo{v`&5HBi$wUclr{f{oKG`bN1ZIINwSS| zwE*nKRb& zx}xC+_f3^k7r?=T=Ht&Owj?A=CR1$zVn%v0pJwQ3Z;E zy}35`ypIwFrN0t!M9t1Hw82NvojzMyDENMG_Mv!03H+NlPuWAbc#&5+<~S>Lm*z>I zNXU8;!&3siHKWIxJmp2@n2mZuf;s8<9ewDsG9==rDgFMGI^3KuzaFtxS=`H6ddyY& zk)b_kZV6=$(Gxny@TCjR6CBc?|5bCks7lt0X3aBV|E@A-yF0bmnyf?1#~fKjHL12P zF0ahbFsB{~OHMgUdo^KMFH-l)neK(xwf%O}B7NOrEYXB zBQNq(=0bGBCT)aHqp@%GSq`4XD8Pm4Z^_vQ!EV{N=1}MkZT2+_ikF2xw2!=9I>I+FDFS3WF$i`!o=M7bDL;U^W z$+9mVjnWkR{i4E)xOQcJ{oSdR4$FXqX2KjD_d**8WEol{e;eNcX}Qmt+2pdexU#*A zWt=X!*E`giJ(W&M8$TM6AxX4bNM5}}bztTPCKZ<4dO&^Vb2X^?WG=ZG^lAP zaRk}1Ye`D?5$dh$*PEDgVgGFigm@ti)$3Jshzn?}*GYw+BnZ}~O=4cih2eR&F^o{r`?(l5N{Cvea zV=EceJ+UZz8XYEmBsGkjEyG7WR;xHD+qoygXP=R)Xc^EwQw_;uD|W*s8RsKbwhl*l zt(u=?iinjR4ZH8iNGl=b>S~VQpVzGOhhK^Dhvm)i!L>u$vuk)6-TvPgTG~HN+Y}7?K^osb7?{j`~T2( zhRO>_V#+Cc@nEXL`377f&BP1OXP`cxx{74Ejx&k(x`;gPque6a8G3EkIpv-japE6T zypqVC+S%6ST{kJMby?DR-Fx}ZGtKS&KU!angCnJ=}5d2~EKR`lUv%oZIFm^=f*BRyt5Z4dCYao6*01e$k6vN4t21MQQh!dB2re{Kri9KX$xiHi=w@ zdNEHVHzZA*iC0q_k)qPca}65M?H@z1q|qFduH*WszoY+zei_7kduen5{(iXfs!WrU zvntf8ekp*~gDSRu_t?`}IV|TuIdEN2QFqKIy1imlR+j3`@TA)odu=&U1SI2c&H1z2 zxaPbvk3KgMj}>rnG&p}vlRX$R_&s^rpWwS|d#E|NMaS;`VDGYXu50*~P}X=_AlJ74 zoU6^Xh2>EZp_YBC5XZ<#Pk2tf@vlQ?lr>cEeh%YJKgMc$-NVS4>om~ox9C4#ZBK$v zS?5byNL|>1dT5qt7TMBV*+wDdBu`7*h!pI4q;oT(8}S}8f}ij!?*91dRGW9=X8Agr z$GgHF(Z&kkczR4JCv|M?r4#p_R4sK58FkEBRyvZ=!eQ3Fks^vyjLv=K!iM#j7(zG_ zddNCox9(`koiXHtG=6N#U^U0xRLnizUr&aW8}!?~xUTKd;7 zIYu;DvT)>?fc&B9nzmbi(Bq2Lwb%#FZ+AYG(ykLMFbE1yJOVEzHlE&k8B`l1SmG<0 zYW*;EU`7$YwZrb^HB^p8p|nH~NqMAz=JI2`8?}AlHf7<=i!p;LUOm!O>Ax-K?AJp2 z=U1CwHR8B!e%gUFrEd|MqVF11OZx;qcFPTv?Hv*8bU1)~PqlNyQxgKLt~HaXA}g$5(`h()VeIf{Nj3AY zKp%a;I}mxg=Axl^jvW z)EL|pFJWs9j;?#GHuYrUtldFk^*7d+!n5yL*r{NJPp1^%;8?kJ9OSpJW0y=onu9aC z`K(u9;l_ExQ(c#C4gS-G6-Ibbq^x8F=aGD+E~uI(7UC9srnHpr6*x;M^O9cPHK2i> zN86|Xz#l=W{b=c8$b-=`(Q!Js-CLG*$YMR-I+em5r(ko%RwS?Uo=ZOe+$`11dXVGm zxbDU|k%@2e^RNI=(8ai#D5nUGPgoBx?D&yc3*G!*)UX9ad;M|UsYbnOA2 zs@p$Gk)3f2PTeW{+&pm#Zz^thD;nAg!cUn!*;|TT899rwdzKb$-2>TDZ4a$kl+IAB z4Uju#EaD@c_uW=618%}%E-o&fx0f=kW=mOJM&GDX&$%!zeijAY zX4pp9c#SR~tbRfX{ga@zD~{A6($)MIjuOq|no0Avw8>*tgX+`NN8Y{q^{Ki~s0ZkK z74M5s$CTT^!e<^e<9(KejOT8<=Uhv$8axZC8k|h^T%Py4I$$N|)mOeqJ87uX`Ii*q zxoOv{lsNEYoS^0ee{R~@V&42c)sh7)u%-Eb5R5hhCr>91xOR_v7oy`hYJL71-JMha z>x{1%DVv1AH|zJu=)xbxl`*7uZlu1HrJ>Fb^Q%x}cu4Y8(0#gn!HZQ)4m+Jc|Go{T zd$gj^b0PCcueX-J)g%s&tTy&ja~Ae;bn)%D&|Ux6v>qCL-S;Mb6YuZdT=NTgwBXgf zi7<;ACneydl-Nt@47YmK{GUpo+ml~sG9d3#yoOekS8Lqc{Jn~Jpa(=IJIL?75?4*c zUXMW%ho{@KIx04=e)999C2{o#zs2-dA8B_0)L=kdqz7Sc!>ulLcYOk^P}e(|v55$J zL_I1NygCrsQq_w8`GP|??ocllVPPp{ASE{VwQB(~`D>%m(`BW8*EUrzq|mh2uU5+T zHR-v`qRt73fdEDs`6NJ==KQDl%(H|Dj@Z}^XJ-qFX{OM?*V_*&N4%FCdmsT7B>g30 zRkqubptUPTU0XJ$INCP%%c8d=_Bw6>@~$)O=;n}U?MTa7jyCohPCm#2fK2~9ErGi! z2PWNkV5fl9r4FdF&z6S%RKJ`M+6y8uQNquP%p!RuLj<_|TQVb-WMA;(BWhTV1ao?h zgMM4Hh*$cTzsH-z4@Hxmu!!iC0aWPK;PcT_=eDJEEv)R(M6y|m^WqrZ@nAtvS3n%k zrMFl`q*h9pJcADuhyuipmR%fwHoItFpP3TlRiuAwv)QE~-e{t;_ruu+Bh{<_w0WG& zdF3)ew$ISo$(GKDzy8NUjEi_D*t|qG8X+kfsnnAA&B-n3`Cn>$o{COPTm-#b_uL(M zm?FkZ&#wb*5_`?mF$6)|=wAD{z03*t=PbO;_IZ`cDUa-2QccjAr}f$dT$sqT*>zX* zUCSbu>WA;Hmg}6InT*N^2`Do33aOu2r_O)i4>p=Qh`QT}diyiDsx$l%a;a78JSylM zf6}R$4@k#4>Z8n1O%UOrX(JZc38yr0E97xo95Q^rv!9uXKWpJb9EK455spnh^QNL9 zH7#8dLQah_wp8>FPkQ>QzTS5{Qx-nt8r`>=gq*G6i(LF_26>GRO~%P*NzKo3iekr| z)57WIBK-ByclowZwI@Eu4SOW?bnPAjgX3}PGN#A6n*p5`5?;T}L1w?s@NV7#)V~es zvHZ`3J^ZI)B>un6Y=3@pu@~+}Jd81UUlPIfmad;OVazFaMSjy&1(*1T$z(bQ;ORwY z-W7gwLfc8oVoWKru-ZWHOwy%eR&@u}YG?oY!0Kr-_0I02l^iXvJq`(roFgefCqMKq zkKa3f2g2@IhlR-ldIG6(@-fSanb`BlvnNz;bCqij`9=8X5>`u`vG%}EQvVigbZl;* zrltLAythh|NP{g%fOaUjKJmA&+_<{GRRq~;C*>Gfvpb#2JdW3ZR-ObAM^-g@3-X<$&|LZ{c{$W52#wv-7=$QK{r znY4-%R}HY;BR6+jtT^p2Zr%s%=qk1mlGn9Ocj0G;n*Ggy1U4q%q}ARQ^60ep_3Ynt zC5YLn9sI}=QL~=WcWi-P#V6rnn96WPKHYih@3((kXZyREn2@$?9J%&RwcaBF&Hf~p z<27+0yGb6cmF}1H+)gVp=pl8@m!yB<0(_`)zAz=X;sZjz!(YF%I7N$jK2A|Eycl4t z03&aJ+#7sCJXVZSRlNG=j{FX$ z{PQuyGr7z&qcu-z{I4#Ss~plBI&t$)I6Ok`1`G8!wS&JZcb07p%(k1%Er8`>lK2Ig z(7{N?Uf+baDax}W(6=*dt@+&8k|w5un%#YUdw#7%M5{itt6FG3fa4cOdI-NGe)8DM zP}ITh?r!g)pBnK^c-yQ;&y1Q%N4JfIF9A|duAn7`DUWrChD%tN03Xo8x!EtKM8Yc* z@!a>)r8@PbW}DG)#eo9ef%L8|t~P!SDb1~&ucVpQ{qX`uHLFSc*Jxqvt1ZhT`C2mu zm*GqH1oOS%2#+PX4NrfUH0q8sWSA;a$}^ta>S`d?`tb#qYkF5MoFj%$1cZ1on=a#( z36*3R7#O@(NeQ)wZnUK?ZNF*N?_HA0%L%v}1J@_nerpykS>cL#ALs>-I@E_qSp6ET z02t_PE{08h`PTMrTCqX>^Qip(qbc<(DR>8utM1J~qb;<{ZTkK|^`K>G;@VbOc7N4x zVDJFzZ=&WvE=6v$>feS;TKAoywKW-X2ax2B;NneF4Nk~V5tQav6<$JHeI7PD_oNq+ zCa-0LS!p%dj;($~534ncCxW-*rp$lgc!H%lTjrkqJTZ9<@Yb!gIhTI|YQtH~`(1YY zNArLmbEK*QZ%VMx(GeWoi3l*a&N1l)DjpKC0NxJ$ICa2dzUMOsBN?UbJs~2UJ1-9T zYZh0h{*kBbr();-EApQIf+FbuFY@2`20BFI*xY_=@`jPI{dI={djNA2YvZ~b51#)& D0`>o> literal 10129 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 UI$cSYe{a>*G<;g6Zu|Cs0GBc0FaQ7m diff --git a/textures/custom_font/custom_font_tiny.rgba32.png b/textures/custom_font/custom_font_tiny.rgba32.png index 843af03e04591bf74b32c3c6ef643a67ab319ea7..5d1e626e9aca7f39544f24dbd035181e73467b71 100644 GIT binary patch literal 4848 zcmcJTXHXN`w#Ng~5e20e1B4=ow9o`iRFD8F!jU3U0t5k3@X!*F63~P6gn%UxkP?qn zL5PA7ii#v4T}4EQQe$WVfu9Pd`g^JT%+VFbj9M`t-Gg;Q?XMk?yf6bZO00wYpfA`V5_ULnia5 za+&6el;uw|Zk%!>T;=m40|VqgKwK+xy*$y**q8B7LOs+Ue=@f9sx1{-bD% zeX&6ed+{!O^Ycfv)p~kvPPoKDiEYAo`MM2uC!Zb^5#bT`XgNYP@GtQ)TxpNKm&E?_ z1CGI?Ng!y45^Kg}F5LB?=u|Z8}GX@`5Q5RAc%h3bm`B~R^|<; zQ1f)na%)L?-EOQ0hL*+ABjd)vPA|8caCfyb07(pD1y9 z+b90g;PiyKnPI#a?@4r`=z1*YoaYO&=)S1VSdI$2Dpcf;a}>?r1rYz!!7Ca7kUaFy z5co(-<^ljRM;-0XxW)Oc6lY>o91qx`ME3Yb7RKaJ(#;pw^JU^4we>`dDYX8%^`4+$ zwS4{tkf$rCss7(WOS5^q+t97^{B4`ER_@u3*eLs8L|$=7bPE|hLok~&I1M7bc+K6=2Sx@%mSY|9+y zJ}?Outd~`)JT$4TJK=Q2MZ$~X;#WRjQNjMa0Y_^u*E@+YPa zBn(;;APeroD1i?ri~$^$dbj$IX#3&&VAX?a2|y=MmPeOYBjrYECeCkAJ_N zcDp`tdCp^j)Q0_Lnl#Ei+R1ja(EpJrrO6ML*DD|y9{e8s3tN>0t?0X?vgS7SUjszJ%r z-mx)I6gUuZuf2YOskJsQiYWCitz_H0CPaG$A{vYVuo-0~o7R+Jy)d1o>YkBR*yDE> z!reGQ9OPym2i)4A4$Uj7vUz5b%Lrf%&zn!2tpAY&6|sYXUfRGnz-l1l`UVDW^5{!X z#aqk4(SMrS_x09F^@Vt(kgVa?k3@^-SX}bvRzmPF+QR%+6;1cZ#_(W4@u8^^VYjZ( zeb%l%Hf#(tYV?5HLI4^_Eh`yu&Y)vIAolEkdYWgkiPpAJF=y>!$49S(Bye=5<`q8? z@Woo>X&miMKtztBG16cb==4r)K2mhi`MTWQrj&Q*-74iZL36--5Iq!<58~ApJ@2Yb z%{4ujLon~7Y?{uxh(hIh7MVlrSB+%j9rI^8YZ=@uzU1NInZ)TinYv@0LRwNX0y5J7 zrq`0GEKnmV(j__L4NaWA3mCopkm(G0+CPahNSelY^%!B99N%c6AQJGmU0WH zS^FQBfK^Hws_2EZ!A?V*MSW|H>Si!>h+dIBK<%D0rZ6@>yl=|B^(fjy9s$GJh5*Oh zjYi@hX7HQ}*iRDl&vd*V5%hhqs$VL>$VtB6mUGGDsr$64RNW1inhhSsTXDMRdiRw8UaXzNt7?|#_wkAPb2?g$q} zDVZOlf(zmF*r|y1#|KHbTZ_1n;(2P*!<&6hA7ws&VigOU5hc6RW6C)d^F2^4;JT4Y z_U}Hf<+>uvp^@POb+5LL08~_M437{LD~xC~8PVPq{FoZiT4@PkUKa@Nx_J+Hxu+uW zjLoNNUmXi{{}6@f83~*Rsq_&kBPGK4_C0^WGi$iXe7IcT$!B0l`zOUdwNG=6uL+#c z)aR_Auu_uisL||p^-7-+Wl*0;;6RxIG1-$$w{rWGId>GZC`3YmmVi&~8XR|3_t47d zGJxL;xK>!4?JQ_8M4LsXeG-6Ns^k%c=e@*4j1Cd$UBA8 zXNG!HuAM=p!W*5w_a;tz%qmXxbTl7+`*rdGTeDt9g+O~YXGMcHR!%euz9T6g1}nz|0zH;mAvfDtcoYWMeQ(aw zk6?0?e*v6{tW-#Cgemk8Xi*yhBC@O!VbAg4UrQtX%&fc)S3xh{A5#9GUCfUhm!%A5 zroC?y8ORCX^52`-u=X-1?E{&9$&H8Yn~+l#0;_p#azGEdsrcy~Tv0=riRN&4HKAWw z@S8C@QTatz4(2;Hul_58uGvlz&b4J3x>{H+Rwe^uH70USs@$c=Taa?diX(&c`V#P| zbynTXgl{@b?Fp|=`@U*re-9Al_S4=ZwCd{#9@%h~eBR%dJ%>~h6NKFHEfIWf#l{bKs1};ztIxcD zd}kYg*Yr_C43-Cay&{>G9RKX9;$W1I{Z^=i#SlQjXybPx8gL%L(_c5m#f z=Yy%4j4S3wem3q08a7HLEWT-!Xu~+C^k7ne zUR2SMk-tsCj(9sCb?61p8vtVX)Av=i*Iu6NyZ9>9^r5c8l^kBgmM0=4Dw|UJDwf4s zDuaueM*Fl()h6P9{^AnwW)FpX4Pg?3)O#60-DpG2o1y1aFdoJVL0z3 zn(H1fa*B+sykaqqNx}G6%%k+epIuptf<+?(^h zf~660us0}{`1)=P$El8)e8-U2hfF*;Gaf~z1V&87j$NT$JX9D#o|2>~O#*81(wZC+k14Cm7BrZx6ODzOPN5vz&c| z#(3w#kioppWs@yeRb8HK)2t?fip}v3m>Ul&k|vL;Hf$+D?eQZBT!09K1ZaH}F#Hbj zE5tf))qz=nen*wr1#`d7Tw|Lef}`HZ>UW9H>-K5aC>)&le72KC%L)g8SW_P{I7g0Gz2aXzIN*a~+Y57-MIK=$_v`eX35yu$<6 zg4W#~gLq@yAN*P$LAQbO8=9d9zNNbIu123hR$FJkx@`WWZoQ2Dag>e4?h8@NScs_H zZEsX9MnQ`YW&zg`bH{`S8QX}!=jCj?u25*f8H+j&T>*^LqOTeW1z?70mWy$^H6ZRX z7ng#>(xeib(WtR>c5V;P@XB$q&juGTmPKZ$w*}k|l;6nt6!rNG zP#Zm8uwTF9QqlWpV=jvN8;n6yRhHz~YCBT&hiu#vir# z?C9;no4=ap2>;LvIyQy##A2y1d9GrdTiXQPGljPLWwDVr|C+7ArUE-X1fQ zkxoTJ&AL=G-#h(}bGPTni~3 zS$)ay?#Ct=1YuI6lW^JH9ok=Iu!xQRs;KB)83Dbx$J0^YZ4?xgE%0jBkIw}cesAI@ zU6Yj4(q~+_^-G|eVD9KWoH1X?99>^tsy>F)SJ~5kbRHTwyKyVtuBDgq{5{Jtnr|<8 zpqFQO4dI&a2>_w>PdxVI1f{LaE`L|R&UyyYOtymzXBI~Is!7;f_1O~zpySCt+M^50 zH5#)E+>Gk4U)4gN0peC!xDg#|-yj=w&IGlv+w4%tq|EFMq65ZRyD~r%4)a5t8ddcy z^g)Jg#&5CQy=ykD!JQkNo=z$Jam^C$&5^RRwSq9=Ecw&Vny(J$JSPZoXn$UVJf1MO z{LIedy6yL{Y|1WE1jje;`^N6W@T$Vf!~Ffw-BlZJhkExgf%Wu|6PbHS<^T~FQHZx9 zsQBX>qNc5+bZ}QRO(vMwp;(v`sk&Pm0Y4^MWitbG< zeqL3Via!u@7E^HmXc>Jwkac*8zI5mfaQ178r^Jg^Ery|7@Ew)S$d|oJSU2A&(k`74 zNCeebFBqct80CB$$YZP+TMzi%-KeWzT($MG2+5XI@tJVaZr7{ejB4p|I-v)m zM~EKBJ(DOWTaeQD%k(r%)rEjkEmLde$zUxA(jehBBa9KW@_zFzb1gZklz#V0EUW%} z3Nz!bguYEv!rh!`hFE5zl^(3(AO+cEo6E=@F#A?JXL69HSC!A%IW4K3ef?=u;0XBU zz^#eIax8Id&?^UI5(EjcY0aHzfVlYO70uU17K)b=m#SMn?RfG&CH^1C{I~hwUmX3f zLkDq2w}RX~u^bupj=g%}$K&b=qo$bkRcrWd{dk=XUuHF(lyQ&3uzP9SVJ0yrdVE@SIJ9D3! zpGSK|ajw$(wAP=$0v@s;D zKXUv_Sn`+U;jjJtoRy5Bc;g3 zFWR_C=k80dSJJt_u#ZTmKJJRMrf;$$q(&-86uy85t?_bCk7^v6a;NKBr7;nBgvq z-R!Kn8A~>>*3gI_Yn$%~xr5IO%scr>5U!#fo=ZBW#IcK}Nv;KGf0d77{H2?qr delta 3192 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