From 188857c3f5978b21137c2264d2f4a153ab3e4921 Mon Sep 17 00:00:00 2001 From: Wilson Silva Date: Mon, 23 Oct 2023 15:00:10 +0700 Subject: [PATCH] Add text font spritefont example --- examples/README.md | 3 +- examples/text/resources/LICENSE.md | 3 + examples/text/resources/custom_alagard.png | Bin 0 -> 45265 bytes .../text/resources/custom_jupiter_crash.png | Bin 0 -> 29042 bytes examples/text/resources/custom_mecha.png | Bin 0 -> 32313 bytes examples/text/text_font_spritefont.png | Bin 0 -> 19567 bytes examples/text/text_font_spritefont.rb | 83 ++++++++++++++++++ 7 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 examples/text/resources/custom_alagard.png create mode 100644 examples/text/resources/custom_jupiter_crash.png create mode 100644 examples/text/resources/custom_mecha.png create mode 100644 examples/text/text_font_spritefont.png create mode 100644 examples/text/text_font_spritefont.rb diff --git a/examples/README.md b/examples/README.md index 3c0fe25..8df3b7f 100644 --- a/examples/README.md +++ b/examples/README.md @@ -60,5 +60,6 @@ Examples using raylib text functionality, including sprite fonts loading/generat | ## | example | image | difficulty
level | version
created | last version
updated | original
developer | |----|------------------------------------------------------|--------|:-------------------:|:------------------:|:------------------:|:----------| +| 70 | [text_font_spritefont](text/text_font_spritefont.rb) | text_font_spritefont | ⭐️☆☆☆ | 1.0 | 1.0 | [Ray](https://github.com/raysan5) | | 71 | [text_font_filters](text/text_font_filters.rb) | text_font_filters | ⭐️⭐️☆☆ | 1.3 | **4.2** | [Ray](https://github.com/raysan5) | -| 72 | [text_font_loading](text/text_font_loading.rb) | text_font_loading | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) | +| 72 | [text_font_loading](text/text_font_loading.rb) | text_font_loading | ⭐️☆☆☆ | 1.4 | 3.0 | [Ray](https://github.com/raysan5) | diff --git a/examples/text/resources/LICENSE.md b/examples/text/resources/LICENSE.md index 0202fde..f6bf29b 100644 --- a/examples/text/resources/LICENSE.md +++ b/examples/text/resources/LICENSE.md @@ -1,6 +1,9 @@ | resource | author | licence | notes | | :----------------------------- | :---------: | :------ | :---- | | fonts/pixantiqua.ttf | Gerhard Großmann | [Freeware](https://www.dafont.com/es/pixantiqua.font) | Atlas created by [@raysan5](https://github.com/raysan5) | +| custom_alagard.png | [Brian Kent (AEnigma)](https://www.dafont.com/es/aenigma.d188) | [Freeware](https://www.dafont.com/es/jupiter-crash.font) | Atlas created by [@raysan5](https://github.com/raysan5) | +| custom_jupiter_crash.png | [Brian Kent (AEnigma)](https://www.dafont.com/es/aenigma.d188) | [Freeware](https://www.dafont.com/es/jupiter-crash.font) | Atlas created by [@raysan5](https://github.com/raysan5) | +| custom_mecha.png | [Brian Kent (AEnigma)](https://www.dafont.com/es/aenigma.d188) | [Freeware](https://www.dafont.com/es/jupiter-crash.font) | Atlas created by [@raysan5](https://github.com/raysan5) | | KAISG.ttf | [Dieter Steffmann](http://www.steffmann.de/wordpress/) | [Freeware](https://www.1001fonts.com/users/steffmann/) | [Kaiserzeit Gotisch](https://www.dafont.com/es/kaiserzeit-gotisch.font) font | | pixantiqua.fnt, pixantiqua.png | Gerhard Großmann | [Freeware](https://www.dafont.com/es/pixantiqua.font) | Atlas made with [BMFont](https://www.angelcode.com/products/bmfont/) by [@raysan5](https://github.com/raysan5) | | pixantiqua.ttf | Gerhard Großmann | [Freeware](https://www.dafont.com/es/pixantiqua.font) | - | diff --git a/examples/text/resources/custom_alagard.png b/examples/text/resources/custom_alagard.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe688ec64ea81a89eebc103575580dc78b802a8 GIT binary patch literal 45265 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 literal 0 HcmV?d00001 diff --git a/examples/text/resources/custom_jupiter_crash.png b/examples/text/resources/custom_jupiter_crash.png new file mode 100644 index 0000000000000000000000000000000000000000..c89572e77a42a26b8c8feeabfbbd2bb9e9fc388a GIT binary patch literal 29042 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 Nju{#m;1Ao}{6DqZVLSi; literal 0 HcmV?d00001 diff --git a/examples/text/resources/custom_mecha.png b/examples/text/resources/custom_mecha.png new file mode 100644 index 0000000000000000000000000000000000000000..5e20313db174df7e8a2933eb36452d568877cf8b GIT binary patch literal 32313 zcmeFZ2UL@3*ETvczSs~MML?ukC?i#*w=gP#fQX7xf)HsUT{;8^qX>v75fG3X=_0*^ zPNJYhx`bXM(o3izKtjlQo`5-Kc4-2fq$tm?l|<*Pl%ti)GyrfHY3&^7~-||*@pFt zNLb&Xs}Eco%iT)WiW1$;>CYjuYDz^Bu&iy6lF670sm`O>(AU%C!4vwJ{#&_M=b1WaWUKS(#k`QKuVUpu4@?&-g`Y>Q}*Ir8u_lt>+g(64a zz|rQCcax`MoOgdIVX?{4cQ6!P{%%slAPe@!;hk|AQ`toeqIe-%FvjL#>+Rg|-A6IL zdgsH6cp>{yd*JtiMLf(7;-M2pckOk=+IL>M^UKO76DD^>1$st)NysruLZlS`Y}3E{ zmYx`+WF|SoA|;MK#-kWtbvx2r{?6b^ZY@(;%m-JoLbO1P<-J0@MC;wRn3!1j0MGk4Yjl_KD8~92nlL$4MCRy&9&Ijq*Ar&Gn=Hz4U0YB(+zX3BZpS zyO>(&@NMrIdy`|tyQ|9|T4!vKN#J-xaVOoOX6hA8lC~XdW-Pra=2OG%$pr511-vJY zfK?j1-b!hGo6{DBJ5!W%0kowZg@3n&KkGWOjXOzA3F!`*sj169`9qq}aRJA(4#Ezi z4o_PzfLpCTBeq&GQ*H}bS)P`Vo2bJuWs_!JUlVz{hgJTq9IQbgnpE16Ol0W^K@;_gWWjerH7&B8!@HxShE2 z;;?3({Xr|W;3eQerVnB)^PzuCGF4}OOr>5SI70BW7bST98Btd*nDa^?Nuv8nd*F}^Th zb;j4y`K|FPu3rcuVqgw{+VRGjH

H}p9nOJ5;>eKF;fu~6D1(Ski5{Mh6S~M0eQ;GsZZgOH z_$T1bT|pZ5UFb;QoYCvcg2-rrYL{LQ>=@R#1d|cFc`7rjm*`1}hCGLXcD@NKjdA_qlOA148?ge-}-GE|d zK1PkMq9`3QM*w#!eq~^hG#hN9Ipcy$r?LfxVnpNj zg6h?^~YJTGMoCNjmgN({;igv$q1$v11zRB`YHkHgb<{*e7)K!Wm7-O@rD_BJTaJf9V|4Ckvexw6P4 z*(L8DMFcZyON0G9N}=4`{4>tHdfv-u;{+vYUrr++jCIdbY8I!V*^Vw(kI^UMHEQvh zU9jS$M3|f?2Sc#)=cm}k#I3cf#|u8WXC~|PW08f5^Wyx@T>r|{@62pnfyKgGr%Tj} zorU`zF+vc-%xgWRBM8?GRLRTtyIb6v2(NA$=h$35;l1_An2(uo7#@gEApD-WC9C)# za6mU;)^a$XT69hTZ2^X>cuI-uWM!oCS?=X%g!ueur+ysUnc5q(ShRBvzhY;a!K5PR z*IrTa30So{)<73^Yf=_7RCxkCmpTGm=A&m;-zH%<>gIxT_+!SpHh)`%BuXoKjq)^M zi#BT6b)k@ve`zFv+HEL|j=Y%PIHq$&Ryr};f#KU5Tdkt+q&H_JoxLhjyOdF40FjYW zG28s|;U+Vxbnvose0=3>%EJ?)0{Z;8X>c8DQclH=wP&Pq)F^E#dpS<`dO>Ho#oSxm z=j)C)8O7v9cT4tT8A3c8?Tn#gK?n?ZQOH{nZG-+rj;?U;L=``sLV1W}XB@u8X2 za#WkGYB?Db7*sG}6CW%ct$Pdzr9^ZX>3wI~N3W|-Vun;xX71Gi`ABE(LpqxvcDNu> z=t`!9N)F!%?_Al^m<=ex@zTI!FE_gwzOl$^p~qv-k%~h7Le#Y)O7ph$hX#!&bYwyX z8@=4=@rXdI9`AJTQ>q>-Giu>dlsb_1n54K#&=Fxh9PSZ#R6f0&Eg=w0j)KCKcde+d zE^GBxN$iMpN=sdD(cB+eu4SLcj(v4oyEmWuuMTKjq}0f@f=ji09()p5)+vKF7Ye%8 zDEAundcV3kkkOb`$6ZbMRs7X?IjH+;MHwd~y40R>?2xH9NlJozvw;00&iL3`n$w_j z%W(&X6^0|!vYT#oAgsAzAwI1wZatEM53vg7Z$ugid2$jA`ia7Xo2qVm&;J zuXg&&basHU#T79>9Vaffa4#}4+}3D=ROHl4JIqYrr?2bCKkMKo=7y=oG^PY%<+WQ2-it}N;FwRNrK`QE!=X~Q0$Qv~MI>I3Du zK1^Zus7|neh;K7(SyfY(;#nV}tK^$kx1A9?9i%44wNoEh^LcU9x(?YkE@*hzKfdK*7Dvpb(I5CU9I%$31=YkCiS5~{|nl2*gl?9YLv)WOznBd`EC zO*HALsQ)@JRSMQ~s%=XIxWOmbC+$erJ7tCkw2 z1nEcMqaMORWByzGtcT@)8_rZ)1C65Uc`estF#8m3)$J84`TbB2)}8+q7_5fe^3f{P zXkqZYEx4HMn(P4XeM1ru-58~-$qOF+l?#WZ+G$f#qZO#l^7^`0AHMA2Q6jT5iqeyw zL&hY$OU}4a{A389Fh}hL*kIVlSrT);u=BYhpwfb0tjCE0{^^d)YR*1&y?{l_4vHeD z>6t;%&07b66RnGs_9JySQT4(m?|9xKeNYRKsaj26*JMq`dU^AtfhlJ%ZWi~ow`U!j zo$k1TRzF+!OUhWLEax3Ji$UhcrMA-qX*$ANfxjfc+iE3R`3;x;q~(XYUy4a&Kw^GM z3&eeNb=vRM+bGdAzQP#Y&-#L z{0(~OwB)In8CDXiT3g~}PD40m5s!4w_R08*M_k4^G;orc(UbJ~jq}W~OLRVk^}s#Y z8(&4eWO{opqqO~x|6Ud2;B2&^Lb4(JF7U#F*jCYX%~3WOy; z1wf7+_(2u3#8ZvYSn9jXAIevC7d73mXM}gyqbYyX*ldFdO zhVaqOUO5^2S*|lt303#(%JQ-yVhG28(=0iH(>(i`VJZ#QyW(F!a>uCeo)DF`_&k69 z)69ef68fC~!D~}NiiW!F`#*sG^r)7B;R1^-qo`F0HyP;geV543%O3FAd*$*+9|pi7 zbP#an90I}xQ}nO;fazm>TB(gi9WPZ0M|7#<`|4S=%Xi#3*2#Wq?!w(p_#XLz1iiy? zKKEPk%=~u4;$gOa`n?DhN;FN`Ob6F)fh*49fSlJT6!@;;86UwxU-&5S`0%cedQ%75 z^y@=@+pS5j_3jFI!3-zvIGtFZ+PlL>iW37U(t9) zog1;8wlO_DuujK5Xjx{_-pQq1*nV4u8hH=v()kHd^p%ds``Y@?bX81svC25~_9kol zo%Fnvrx?o{=jV?c`OLRj7jm)ncqg`u6L6tPJjMBhbyIVm&LQ_N)jGW*i~!o{LU5^T zYpfG~NzqXs2q~zx_z{Y%wZo+mywHGq5^xb9IOs}O!=0~$0qL!qs*|mBU!rKuboP%l zpw`pEnTJ;w(O%Z!sEH|D46SQ;!;+hOkH!@&9$-fG;Nzuo1Hkawso0)&HSaVS zgRI-SivvQhRF4k_17+gmt|w)Hc5!3kgQAu4jBTjo^NPq#{b3J)&i!tFYNFyou;(Y~ zq>3`^Z>78-QWgrTeW7_#NtS1^&R*{s=`2e>rgpoFAu7XPF$$4JL#COpWuzYci_bsy zBA>!+!mt-Vt=fmy^{($9e9Ww8XWM$bM-9x|W)i1vWEwDBN_@C)k38h)@Jfdo@}8d) zYD1pl^?pG6-Ui(oeob~Rxu`nWLAl_r2hk1s4GEOvO?a4qX{n{dsR{KPha!U7iOB{6 zId6VwoT*XEfpU<2{@{18G4Fz_-zeKLk~fTjLh(qbgXOrgQVAh?k(FU1zoGYX z)CPMQWP<4wi%4Dyy7bLPAF4%DiJ9@XY#07y+C|IM5UkUFZCdb6yzV##FKib&n zuyK%G^t)-q3*aib!q-{)j-?}uYG)*Y>HtV9u4;Ks_BJ!NZ$jHX<=!(KtausNdG|a< zSl1E2NiUgrZybAmqXR$KP)h5KD?NZZl}%XAGNuRx=Mtuk|AJI9yGfXBAhsIBQ|H$G zr(PIu+;UBHS}%QH{FDJ%?toJapmPV^6#>%HKS97hAk?0dl|Kg&>ed=^ovmKrlr0T^ z1=bJh&6(wHL1)8X@nIr5Xfam!a;!7PR>rzrjrS%qfss2^{--!;R3}4E6s}^4|qC88G(_;>*CA89RHS z_*0NGHzz4!bIqn+|J`3h2LPORO5T$D0tUJNmKqsI@(xnXz{o+&edm`y;Bf#r2kXTD zO}QEH{SOom1kPy}VP2R_@I!yYiHQe4m{hY3JMcq!3LnkM20k;Qvq1%nFBSZ|FS&9; zwqTkJ4KaZHzoF-UH=@5|#|&j@hfY9uV0Qy;v0l*d5Ry{kdJ=$X{lMY>>nHtK+)kPu zeY6?9+n{)9ln+MuEi;Qxs5<}_&M0L67f)ima;GW6(4DAYjQ!3JP0kkGVPN33A6}?c z0;c!hdD5S1XGW9c+Y*7i@}@;4qle)edMdybIIugp$d4w;kIu&5)UdP8ogT{W68)GR zGCsJ9gN=#xqnEbFi+TPDt^cpLW@nvXx8?g1Ir_fs%A#QKR--kLPyN`t|N2QkJjG7M z_HBvch2M6Cpi`=H9BfgD2N4ez3dRdCQW;wf5jW9!ZLoDCcskD5{p&`_QZ72L@T{D0 zq@#&B{W{T*&qMqtlhdtNtnb~Z>e;Em7)_+VDL@dv`68a*xKzctN>?ZF6fe(mwP7Z2 z<>+RZWb0TrOZhVny2SkxAd5*X%&+nCinrt`_@-`8KX7# zZC`rp}^n$W+?#jyBV*KD|QsbBIr7JCwujm`Dny4Q%9Jd z=|e*xWtL^KBQ`I-TLtOS~hI(RH~u92hq=CL+NeqPMYv9kBCT|{BUO8dn4=? z@Z!k;p`p95cv|;aDR`j2`GSu*9q28HcpTBHPBI&QF!x()ckXrl;z84mTXIny*<&`| z-H~#nnos25pn@p05&hVjc7kb#3fK_HDUHz{@Lcm_S%Y3?Ec;)bfE+7eTYL769oft? z+Gjz|s=ND%Jp7pV@q<89DoMC*TNasYOgSA{Hh4eyp6$I)F(;tRF=gkOR7YfZ6%kQ{ z2q<1?wdQVsAo?FY?T(*i7=23HJfrxCrf1o%heE9Kj6QX5t?zfPpF9bkztioxp1bFG zcfWOUsz8biG^08OjBPaS`IJR{2tWO%3YfQO;1P*b24_a4tz$YmSVim8C+A7o`=c$TV#h_$#9gtRI=Bu35K|N$^QLUIddhKE#sA3LC5p$ z%w$6Y!1e%tsBJ%?Wp}uFb>faav%d}Oji85&KBrj!HlI;d6WrKFM2j^b<^ zb^CkCCEFlAN_Fm~SzJ^(-n^)MW*)Zrh0779UR0WQ?|uwWpY?o(7M3Q)WdP zkhxmtsS148|!=ofGoFGZJqP(9fMx9p#r@gsv)BU3$xs}1{v)tQ}7aEkxRF>)RPh4)a|kCllL1oKrfcq66`e}U4Kz^mgQu?B6_c+W$^TZn}TP-T?GcH315_-JrezlcE@vH*b5Q;xpD?9vVo_!7m``)C}&1=~sPY zgIKE(KP!IvLY@z;||e)+K9MW!oq+MUQJfHh<=Z&VWo}ER%kN3@M8n zU5Xljr4W(tM4+O3W!I0Hg*+*1Hxz3e&>+lkp~^?$n3~C&QeTvW5tNOdQrRNhR$-l; z?qBbL1<==&c3=&#_M`2d_wlpK;a6b<L9Zxs<_D z$d`2#N9%TnOGgbV`Pg1~W1eOG7yxG;<;d9V4L^+ZI2~R2}=K0SZshtLkj+$rVJ|>>qLm0QR9y}*Vpm}mCDh< zD>#Ht9T^XzE6bf_ZV^gK^Yc{K&V4uNM z8uIazC2Re2ahH#AKw9xFQ~8h-VvwGmwl`%wrL*2eqSE?HMTwE;RCY(hL~MY;0PVo( zfnn=Tz!Vj!8CRt5|*I+XHZ4*V%Q6z!;hs#X}|G9Pnh4Q<()%AL? z6X`R?qfZ`5#f6Ts;G7o4m;H^VBsj1!oGYa=^;Gz@TwdbPLuT@bONS*)O#x0JAOZAb z>-1a=T?yiV>^NXRK8-JnPce>HoYKU-G~S30Ctws3_ey#$hEHAq)9fgL5X|d*+VXKx z+g_4|SA2?r&cHDxm>I1&^4St6rEX3m$RTME%Iuap%JORwc!-*)f@&DVdM}mR`urk}^}QoQTcv82NI+x|DSq<2FE^v~ z4h`~cRwEzN!kkqqNte?>pD42mpt`@+E=7!$J0B>U9t`BhjD!HODJ?QLxcs`kTB#bJ zr693yFo7-DLfkgW7o$S87UUYe*sGY=?^d87q~b3yh$iTARz3v-S`7@JUtAf%Kq?uj zbt!!mt1%4|QR*2mBu>49nHt_XNiF9bpxE*Dl{N@bT7n_i% zc#XmW@$0s2S=(*mRO+0j<_6tsFjZ@CtU$J=AjGM&sgZ?qzPS3@bH0raW*un(0e6d+ z4p3*_O^*pD`{b4HYPA8N&4ZS7&c4R$4p#zF)QLFMO@HqiXZmeCn0P@RE8 zaEyw52DluQ*P6>IYX2fX7i_w*`d}w`P^tzBO5f&YFwk}|(-Xf!iQ2O9CZ>^ZQ*-@$ zS97;KhtX^w*MF8d07j_zHd{VxobiCHzx9ixoB_QWW`lrAErgE^_%{Kr1#n|%<0DdX zRqLe@9nU1^fu;tHc;=2el3stooL&b@yhYiyoa}xm7^Pgd3dcdUHb?Ve*Nv=g-vFmN z5Db^LS{fCfQPgFrQ`DIN)s}$Kxri8^PkO-5TQJ#Es;f$XDlx0LR z;Z;WY^U%T#G~n-AVg8%pY^0f6t!*TpKnl}dZWMWh140vrme@2pS1vHa(7iXTSFaB= zphpB9f_BM4$;L%8tMWPdO3o2mYpGMRV281vE@WhiQ@lL5&SA@qxu`?0D#fX-KTR9M z){%}+KLS;3eXxIYqhv>D(LH<;eS+nQM~9bs12~42ww{jZoLJI5VKMv zckdbE#Jr_|ZY89w2SoZ;tDoy5V;mbFfe8ikN{hCRtH$iBRL``y<5LyXMQzl}K`*5kr*Q#-ie&AW?L`2cMFc%c)h8e)W!rI?+yQaNPLWJ3v-=TVn?=0N%`~G~)%v z77#!r1j?|aLv%yy3EEg%rJByJ1XP5%#wDd_DHiQWfTj-zm9$3=2bmgC_dQarMLSyAYAJx zj9boh&m}qlp789P&W2$c5TV3bg5BLUlZGfJ=6n@@cwX#ebg?ghK`AtgueoNypnvDh zz44SyMRdya<1enAUT7 zpcZHD6Wh{|NjrGuc4++;rdMNYK!SY-H`O0YFEvvBy`0V}W+l{{mI`0YB`} z4qu45HX1HYr%o+jF3tO15PXAI{-+4iN#pT(;HmAwUcVLts`v(i0Dk@dCD4?5JO5n< z`}eu>4o@oHVk>K0`kJ!nGI2`X)foZ)9ofV=R0H#Dm`{6K1l<~zX#29dKSuLAGcb{5-$WMKeMY$|BMvM zlRWg2hnJxuAV3o(V5yU&r&RFOrRY$WR1+JRirvbwPTu}{tMPbfMR+%H)BbGjDHd1K z-Lma9{9=IZaMYAKx4d6JyQ;ToWk!SNZ@o<}wcF*AcjOVow5a=@CsYx{5c0kw9(j+@ zB$ZkjYL0%FsH5lQ9WE9G_O7HSm>m_?ql(z}>&I}Dk>1PM%=~89jYr|VH^KM;WZQ!? z9tEo+e4Nb>PNb5L52 zbF)Nh_RSiBsB0xXs;kR*W>h{U9*x+X@)lP#8!o`X$d5@k^LD|*{BB`1Ny$QfjdLnM zX?{I1WagVn#&og99^F2pk`QURqzXips)i4!&3LrN_PinH>yF2PTFUB?0t}%B{$0bgI!ufl3uCK=SqZheoy+nP)sIQg9C-`Wk zUWk^>+_cN=axm0&D?{%Jva9%w;Q)~Miy%Nk+pqGEq_w?jRF&g)8`+-w5Jhl*gpsfxb1c4U{q%1Atsx+XT<@ z#M`E^{9*wA1+v?~o~DYd;2`ITGgF5gB&(O!-g#GbX**vD0xdG)sgEu;n?{D zGeJAR=b9syvGBRMRWR9Zz8#G-wcZhJZ(g*E9t$(dNxw9}NYW3k`kw}7?msb&F-iZ6u6DKo?vE;mhCcPZj}!&NNqNlHAvWFi%7p^EL!EA? zIY5uv4K;RC&3r2LY&rMiAA0$q7F~D-UXO8moTQ@5XwK7u74quGsmVFkC#Q*0TKbq;#|cz(bFw_$7b?8fz+CZE1gr~@CE3VmGbDo<#gB?3OUANxlrN&X#Ub{67 zoKm7?r!1+nV-I=fm@f3p4t;!iLkA(3ICc$r>T}lT1dh{S5!NG$Cdn_$+dm&wVg;#c zm60vx$~&Nps8mhhfEcmNJ1b!Tr_E`{4raiMmH0qAZy4{64@Uh)BRbm_Hj^i2n3CWF|BndcO%1mhO`-k~CF@y=G9 zwymz^J7Zb#Jfi2+Ex9afU!#r8d0HE2qH9gwF+T!$f?Iz?NB1CBvC5_;ABZeF>_8I^ zn3~9ZwJ~Du^WhJJ{1lRzIW^bWFMX>n_U)-b?rTp}F?eBtG&QN)Jx@F6H%~jB5K;qo z-HWC@#UcbcY~hA;3$a`C8;MB!Y_M^A0q!O)WisFEMu7?emF>m9U zVXV(>vcCs(i2s?UXp>q<)!c`qog?E6nI1MrO_ZG(;U?1@Lh`uF=1|#HwB-W-3Q}D; zfat#P7(*P?WvzyWN(Xx ztdFc1(k>0p8^WEAF-*3*^2S7>jV0*KJ9Ast0wrRGA;ICgE!X+e%;GzXRmJ?&0thCL zu=91jI%CFm$?1&bx#eBmI)8|!;nwoK4qn`RAH$wU4kKy9+Y_7^Sn@G|)iUN?m^DSHhr+V$;+W>w?Ahj zL-4n-l@d$0cF4EpZr>H-&=luYq_Jv#NhQlTjLR_0>#%5f)jpU+c}4#nh= z19Na1XAJ1fW*{2J!drX{z(R(@s$}K(Tg#W4(QZ((qsTnQWpe^`8@pwqhLqVf_|>2p zXatvXL&oC3v@|sR-MvTKhC$<-w$YFVvgdtjTB?OsgU}~9o1E;GG8`^;%iveAegcM; zT)^EBr_2a}02(lf>X8O>cRB@=CvdJ1kfLwdeO@+THQp>WBZ&3Ywq7AdTHq_;wbqkqH73j-X$H%WGHB`7;-%;UL5%aJ}z z1L2IblhLwK?UBUl_eVkY7*l@>A-8H)#Yg36HS{Prl=6m+_8XYjgHW@WxYzG{eRa&M ze{l%inOaZ>h&U~&`AopD16OtnK+AFjr^`dF1`Ybua_x*8x5Xcqzb9NzU^t?|Gd30B zHhhk~k!1ygBqgo6N0&)6S;Y%HP>&OG0( zty#ml)Yj*sdR6_MmarQn&a9@g@x65b@;jFe z@hmpr6SNOvvV1OfT(W?AvDCbKDlL{Hk>6Fmg*wSv3M(v2szfvr1ej5Uiol%{z(ow5 z@d;SU3a{|A(eyG_fH}FRC%{+SFR}<2As&$AMWK->cJt-Iy)i-{Z~)qpEiJu0Q2;x$ zN&Oviu49@y??Me#M3 z?J2D0YrmDJqSPTN2B$JNCR_qpfh{euoQTDQVrTx8rLQ3xaZ352Yae=f6aD);F46zw&Q4(06nu?`I_lIj%(>(N= zouAkyQ{DTplSR_adIN|&rmif6W5^Q&J4dn__oAXujoe)~n*h7l8{XW`Wd~1-m@%c3xLFU$#>+Wt2ApB$kY};wfNWz>qLHicbhX%f*(4E@=PQnC zcwQsIABKOtD+?0XPuj+AvB$M_`CjrCTR-UkOuj?r88`4|z$3t7>Udv-vtAY0bhPQV zI2wR=F-PX8i!$Jb$Y#{%Idf=Kw^P-G1&2{e5w+vkk+2DZiiZo6$%q2 z@3m|R9CSeoS&v*RUu9-~UT#y86@iaJx_5i3=7|x)7|Nf!PY=mKkU9l*UH=FCp;)cW z#XhX-z|4fOBkH>}XT@Q`py1>9#qiY9t&3HUzPXS#hPtgF&!1Jd%@HGUckqh z3=sPcqLgtM0qJ)N4HN50d@E}MbzjSQbK^kABZ!y!T=W?}z|VVzSG0d*yRLV_ z&FmK7rSn*ON)L2AI%}DBSss}dh#oIXY63+Md zkIt=ZzO4a#4^Zl?BIJ}dbj17$s8~X~(tY&yM z3$;57wQ!0kcj2)nf0WO(Y%<`jHO$AsiRIguX?9ACO^*@~or|}ta_VF#HnIk&k~Zwc zRr%p&;D*EMxA08oXaVwTEaFwQ^FB+z0*ew2lsy+=wH83$him$RIxaCUvl;*qnePol zlUQ(F7V_oSy5APVat#h`?;$1E&HZ|#!T^{{mcR?Ty4Vqe^skWt{kUVQjO?Y?_K)gc z8@B-|BrbkSbBZq=#U=ejY}X;RiZey_{4#pf^f>qesVG@THLKz*@d+csaTC*$0;TxI z;$p0(HLZwQt9R_(t6)jcjd|G&+B*;BX?uTg5=K3eodcrGIRNl^@e(bPyl4Eb{9Z3S z{%I^}jpbYwwq<86qld5H>eZoA9)6?`<*e=2Gek=r!h^5Sb~8`0+R9d1L~eD)y1PEE#lTUNMI(r;J+HvCrbaaNT(7I7l9haKQ*bYc0~x0GO3 zCMMvxIObZPwAu0b%I50##ee}`z$2{gT*B$tr!T*v8{i>+ORn&1@HL%*!%BL&ptlg3 zS)Oreu*|~oBcsVWWNSG+L3LG=fQ{0ZsB1=k$Me9k;DYcfR$J?usUR9 zDnZJx_q=Aa1%}yEH6@i4;G{YJ=l4vvimn0(lH5SW)=Il}wb}*sL3A>u{LFN#BQV~4 zfEqh=K9kfcUI0_d?gnu}>tw{{7#%SaECrV;J|TrfjHP8zqhqXg=8rFuYjTiYz%IIA zs&4DhC1W8h$0k3N9yr2*EnEt6`wdac)l>$ITyFefk>m!|oO*q4u2QF4ym~1pi+c^; zJ!fFALPmx>hNzHPLmuOp3;20wY+k(8qwUb^1tZC&uy#F&6h2GE__-0_xCUQO9cD~6 za!2!J@fDcqz|Bfy%q)Q|cZb-sBoP1@iE)7iP_i}Otk`q@-5$1?1(yzB5Ll9J?eo$j zUk=JebZI{?qpX*Mh7AuTW5%Bp1}r}pj>T3^kebr~K6kAe;)oh^0n`9s2w^r|-8$wg z4SB|}OCB?R9%(V*N#Q9@y;2{a1DpzJtmoZ6vwNdao{feb_Ze2YIa5W6&D!w##@L7~ z@>P*1s&wEglGoYex0UV!k>t_dx!9i1@|91fS_|dDQkt7I^qz4wQ1eTxg?E#ClqDHM zeW3!vVt$@2z!Z)DK_Kf?xSDS5m2?6ayBt|D!9847$LqP;OzW$$pe)*f5X@qbGdf8I zW~y1JoVr}5lu0=wY>i!Z`f%n&Z|F1N!W(UXJ(PuwwjNCL2LaN1dh0uw`U+Lp!e=f%R>4|SSzvtO4$ zUQ`d1;$6`aRRJpw5H*qpQx+EZ!d)#e;kVX4UvKY!xlKn5m{|knLv}f2t9QzJnPJ?= z7XCQ&;MEl!XMVO}A3QZJ1X7|mson$*lgF6o=#?dt;$W&L=V1?8Lo=KKdiSn~DXo?B zZ(e{S&Mw%L+wPb;oH#g}o$iCAk6nl$+rCG;MsXQ!iNtX$c`5~0na&LcInRC=t|u1* zD5B^zXWijypVQ;tvzV!DGe#xn-f#oI3K%f_h@E{01L)jPrm1G_fyK8T zX#O&o8G411fp)L%2``_i^J-36WEs?v^kZ+;5^bEOsDz$f^-wTI<9$RJvPS077ajRc zw@PDrx(48f;9~Hrg=Kg22LMpI9er=MvR5jSxK`J@7jXB&x_TpD6Rw5l`_t)R3kv2_ zEuk+3fpCzQ-Lpo;h*r^ahZ8Dh-g$-4z{zO5e0eT_W$F}T zLIfPJ$fOlCvSZEXXvuV}Fq-C}Faz~G6cpUc2Ik`zBOOe)JUgLKefv47>7r?=_dTw< zw$*{jma4t+*<<>WenkC>J#c)TdXDi z1kdxPgK4h0mZ#B1X(n*T&1cIF%SRa*@pvarnwV~DmsH19)pbCrkRaugdw8~4+kjbT zO*aYU^YQe~u@jKKQijcELVd)rb6sVqOYOiFV2Akos+I=WhV3VSiDhVHQ3gVYfH%=Q z&>vR7&klR0yQmNbx*ZQRtf-WKR704y^0wO!i~o{Vu5mh_Se29*WvkUt_(~WLFbJZ? z=mq6i#rUle$21cNWvb&@JCTi!dJhadlZ~vkioHIsW=!c)Q)t}?d%C%82EWONsY^(D zus?x|;?~}08Ul&?-P;G_Ib$oZep%M|^4uIv11c@>F&mY8r4PyS1_SD<-t7 z&Esk1M&dvoQ|6R41!z}xd@8h*nVA5LH#0__>rB%;^R3>$*ouIUl=2V2i1NUNe!wMG zRU=3-Faf{d`m7RVz#gc#-)@EtJCHK*J~D7Xy$|ZmCdUr8OaYt+o`AUa1!!?yCzYrX zgj8sc+DX3q$imnoJG@@4hSxx$===`R4)p;T4>49w59h~iV;N5m6)3T%Jr(Syq*Udj z1=8+g@dEtgxgg96q!rPvjimx^SK8SC3NPH|i@t@1pjfTr)yML!0*lANNkwQ(mp2=w zgB+r=eo+m)!b47Vduj7SnDcSog<*i~UYUnza8o9Y-^~yV{MF3sv)3zA%w}fC9-Hmx z!MVeHV6W%zurb(}YW)l2Z1+1%jkHsnvq{JO-QpYwTrnrXDO2#q%d*#I^ZNijWa1!8 zoO6B-rQ2FlXblT`RIjrr3^ee(=hx0#HcfW-HtB6-papf7kr=TWq>Nc1RrChkTHtE zu&AB(!C&mCR$Fs#@V}+M{ulsdymDv4fN{Ypqvx=5O=>lGn7@JLzR@vzHPlp&@t-~s z@ai`jlwp;ByVv#GcYloLGAa+iSun)ixzUx;k7Z1u{-wvUcpG}+xas`Yf>@*Vjm_1y zxwZbUI3OAO-UIo&E&Px4GWsxrNy0DX%YdfvWq`1zI8gZ2&3u_#1omY5)J~c7my2ru zCu*wOb0*AWAl7Egk-{}%Xwcu!<^Nv}w-g7>YOtWL)P z;H|$Bbe)7tTXU1B(kR0+mnB1rToVBj=7GV32^MarzWbhoI+QAQO0A%r;CCMg-01Vs z#YXBDwR3q>-bfsz9Hzc4W?V%lcp{erXj=Z&E!JwA>^Z}BKOIwa88+5=dC`kIi%%RN zZZ0IN7P&qFAPN4tI5gQeF$7&VY(zY&Jgzdvv_ttE4hd@)I%Mo!DrU70)yqj*7p+& z4jHt+IyU1>`bs#g8=?`Qq(Fb#1+MpYax}<^ZC$IV{WIs9kmGK37eFO;Y`HP0a5hCc zb%HhV?A6)6%TwTK5;w#HRe#D)MTtiQKT5e4{&hvwfjTXs-KtE$*ozD^IM~J5qT3LPlOLgxh;q)tH}^-kXR2%nJ6(PdlQTn(N%!#yec| z%u**Fo@Er%SN1;O^zSehw&wG8smdcPWSCa`Y5+NRDqh~lz4UI=s|Tm7Ze+&1eT&F` z+64uMW}_hT$+qL&vmM>x*rgH&Ei)3 z_L;hm`Jr?5NY4_aknTZMTUvjIV8NewixCv6n{VzvXbmn=?h$t12>$PAx&XYRp7YglHVn4Qcp3__Mf6qfX zD zK#c(C?|Ofk(|xh{i45Q(j;ZQi%{*Oif`x^z#uK`-Z*#`TSwMbPSb0QI4|@_-RJ*f4 zvf0mmgRsbhq*g{qtfOhz0YN9H_)|$ER*0*vH-QZ%V95CJ#f{&XZ}z?2Wt3_uH4(oj zD87sX;IR65*o>`zj@ukT7qn-$?I;9q_pFcuU$--vhKcs>!)_;Acm(j0oc*<|TeIGQGI zU*~Eva=Vkn5#Y5gY6FWbeE;?r?n)~Oc_n#F*)&jKRzh=+Nc_fgJ?}U!J|n$wN3$|0 z15KW3K`*76OL2h17><0MmRvGfqvA|_z?aRY4eK&wsO1&sjibi6r#jlUcC~=iaW&FWGXQ*43)iZ~ObgmlL zqY_SUFP&C)n^CJ?kVh&3SFd@nsQ`eZbx&L>!G zaI)cdUYlEhOZf^Xcl-_{oCQvRQ%5RnAvSdb#b@=%uV1Wv)ON%EL+<1?#S7XZtHOMf z01tHOWUaQ>g{i!*xWXoB$5A3iq|ZnY2ECW$V0vou+b581!>a_@JRWM@-57ZIFXau5 zJ~_N4RuIo*erL)6Xr>;ZgEAxqs{jaSf_N062Dbk7%?Da=%R`h1_cd$B#S>-6d@{H2 z?ODi2Pw_$!l;kk_4!-TuYh||NV^khF<5RJe5}Ih+&tkn$ z)asPqS-3lAcrDL)4+E%|iOJ|Yi1y!SmKxGbR>D5sf&wkdW{4Q{`XNIQS^YRUbo2yU zzn~K(j11`I0VLXY+$skOk;@1HVEu_%o!$*ic6K!Rph<(Ih0Xkaza1$DAtW(-*TUn( z#CqIJIHi=-&#$S>L_`;_W%nOk00dkRaD@RjwPNK{NiErayB57j&TYY(vRPt~#?auF zHghQAAaHPvTN-&2*^6CrC)G)i1eSR*W(t_tzr7EezNw%)StV;hbMc3V;E}G#l;G!s zq{r6BvzkIlrS+bS07}r@)u2q$9e5+W z-^nJD)uG+7-`^&4lr>R&oLOP14-K=okiGU#~-S(Wlm`i*)%CVib`1bA*VT_p1 zf|?g58@&rrJW_M%Z7>M66#W5z0Nh%2OF{3_m2?K1 z&zVMEz;}K08%S{>&FKve38sE@#wwwP6Av0<_!}$f)4PgJ1rz#3%J%niY$K81 zaKgdp&1f=b8_(1accFHRR!oOM&>XuwPmzqu9ffdV3#fYe|CjyS>UVi0Rc=qT|K;75 z>~>1)^?Lj1&1wnC__uXQwy0*4I^HY&+fQ13jJ?IZ`}l7wAssgBcM?!d20z6*p1A0` zGei{)XZoK%^lR?j;z>SU9tZ*Zk75l9Ql~&lxPcFWJbrT?*Z|09yDIoMU$~>e@4?11 zzJj3oGj_i8$%Jg~UY%uNe6b{ipRb+7@vuaK_wQVxDAaiYN5 zDTb4`SJ$0t?#A@Z7DVvMG7u{}ytCnr4g^eWVj!DMg4kv3SCG{D6WOnLHn+2a2KmhY z#FXj-MWd7fKh4_+?iur+8Dk;+XJ9LL*0n1`z8tiKCyw34IHLGP(r?AObdqHe8=4*`&Fbzcw^o_dz1b3 zwfV_8u{n_Qo;LJlUxeD1NXo|AxFA(0+p22c_$UZ4AwO#A2|ncFBG}y&j}f;6*VVi* z(+{xv@++n_qBVg*zcTZYKiTk0zN8Ffl@BkL%zQm(S)Op839|E#QCqr>~a6-I-EK8M6QW-H02z*0padnY&b(^Mw#g456Vb`Il4%+ z#3$HWeG|X@Y7^YRFONp{vvsBq+*m_()!yE!_5!93dK^~VCE**&5>Eqdyr^ePZnp8# zNprp3S&%KxrZFaHF_QtB@2mu&flO4f$aqQWx359L^~e_vS>^+3Qt4y6J}}gpG`J4@ ztWUoNX3;Rg7U~}cnEse}rx8oFZPaB|Z zkhxcYpM85ZXLY&BiMh&2?_Y-upwmovyyhMj+OXk$wp;$5A|(j%ORMcAC@$F^ld9sR z{^{-efX{~bJ}Euts6vLIU3G2gcmhDM7PTIQYbpzt=#lT3qB?z`{r1AU=2vVNKezI* zE}ENh>8~iS@v>W?ht56QGCN1D(wcE5aX}#jT=Cg7V*Y|E@7&op(pBXqUj4in4uP`p zn`1#_I^3-T+5z+1Oy%XvD2IjVL!%F5uRXf3E>Q2VNw`>DCa4c;^5^L*g4FF2pCIxc z3E0Qoud^O7drWk}{%(Z?{*}<1{nUf!j$fXQ&3?sP7V6?c>^Ed$$Zd%oO(m45T;`Se zbK<5*K56aqqks0`D(C?w9s~7F$~J`}vi9q;j|Flh@I*dojm&wjbn531jAWNs&}$?) zOSsF}YrsKC3%L2yLzv@@$|VQQuJQQBwKNyk^P<} zbJOrNwSCR^p;K}jcCB0c#VAfP zYDnyhaLA?xBkOQe1Yk)d51Y>5Xw&;-OK>ST-{?95?rp`a4|Dx-P#euL=S37xEfx2e zDM+dtFPL`YPlbT|!WOeG((`$ZpF$l!hKY>iuExzgjk~E#4CHAk2=DWT7Xus;pea`$9`<%s;m=vqfw4zR>YRm-LR zqo$o4nI5JVX|UlThO#st=u-j?Y9TDQv0ufFmbie#wXLRNHA&# zbgGvW&~L@oH6s*v&Hw^m{#hd2w8FT-AAfHH6s1s#aP!E6&fbw-+JK^^bMk|Ve> z!jrclg)Bk(`H{9hyyUktJ9?3?akUHo3Scc+Bms- zVH<&`J!iUcW%PWtb4BF4!f>c#2MW{Oy`!;J#k&6vDOXm^TD!~jZ40@r^e2x;##p5a z#z9Ve!Y4oY+zD5-g#8_kf;C;abfb>)jMDjT&ADGFZ26)8peLs1AV?*^_?OkGwjv3* z(-3y&HwOgSY@wCThTVRoTM6C@3bZ z@Y4Jb*)5V-(WZ6`xw&bDB5EMWhCl6CggT8#J4f_iQ@Mc<39Wu~Y(zR(H^3WAfWHvA7+(iwqE)2=-D&I$E+P!a z2Xh81XA+>s9oOWxXJ+7?`Y5Yc1=!BXC;6K6u;s5zERW2SYofT6p?rW#h&LKEz{>ta z1Omj{I7h`hK~MzuN@~M0I}JdVdQCn6m2x0dWcWszqaLS@*m6CzS16(51gv$TqerP2 z=FBbuEAFZncwib~}H@4s!4Dn)2sbOc|RF#Nbm9Bc`AB4cu zj4_(0Sj(D{``A9Bzgz$68wZx#W!KfVqTPU63&5P!2$NY|m^&yNr+`qdb7=NTFdhLH zi6CL!KL*@D#_vtc*eX-;cMyca zV2ERZ=U-uj-qLL&vE2+?6Gf65)#P%jZ7p+u-#={G{$AJ^Y&o{qKpQZQo>GUoRiqG5 zo^efsF(it2B(~z?LxIJ%3+y2PpO9cL92(JvS_SAjHWiaXGypY?cosL^>JCOZOQDeN z*Ge^DW0WYN$d!2Y>Y3D+cPHsQmpnC5s-qTp(<@IZ!&Wl{w4TjX3z89BndToH&o-Bq z8nN!b=IGBV5 z)+%D~3O>vD4uw8qB~~9uL(umBh=99tz-7a2&;7lQ_Z>;^sEK74sr!#Th&$b|WprvE z?1DFph>`ddLe1ic9}*@!wYXZ_>EY0SU+<)vBNLly0{NYC@w%lJLYz@rvc%?JF520 za~{&0ms-~Jyg1=rAy{fZXd-hD;LpCyCZl_fV;sQP7C`V9T8BPD_*;rhmBTd5ghM#Fa^w=Y9fCUJl(~bcf z+Q=+IT>Sj-^8(cq7}1nq4)Qa<1!BVW1h@T(w7VWKpl&pK;5gVSK&wq{ye=4K8%+80 z?{{U3`F|GXLfxm`M@Mzg$B2+bUueb0qy;y zZ^<&fD^NIfr-RI#kcBeJU@BT#Wd^^aq{F7b#2T0k@H(Kq{QYQsGXmc;8iG?tYH9iA zkVAJ^6Q^AUFCeXU@8LsHBPMMpY>Qi%Hy5`ce4g=Adg{E!U1l0(oZ5H5 zh|r{1H6gA~QEaBm9I}q^xB&6aQVPxx(GvP@EY~Q$M9!;tRhH4?=qb$!*4f3GjAm(QM^!- zLzr~ER5r~bZDne`IY!^^(e!Mw%tYJG^#iA}ma=hUE19(%SaeZVV0G&Drw-(Pf<(_k zQF_gyQlqWQKOf58T2I}%z&_-^4_lS5vG^bR3+40|Mt%dn2G8q zIxWs>6|Q=PFG7d2LY;TlNilY){lV0fd+EpO?3%{i$c2uQZNu|*E%mRfUlfVHf|IB# zVN7*YZk35wY}z`>FQ$G-aGm5Q5$z5U1P@(VRHRET`-X}s+|wK$kVMnvWKeiRJaXg> zdQyLdH<+%BE-cEMmNBoTxB>$8e7@Hpuy zoBG?79Oi;tcvl4f)XX)F8=}jneUu<5Kj`vfB?WnB&?Ocs@xg|C5*pQ&p!$Wq{XXSopF_#$8;+#8nkX`yA{VM8r_~}?H*S? zdC^1{!H~Hz8Mgx^s=p;ZRo?Dg^~{)UhpPj6%%w2=GklaU^MgdcN9gVMarX96TVeaB z`@%BN6%CQbQ8zn@J92&HsGZtp^2R1E^f#!kFl9m(k1^7QFGRQ3zxF3c6~s$gtVLbM z^OlW5TfBFYQLF56N_3w&<6{m0*4M4>uERAPb}%IS3h{?4^nx5n17VnzWQq15900-2 z20b==RR0Zu6Mtt+aC4l9f|dI+8o|1(_m2oazHIBb`x1=Tq7oDsN3EmRK9>8lv~545 z4sb$@Jiz1sq|iIYG}_i_@% literal 0 HcmV?d00001 diff --git a/examples/text/text_font_spritefont.png b/examples/text/text_font_spritefont.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd4aa03d328407a823c6478d2ea4ed2fd4d0ce4 GIT binary patch literal 19567 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�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 literal 0 HcmV?d00001 diff --git a/examples/text/text_font_spritefont.rb b/examples/text/text_font_spritefont.rb new file mode 100644 index 0000000..9f2cb8d --- /dev/null +++ b/examples/text/text_font_spritefont.rb @@ -0,0 +1,83 @@ +# ****************************************************************************************** +# +# raylib [text] example - Sprite font loading +# +# NOTE: Sprite fonts should be generated following these conventions: +# +# - Characters must be ordered starting with character 32 (Space) +# - Every character must be contained within the same Rectangle height +# - Every character and every line must be separated by the same distance (margin/padding) +# - Rectangles must be defined by a MAGENTA color background +# +# Following those constraints, a font can be provided just by an image, +# this is quite handy to avoid additional font descriptor files (like BMFonts use). +# +# Example ported to Ruby by Wilson Silva (@wilsonsilva). Works with Raylib 4.5 +# +# Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +# BSD-like license that allows static linking with closed source software +# +# Copyright (c) 2014-2023 Ramon Santamaria (@raysan5) +# +# ****************************************************************************************** + +require 'bundler/setup' +require 'raylib' + +# Initialization +# -------------------------------------------------------------------------------------- +SCREEN_WIDTH = 800 +SCREEN_HEIGHT = 450 + +Raylib.init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [text] example - sprite font loading") + +msg1 = "THIS IS A custom SPRITE FONT..." +msg2 = "...and this is ANOTHER CUSTOM font..." +msg3 = "...and a THIRD one! GREAT! :D" + +# NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required) +font1 = Raylib.load_font(File.join(__dir__, "resources/custom_mecha.png")) # Font loading +font2 = Raylib.load_font(File.join(__dir__, "resources/custom_alagard.png")) # Font loading +font3 = Raylib.load_font(File.join(__dir__, "resources/custom_jupiter_crash.png")) # Font loading + +font_position1 = Raylib::Vector2.create( + SCREEN_WIDTH / 2.0 - Raylib.measure_text_ex(font1, msg1, font1.base_size, -3).x / 2, + SCREEN_HEIGHT / 2.0 - font1.base_size / 2.0 - 80.0 +) + +font_position2 = Raylib::Vector2.create( + SCREEN_WIDTH / 2.0 - Raylib.measure_text_ex(font2, msg2, font2.base_size, -2).x / 2.0, + SCREEN_HEIGHT / 2.0 - font2.base_size / 2.0 - 10.0 +) + +font_position3 = Raylib::Vector2.create( + SCREEN_WIDTH / 2.0 - Raylib.measure_text_ex(font3, msg3, font3.base_size, 2).x / 2.0, + SCREEN_HEIGHT / 2.0 - font3.base_size / 2.0 + 50.0 +) + +Raylib.set_target_fps(60) # Set our game to run at 60 frames-per-second +# -------------------------------------------------------------------------------------- + +# Main game loop +until Raylib.window_should_close # Detect window close button or ESC key + # Draw + # ---------------------------------------------------------------------------------- + Raylib.begin_drawing + Raylib.clear_background(Raylib::RAYWHITE) + + Raylib.draw_text_ex(font1, msg1, font_position1, font1.base_size, -3, Raylib::WHITE) + Raylib.draw_text_ex(font2, msg2, font_position2, font2.base_size, -2, Raylib::WHITE) + Raylib.draw_text_ex(font3, msg3, font_position3, font3.base_size, 2, Raylib::WHITE) + + Raylib.end_drawing + # ---------------------------------------------------------------------------------- +end + +# De-Initialization +# -------------------------------------------------------------------------------------- +Raylib.unload_font(font1) # Font unloading +Raylib.unload_font(font2) # Font unloading +Raylib.unload_font(font3) # Font unloading + +Raylib.close_window # Close window and OpenGL context +# --------------------------------------------------------------------------------------