From 4c2b7c7c3594c31d4fe5f98ca532e74bfa599835 Mon Sep 17 00:00:00 2001 From: th Date: Sun, 26 Apr 2026 00:32:42 +0200 Subject: [PATCH] 1.2.5: text font picker + 7 bundled Google fonts + default text fill black MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New src/lib/fonts.ts: curated set (Inter, Roboto, Lora, Playfair Display, Bebas Neue, Source Code Pro, Permanent Marker) shipped as local .woff2 in public/fonts/. loadFonts() registers them via FontFace at app start; fontsReady ref re-triggers Konva text configs once fonts resolve so the first paint isn't stuck on the fallback. - TextAsset gets optional fontFamily (id; undefined = system sans). PropertiesPanel adds a font dropdown next to font size. - All five render sites read the family: CanvasStage textConfig + clipTextConfig (Konva), drawLayer + drawMaskShape (canvas2d), exportPlayer engine (uses an embedded FONT_FAMILIES map and fontFam helper; runtime version 27 → 28). - Example HTML export now lists used bundled fonts and prints the @font-face CSS the user has to paste alongside the .woff2 files — fonts themselves are NOT bundled into the export to keep it small. - Default text fill changed from yellow #f5d76e to black #000000 in both the main sidebar and the SVG-scope add-text path. - 8 new tests under "text font picker — model + render + export". Co-Authored-By: Claude Opus 4.7 (1M context) --- package.json | 2 +- public/fonts/BebasNeue-Regular.woff2 | Bin 0 -> 13768 bytes public/fonts/Inter-Regular.woff2 | Bin 0 -> 23664 bytes public/fonts/Lora-Regular.woff2 | Bin 0 -> 21148 bytes public/fonts/PermanentMarker-Regular.woff2 | Bin 0 -> 29564 bytes public/fonts/PlayfairDisplay-Regular.woff2 | Bin 0 -> 21856 bytes public/fonts/Roboto-Regular.woff2 | Bin 0 -> 21884 bytes public/fonts/SourceCodePro-Regular.woff2 | Bin 0 -> 11656 bytes src/components/AssetSidebar.vue | 2 +- src/components/CanvasStage.vue | 10 ++ src/components/PropertiesPanel.vue | 19 ++- src/components/SvgLayerPanel.vue | 2 +- src/devtools/tests.ts | 137 +++++++++++++++++++++ src/i18n/messages.ts | 5 + src/lib/exportPlayer.ts | 48 +++++++- src/lib/fonts.ts | 111 +++++++++++++++++ src/lib/render.ts | 5 +- src/main.ts | 6 + src/types/scene.ts | 2 + src/version.ts | 2 +- 20 files changed, 339 insertions(+), 12 deletions(-) create mode 100644 public/fonts/BebasNeue-Regular.woff2 create mode 100644 public/fonts/Inter-Regular.woff2 create mode 100644 public/fonts/Lora-Regular.woff2 create mode 100644 public/fonts/PermanentMarker-Regular.woff2 create mode 100644 public/fonts/PlayfairDisplay-Regular.woff2 create mode 100644 public/fonts/Roboto-Regular.woff2 create mode 100644 public/fonts/SourceCodePro-Regular.woff2 create mode 100644 src/lib/fonts.ts diff --git a/package.json b/package.json index 677c089..c382c7a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ruwio", "private": true, - "version": "1.2.4", + "version": "1.2.5", "type": "module", "scripts": { "dev": "vite", diff --git a/public/fonts/BebasNeue-Regular.woff2 b/public/fonts/BebasNeue-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..92d6a0f7297276c67ade85119be8996eae8b3d57 GIT binary patch literal 13768 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≠ueS2(Z(=p06JW_4vixfA?-eT;=$)( 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 literal 0 HcmV?d00001 diff --git a/public/fonts/Inter-Regular.woff2 b/public/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f15b025d666269fb07daf0263e54231481e4289c GIT binary patch literal 23664 zcmY&;W2`Vttmd(8pZD0dZQHhO+qP}nwr$(C_q*BbP4>wo)3lkknf_>|&$!8nG6Dbs z{0D7&0EGWGKv4bvWZ3_!`yc)P53B%r?0`B^oE3X8eLf{+0cBl)5LQG8sDLj1fC3cg za5w-!Rv=>Fcnpw#puyVU1t2is*l9(A@Tqmu7%|~nTFH+8cD^_e_^G;ScY?_tJ z8v&a~{G-isuYZ4L#N`ZNgIeH)mMu1+gZ1>T4v=9tmT(K@U|hAR?!p8cJ8 zzgNXcxgBxKvWsl4Kx!amez|p9c}{y-3|S0dLXFV|a*5X;Bq5t5BEs04!OSqoNzGGr zAH614iN{|hCsvxQn|wtoQ>BS}YqUmE*h2Yde<_(Nn^+|*mS{Snl9r;a)dGUT@xj6f zNCb!xDG&`+sw>qPB~ft8mzjMFs$%eI@emT+#8}Q~D#AjINaiPN z?@Kv>G)2Z-lA3i*z+^+u<9TnVKa6fUJgS40xKP~VGtDyYUX-d`+URoYy=DlRJi z_R!hKboKVX^o=U1XItdqfmeSyty*7gJvq)Z#Y}BwqU6zs1@TBl3FP0HL+XAPy+2n7 zRCRJ;s<{O^!$I$cD?-d$bRVhD*M4O)Pxa(cNaP_) zZGN>MKSgQO=rK3O$f?%W zfa+aciY=05B86!48r4L1+-s6|)|Fjsqu>`~MgV|81kL}%caV$S#cIRaJv*3=GdT?_ zb_(0?x(U`4&#GY)*?2#fKhK};rJrX@AIcue7KWaFH1j@xm6F={b#O7#Gz*BN)#M0& z`2S>jIDi3fgIDzUL*}7R{6>H%fW%_?LtLUG<`GkC{$`r5XSb-LI^$JC9PZg*Nnes; zxzZF>ni&7sR4T^0iETmxp{4fKff2XJdh{+l70!aK021%~$UMYv*P;7+d3B+rGK`Pw zU8hEhL6%c2bbqR6jOreqy7L?SW6uyF2Sx+)#QEu6(B_X0zD~Hh$Vw{di0rnrFxHBv zr?>Jz+PO9LDz$l?QN^l`A{xkzqlf?OHt&=y8JkNxZ$=Rg)C(9)ncQ?qZ){$tZ@+ir z%9=Gakt)BVgbw5N7uqXfa)U%HV#ln)Nyqy35J3iMqQ^O0&~u06*j31LpcrJQ|FS7t zeyXcWt}1|Q1j1*a@L>uQj>(1opw@8C~>vTh0j4GEZu1W~etr&>i;Ev2g-jHn-y4Z(Hb zybh!?fK46B?2M?aqNBIbRQ`D>`UkWP)s8k?U2)3XQe1;SXe+pnC3swv_niEKnVTm9 zIdD;h$rZfx_LI?%0?Q7EO)n3mvTlI$a=JzebT{Pq-g^u80B`c!U&@bR+u*jvk6lNr z-?!7}P^vd%$F~gREe#Y7e2|+&wOzJvP_Hi--j*>ipl@z)x8{?6*&(2(Fr=OW%k^n6 zuw!=;Yz09FN8}NK?&rXFFrvX`Vzx<0{TwI|ec7vB%1$k@X&q5ql%el{k$Bc^Z{YR; zE$U1IHSAAG#5X7qWDKIRU(Gin0Tx}hCj>4da{hs#@=Q-vDkxi!CiYt6D1Lw@|YNT2lUl&aA_TCzL0)qK`i(~O{zCk9$>>-wX1IfLZu#`oQ6J~$=I@AuGv+Y zfl8IBIHM!dM5FZ0_1c~&Q40$>rnQMd1pC#05RmJxO@N;ZOd z$_=qTrJhVQXeQ3gg(EW(JM5xxa$y1}g{J(IS@tLgvYKpb@Wlf+9`Q5?2Mgs}VUd6^ z8a*PzZ~ISV01WbG1}tv3%h{EQQrLxUgkSq*L7YWqwsAsvkHEyPaGmL@Ot;2DtpU0c z;EwR6X7l(~{v_Ul^B7qDXKXLxbz?SiuF4oPKzey|BY!LJ zWhZ_)wzCsQOFUS(s-8xqgeZ0yD^_3w@>X3SMH|=E3>lqoMCkPXp-^uATN1Z~t)6Y5(V49D6opq^6=b~#4!4)?rrhVY73}r; z5$-m*BC8m;1%~z-Z|2)V%;#_`W_ymDKBJ`#<1l_b=iObjUMa4^QrQ^8c;?~zs}2&Y z`F}8?Y4wOpPGcl9IMZ?a9l}~n|0>b@I|6pYge;1Hl7x22A5M(n_2ba5xr_8Tw4 z4RP+t#DJl)SDj8uN8r%_KRoY^D*#cf=Tie&bOVFp4>-YWK@?p_Qud7Ih3@^Y7RF45 zV`$x;q8s~ZnXU_(C3=CfP^;Q#jw%j;)+`#BntawKd0zorBNo=0tDqB|@P+)rSWB<; zxC=FPe38_jPIv_UI~V*gD*M4lUD||$u)Ar}VT;<;N!>PN#XFr|dKW)l1XAp^GA}Gd z7)X*X=?=>K?#qywreEoBTidaRL~bs9uULBT#Il05-l#jhGsq@M+f_`8T^W5qqe2NF8qokI^OY_JoA zA041`qW3JZ{Mmm2IR*v<5r!b#`JzPAcxud&KC1G0Si0#UK50BJTiYaxCls6Q2XBL> zP+Q~??w-#1Z9}keZRMz>4{@y6%_{3DczqgepP1N$2g)#mG>G~nwz?)F$Y~%Z+-POKG1uW$ zbzdm7BSaViB4f1mO+dG+4@{zL;oKgc#^ZDW4=~xT1}izjh(ku4$+=VIL`Dqu4jnmK zJArITNX{~GkZ~XuD3>-^&3Vq zyv!}|J&E8D4@I^MM0YpkW6=Qz$@Q^dvyA|z();Pr5Jtgb9a8m=ba0BezbThd%RWTJkCDU=vS^Z4}CxNDFllF>B+b|bw z5L;VvPueQ@wksHRTnRe4HJ-cDZ&LGlrksf|uoZ+(QLUUw8Y`7wQzr5qW320jD~y#* zW@gCmvMU!EwUQ(8Oz~~kigNpNUttC^9!9{Z-Z6v@{1b=>qi*h7!lJb4Wi8a}jYm2o z8i{*lj0wVHne8OSfpBW|#W4s&IL8H9XX#qX+6Q1b zUpP%hJv@^l_d}ChsL#28neOPRxL8$?r41bt>ldlxAux^6M|)umoS3d0kD7@sH`-#N4SWn^iLQ)ip*Lsdd>Je>gcShspNG&VD@oVIri9CJN%pXvX(V7{jR~Jq z8~|dt?`M?LWru(tk{N=|=aOp`WD}8DVy)d0G#MF{GF=}{W|te7hbeTr!1hrM9O)6d zp{yJ3qSSvzr{cIfaX*RoBn-sd&~+^@e0}FF2{G})2zmctb{wGt!`^-#D6)fOfJo#T z&FPhvJr6C3;6XU%qKmbT2?@is-e#Hj$ZvV*tQCJs1#+AL{@A!jpEackC9U~w*Y=>3v&nF{iVK80<7!MX@}GP)-v0q` zQQhctg$VDmkgh_@;cUFLk{yrx(&JV!evrOf{7U&v6lpn0Gu~WsNqI6U=q~tYvnn| zKPVa}6w$7KGMIKOtme*>HA(jU{K_Y7+k-7!0G-*^szS0xg~UTv7em0T!LHYgMlYoH z`_ZplhptIt>%@ELFu$E^2kJBCdJ__ZP{dwh>{G2Qa5$`ft2j7AtH|M`&8X?QN&pG- zUL56z*Ml)bt*{8JyIr9U;W_{Hqe1X>>jb7z)X%e9OUmtra6VU= zUsat{shav#?uj&%q!(^oH2n6tFKgC25evJcWmb{#-D9sXL*HbN?F;LE<=sG)B*w=k z28-e%dRXh|U${&o!?a6RtUBSou^tiw13DUORgHvefrq_@c5PsM@u5Ob5Qh#=0`qR9 zz{hkvB*o0s{?l^C8uf3NlCyh(5(8h1yJq;1`@G>@x#c$2n^VPSy_$Ywv3QEob-6HW z?7M@A(}nB8&K5HoI;T~w&;+1AUqn%Ot=an;GND(e$5~e*M0FR+_9YS4V+Sb9d-Ol{ zF_j0O^A3S>Kjku&>3og3HYJN|zpMH)W10F1X&(Q|b!<+piflTk1UgFxQA?F=71Jl> z_^VUk!B#1$p%_51k4e546P`Hl{d#`v!Rf^_?^kvFrNH?v@z@6(HE zXmC=KrGi_bTd_?=oeVvigfzl6{xfL^;~cme{Ks+?FQ%kH01kb{^{XcGul3(EJ;b?? zV5qq$aXgC_GgoYUk^&3|Hf)Ezi8(c!dA37!M-~WZdKj81Z*xCTvpsZyc+`0mn$Vgd z4qaY)NQ^g|01o^#nbA)*8j`Q^cc(NUSp&|+P7cReYRlu*J)Z89igZ(<9XDsLB zAj99h(j5r0IIYTX3F25Yl*zze!s+w*_{?4B|XV1{X zu9<14w?XBW8ct9z)9VoYd0Ae#p6>&Takvo(WORfe6u03&;BG@gWNjk?=+R+OR_W*< z9E?0-$SUhbgA^UtYSGLti7Ns6duV*3cZhwX;HV=}LCg@QB70MmS$GZBB_GupJRTA8 zWQHMpV4u*y10xW8BAogWIB@HPf2PFVqlcsF+X($*5WGPDa~uR8&^w!c5LrqT{~~#D z;Tl}R1t0sR%|QM~)bl_N)T1H6%^H3ePsh`_5!fJloRD`m9TgV|sfbDB31`80(HKhg zm0SDia7Y<3^UTG?vDi|}4gwmRSmmhx-L(tB!?meR3{cq`e;S3FA*g>8&UGCY($yo9 zT-*!Y6x`H)UoAvlIy5i})vz7w7<8O?^dO35H+Bx9^qdDRhORSTo}vl}pcV+gbTkvu zNHiLgffX+;RInhMo*1AX07Fz9glKpTJ7;ud2F{;^Ds=@FpjHqSz&=p%4?u`s%a9aC zqEz%`{nLw5 zmy}_=ugHiXBXC`oD@LI_+zQU2t?>}@R+h_5(AOO>^h@_NHyaj$GG)J5TBd=ShOz4c zvwZ=^2?AuXuGOWXHMTaF7X(?t7%D~7%&DEbmp>2_3o|P{Geb*VQ)6p=Qy`Z9DI}_X z9#7J*+*LlNZ<(`t7I6&c4ZbBwmg6S6X_n(IFba#g^SF`fw!Lb_2cG+(h*(ihQ*%Ph z|G)8#>};*}5R1-Ki_VzK6v3xB1Ig5;Q;D!dg17WlvAUe5VlGhMk(=M$^%DtWtq;o% z6FuPGJlq8^y}um`;6Ahcd>L4+!gS4$flDm=X}jMt*MhmE*j)O}&3Cw?_!~XQKLDGn zzdLTWEf?7eu9f;~B3LP2cFDB`9}doVEj^s;FNfb+@l)0&(K2!nd~(TVBEtrI@f4*> z`5IB&9?v;z=efF&+n2WGCJ_^!*`m0f!d02Dq+{cDxv#gMomvi$+G}*r9ffP!Jl+JG z>RgwaQD@pxC1?+OtKVeX(rSGyL4!=qL@Wz8UK^ zZMHFFx|x;RrtnT1Z>cYN!-z{M$_w2Ikr@}2spLh`N{g0r1C5t-UAAPuq%(6+w2gyB zaIype+o7%r$NPv8@sIQ4ShAd%kUoHbeS~=VdHVXqgMCDVgm?w{h4~WU(Z45qCMObj zjmDFGWQ55SF=6UFVkmQQG09|h z%ZRR^mn}YMa3WdAc4nH+sCZsSN%Lp8ghTW&kDvO2{qC&rID~eobz%Oz$t!(1!urG- zPg)rZTw4>?nJZV8WDmYn6#P``^8+aLWHjlqw9Qg@tiPrm*E-a5zeshXdv%}3_B#h} z)(qxz)hh@53v$%YDU7Q5>6Kw1?Wy``;(dQfP52=^Bq{;#gCoev!ccPKZ9<**{pnyf zHM-EE8zbA>7KYF0@`XavOf_7NyB_;hWQ{>G{@z|p_nul4POEqG(%P3VC{MG?Hac&>_$-F$BK|z0G#B0E|3%=fB=SkUx)wIPITXvb$Qy`#b>xc(zrIc zG>xYLV#CIMZP=bT1PPvK2_F`Gca!=z`;|7c(9S-A? z`~BS&#Dzc{#SyTR6>A4Ia<;P>@7!^}+kwA<%}Is8p}}KqlXrA8bXdkl=ZW!IlK)U! zGYuuW`@eUn7V+!IJiTpc z^(78IiHD7T@Utw5ks3bgkYy@KjF#}G#4!AKQ?0+Fpzy#wI&N+2SXgv3(v5)RT=z3`w zj_MAB9Q=m`+Qz_{0h-3~%rC#e9!jqQV1=%j|4@!oK5>mL&h{(zlSFWlsLM~eu$04W zO(9KMp-m1D^Z`>HLT)nM$UR4d_kpY*&Xk!cPeSa=x?nF5EwLL zk4EmE7t`yiDLcx|s;DzYN6`7fX}P0A*(3eBAhWUfc(>|oZ;vEnBV<%p8C>+(9>ynY z)h+%m?g=jja6D^Ls8ZTN*!v7vyNDK7a0Itzl6D9H9)Smm!MY8)j6{8)IhiKnVDOC8 z?^*GJE2%ZxRl~RuXse;^4VL=_AdbiRz|%*UYf(57lzXCw1L(=op8$;c6eDNHU5iCF zf~kpRTqLdGNh}2ZYH@dfKi}tqI?=rpYs!;7N(>AL=1m%3#0MfSWokx|Hk>MC<3f-d z98jor7)W3zELD42u?M3IzMp`I_^$~K(^NgN7bvR=uBv}pU*Tl~QuMgh^;;>tIS>fk z(|v?D+h>;Gy!Wes!)tFQp6~@dE)Zc0I8`LCTSK%P-5Hkm=*B^Ewbw=T^V!N9Rc?}J zOzsGtus5`)Rx{(&OMau5l}EOJTx$s_A$D5w zhpZaJmqp2iI7EckC_zsvl_1y*zxN`_eYe4ZZoSjd3_G36sv!jqA;qy-2xZ}v$dwsZ z1oa&UlNVx|!s*s6cdsNPe*2LAr2bx?&+n%0e((?4KApuKPF!@BRgKSg7v6dYEOM{_yR%9hV}Auydc1 z!?sUI*V?y3PPt}Kig3+L*BZ5IuN8qc!=oxTS$Zt8QzU*a;{~uLNYLac2q9?81v3N> zmDB&mVj*n+fLaVd)-4)}qkfP^3@aV?eDg0Z$OgHVT{OLYKqDwJyUJEn9u ziKpAFNE_){U^xl;0!<>KFP@nzu-w<4qJZh<6 zY2U1R*14i{0WzsB?<{6M{4#Cyd|WQ?e49XVV%ghq3Gc|j3+qz`k8i@5%lFJfd~BAF-l`scL{*B;}z8^&+sGBm>;Uo7s(*EP)cqj z(jc2s^3B@Y46G1m0QaNCgRb1K&kht|<2_~LjMCy=adR_Z<9&H>aGE*Do}KWlYH;Vw z4IzI~=hn_n1v%;Bt+ngJy>)ZzJavCJKzXGx^dqo~NQkO1HrInEl_d(g;5Q)ZQ(VHYrNEjh9ll%*V(M^+kdgWvy-&+WtEk5n@1oTxd4(SitLv=1o zqVG+=9%1QG-pc7XVLru!8T~!y`>fwwD{^t7NHs2@ zX%kuEY4Txx7RyVO9>DSC+pQ15HhbCv;RE6M-RA6)mSSAoOi1#0?{VXi+=26EC2}_a z>vkBygo4!hjOj&Z^YN-7<=pPjhO=JQGWVv@glYcyWGSk%DeWW@}Z3~d&&aG?|UTjl;Kw2b#wN3^SIIS z^;+VkG4D1dsBNRk?C&#kpF*XR>JB!)Zn1Ch8o-@(nZsirk;q8%If{zr34M?4KoWzF z5i*JDt66%g?@1%td;m}{y2j&n?|b2Ls?j-m);O?^M%Za{-% zT0%i~cZ!OJMAIeN*`1U>ci>jiYGtqP`}nUEb#ZWW=2Fr2L)xt<@c-gacpyYQSIr^%Ib`-qNb zr1+jPMK%(w1MRzY*So*)#J?XtGC=EVoJ&E@!vDD{wXa6+?7YLU%tciuKKbf&N5E2*) zZa5~EG4G=qBXEX`|I?S{+9#icOvf9dytejn^vdiU@!s>e41{-^a~6to6x z*O+ZL=jrD(NMg_7Osf+NaJGjJDxil(uh%-=e{-)dMQz)x!~G_>`y1Q5kiY+<=aJD0 zc^`APAQ41x9Zs(Ru}JLi4~rMy==M!d7wdhWQc!>hy{+P@e3CodN7C-Pn+6}kITT~F z+ump!YgS|<6j{2S{BjfiF6k}v5HnnA2;CrTO@>GIiYlkUZbQ=WIdmx(VQ=pK?!V=5 zQnk1+2#p&B;uNq+zB-K^DKl&uwFiNzyLy8{CiVpLW3v@~J2U_&h=vT2?g&57(GC*OzVX zyF%VzQlniUdeV}o;v3zdp?E$&_>UVW5xg~cE%qpmXd0+$?h`J$B48jhySkprBMmv& zWn0Kk$>^0}|KzJ)A{5BG^#ILzdc}85RJDhcZBt064X;X9g@3aqvN@^kIMO6M;W~>q zL?jImnJ67=V#Ay^`;t*0USCOufg^=qin?Xm@xs^LuxqAu-K0v}<5#&-x&tX}h2zkU zkL6P>$#hM}DhPYCXZ0Wi&u>2S>=nS<#H~?Dg6PxlW6XIP_#fCupafrr0HPB1>11)ZvojxU|8J6 zcYaZd)thh3UQ9umKS>N{tF@K$_v?@bKTQaeB2yZpb8OEDtwkqu$x zYpJ4J5l-Xl)|RNpsLy9Go@rNh*Kk; zUxAdohHgEqz0>V_szuj(I!NpsK%yu{1c)T}i&KMOoIrbr(`Z}G6F<&lENm6T@1 z?itqTwxVN$-n=ndCKU>`tyYKptWG4g5zd(}8&mt{qE@N9c`Wne!cU14k<;V9lK{ zRV|W~lZBBo<1D|~bj`o#oFL{3N~ub)zJXG@2XIR($6O4GMf=90qP1>+pip1sa1x9y zP_4A{um>9O<0{PM@l8^xt5L*~8AGDQW7o(Dg-qllZL%x)A+>J*&856Miji|H+&~;v zqEE;@OLNplzSJJ9% zt1Kb3jeRCB@%s>aa8KA+b=J;PkL2ZOxWauLs=?5OZ4lu~u2rQTEqOv}8o!vVV};DjJyYp4UA7($t4Y zk1?G`_O)D%bV4*)QTfRD`7(qjWQ&~g^Tu8){+}=^G9Dpe_~uPoxH!k`x~a`lmM%7> zO(cDmYhijvfMywjeW~DC7*)1dC~YjABL!OT2EhoXWaHJ;m@T(v#rZV@ff;8@-}b5PwO4c7c;@QJe7G*G?Gj6 zKM-KfY;>wGt8%wwrCVzZb)T#DiV?QAt2%kei?)X2@tV2d1e2Jm)nUfQBXP%biex-+ zWFmX+Ye!qVB#-r3c62O@C{|4;)2t;Ja#84F8&AZ2`LiC@DV}|d;q&E6P^)^5GLu8( zMFcp;RISG~`FZ`1(y)I2QXObqBA4OP)P+R90YFJGsDZ$O;L}_x@PGOmuQzl)-v|pmZq1xqbiMq?gi6~&`miEFAlEgiWUr3!QMzS zIPo>7LEPurG=ho6OgQys^_0?4qgdkeae^;W!|WOkj{xe&58ZCI+8ei7349!ihxvLn ztb>CBLdo>Y;8=@zg4xpsAFv`r5yI^}=_baZHL3w&OfQ9V$umu^$+FfqGml(Z{SDU=k2@79miPdOLG$HSh3K6&`EAdo^2ht&+P%gIzBc`=g-d@KtD$I zmg9dP5)*P#v5zf0M{}9C$ey%ZmXcXkZ}PAzdfJ8BVMiVzak2QYfT{&Ge(X%z3;WD= z(~I~6HCHZ6P9R=WI#7xx_$OB%v26E1D2Cc zF6H_e`OLt5(Gf@!IIjtnNd5TA&?I6@dL(EpZt&jVlFp;WvR8o^U%NU#nzv0)ce#lp zWPs^>E8%6PVedz@74nhR&%~*_a(by&bpPh^Z`i}~LRaeT>mF!?#g3qD!b7E1qM?IS z+k-RNcRUDIuev?lD~ZnitfM|=!~QB{-Cv>%RdoMZoY-zZfKY2I5&kE(~s=alyz$+=G)N4F< zg1%88fnNi*KWWqn(Bs|Sgh-wy!d_Z@)ip*c1&w>dGuPetWIY|A{!doHsU|YVx8>AL@Kglr6{Z5g)y4nb_j8F&Dg>4K$pCEl4Q2B< z{AC411l+NbW(KHOj_%4SxdZ{1f%oIoGumDCQO)w|^$V3lCmC$vDx}67WFIJ2*uSdm zZd^OuUcl*~;puIJpPj%OP^>_{BN?XZuE_!!@U>S5>*h*+oNiSl&wr#GZb<}TJ!Csg zG$IH5qawa~CB0(1q^eQFVqV4e)M=z`j~9;TI!JRvi82FkX*=LgV;ksr*Do@>PTxm>QV#{ldY? z?M4qcv=W(&q`Ld7PPcyQMHBRe_|tgTvM*hg5oV7n}$g2k#*tbh6p2%%Wq zf^U8Z__*>SeQoYBSJlksl3b+I+$_E7=R6AQ`OC3g6VJVLPK?B_W|T;pl&!QF5p5$g z=>VRC0^`pbyJzd@1l4+B!S+lo22Z5KkennZGNQ2FL2SIT9=0B?DUp@=NttuniuE0@ z;jp97v5(i5KXGJ+;RdnN2#Ew#`gI!1%Ye$Yw6UURKJvi@~} z&-s{PooXVz0MG4W1@F2PoX#aI%bOca0MJlu(u;k&GHVEvcgR4z_-pGVT10jalczIc z`#!go0i0b|%Ss`Otsm6b3+;~9A1S8Mq5`Daf+z67edf&;Jcpnq1VKmUf=2?{>r*7- z#9lrZ65YEAgMLPo7E>XU?Pr32VAhz|8Xroti0|nY z?!pP1tg#|kJr~!tC5}+Ui5=~b5fTEuAu)q1;n#9qNl^N<;>*5rfXEbE5+Q@T#}3C} zd3<+ngkFm<**mZ!f)(7?XJ{DS?$I9-;vRZy^DJEr$KDe%nn!MxOf<~|1rqRLb@-=~ zZ<>2)0*&wyKn(Qy>+m4zR9SyaP@oX4p;)z$7Sqvj zSPHZp*p1S&O%2+ZL!{SY$tts^qVD6|9L9sYq%7p;i8FWCP%MT{Sa#_FBw)q5``sn? z)(~tj+$}MO^O&z@PG`tZp0~BO(DuUlc2?bd`ASR~eG3G8=i^8h9&09l7jW(IqAjR# z`}+z*lc|oEQj@pJ+Pmiqk)a8icAjTR>C5XR{ISPWq@WlgT7tjM>s4A<^Lc1xs?<9_ zK9H@NQg9YMsO``M;v+yglx;B!wu}tSr~`dw=|lKgt85ij#=aernuSiQaYNu9sXP%c(%G#vDp^P3x>|tKt?{(1V{Y2QU_ooO#2<)`eE~&36;4(Co4~RZo9T-k}S|rKBFBWt*1H^|=gA z76#bL-gA{C-ZRtth9na1r9xr+GJ&J9=xQzD4i}#wZDVP7E%$TS<_qBMxjD#f-9P>= z@ntB)r4L-5**-ek9@PChIVWt&GKZ-w(5-Zh;iDvmqZ|V&pw-A%ukCMv7L=~fC_t4I zTkvseM}mmp>;{dHR!)aiM0u;Z$maz-ZhTDe2hNfT#( zz0~VgGmp^kx3k>V+FN>eJzj5nOIM30C3a>=@Z^5`6D_2MX`l@IqPda$H9RHzBqki1M-g^?ei(OJL|AgDDsj4%2|Sd&#OJar9$R zV*#a7N<9T0QPBdui445~YB*Jm+!LRA|EnA1=H^Rb!S|T2$_BjK)e6iDBB@Y|jhyGr zQ5!s2hI$L*oU%ZrdGj^)!?_2OgG{{2a)b-VB$?{A%$|3#Fak`K)HS$D0Cb`+oZ{cmP;5pkjAf z9|-`cN!U6_0O;IFvWd)K5%>uW3HlOhsmwX|GWKx*(C8tmN9{*Y|Ex_M9R^bg{F>K-q{GGobC%rGzdVth-yCGk?rHr0& zORJ)BPpJ}#gilkf^3mr*x|jMz_0`F5vR$tU*|dvq>pL9adA5w+tSY_luf)vvZvC_{%0y(dM2q{2&KWU|rZa%b?dAt9WqJenBEvIqkR+PYNg z)FWLui;G#L4{m$xXUVydw#v<9SxEl%{=@!NYvWz`E+ceUqQlJqjQ@@wpn3-2PRDCP z{o(iN;gqVxu(k^fZ%u?O@8ros*Op>?`Kiy@Y)7f@IxB4qyWQ6^hA4_GnbpfVbmD5I z+g+vqEQb-^0#kbL&jGBqdeld(u$Bi=+2gkBMq?O517vmyD&P;`cI0tbGa;dnXLYF4TzH4~@*g@Vy)tO*=Z~k`27n8$E zVPX`1#H$AYa^q|pu5A%dDl(|gAI`b4%WhJDqU8PqBIWg5D2X=1}JE?Yt?HA`Y^`i!zh$2-MI z0K8C-5N+S*tV&Yll(NYqY93@zT&V*W{IQ!AfLiSf@8L)RVJA@c1=%ClTbV;p+^Mf( zDuuiWWfxF|cpXf6S*lj$47;1dE1`S7k}Ie@qHZ?PZYGR}ireo3@GzOmdq&`x8mRC0 zT*Gy=Vh!0cRZ!$Ll(K0he<}ZigspBHkl5Rou%X$&hz0<{tXQ6;B<)n=#Eguj>f%+x z!rmJ)0fsFn>Lj;)JQ8ROLNS^!ksx1akAHN6M<(7igDYIu7jct3XLjP|sHo_;x`q!y z-4Y@@2PLM8I;NaaoMF|~1JwyrPIyUjpqGRCq7-5K8=Cgl2e0}c$BPwt1PbhyP=PSY zO~6Vw4X>ASeQIWr);16#qQl1pBy*J();5=uV*G%F*G8o>bF>~pOms@Hfn$yNR2CJg z*(!Tvrb+L)c7&pHB>EFJ8XWM~=tT>=b(Q=U~wH zM~${(;)71*V^!UxqAs6`V&8jcx$h%=ecL8 zX^-7%)Ec_7NjK$kI*-x5IZigL6zQou50=VOFGk)U9}ia#i`|22>f6Ya#;(kg#w`yIuWXS}^gA9!9yS)Ny`w20<8&|<}0)A{4{!u%A z)RwQeXkP66>VnVhj)m>ceo&Jqk&`jyk5LX>W{kA0{R-+_M^REX?c9g4b7gX6=v1Ah z7Y*2?reb<6=Yr zsuEQ|H%i>jYG*RrS!`xoh_cvi%qW}1Y+oMOTOKcuYD|slMZ=>W9`EQ_TkaZl)pdQ= zIhP`L-L2RKf*gXba<>%x(yH80+dpjB$N+Nd%6jt>_n^u(O;PR z0)L(C2jdqvRnU&<;W(T!o`NR+8kB%$r=HxTq94=2afAvO0nYs-CMK{pY505(yh;Z_KVY-U%+LfLmYQ1xYDEj=3ul5&+^JGaU2`cnw1Q* zBLt}b?9aq1ek2-N?!`1eBG=1);WJZZO=-jv%*~iByq#A3C?BeZFv%`ArwtCKnaj%u zo_M+CN)7BVyQE2VOQE=>QW-m^Qr;HK1^&xS&c8KV{(a!S&5sxmg^P)W(kLN;*Vuy| zg<)YOZiQ>$|KoDmwd=C7ywj|b?ybDDj>&bI3~U)1QSGW!i4h&xP26dx>nTluWqoe81Dk_YPU9Une5O6qh;p?5*Bl=N& z)|WdY+%w&!?pf~bUu1n@ag8y?0A7grj2?D+4<{qNwIT9H2gQ1(A%;>+%M=Pu?5Eq3ZL{sa^4g3{#iyhSk+DNTKKK$& zTL|HBnY%avQJi+bB(tmDM8oQExsWJEn0SG{J;VMQ$xZ}Kh~dS7Z|f@;CBn7pTH)2j z{L0FO{M@Ux)fZ+Wbqifgg4B@7k+u0`I&GzEDddQC^#EC)yAQi>{<$)U8Q{+d3PAb? zA%N2_&%PUU@2#>vAx)+hx3p`W2K$Ii76!vf2T9ER!p)4qSIXii_4;D-E7jn_mVZ-W z@%KOwaiC;4IlIx7Hx%NYmM1RED5j93!;>+QJ3K~zx7c4(;j=_T{Aug**{6`EWQ68yVm+mK4MlMij>+#uN%MNmfC5p>;MyrL}y2NjssMhs3(@2)fPw2O+pINX!h1(hvFp_bxz4jm}1vi>U@d=9|Lk~hQNFqbS zh(;zr_Sc2)OAUG&bXnJ=2aRB;}l{1!?MP!~xMN;&#TChx&ii zqoJhk{h-F4SRRGS*mpb}8M-f)jE_%XG7#J5ikp3oC~wxIc3rf2joukZP@s@XB8i~V zVL*%R!NlD;l*In(F7|3yI-8)3B?;_dgP$aYN8&Tp>Ma3r(J-_Ofhr>_Mo$`R5*f_I zI5HC!1PeHg7NukXO-kREmTk}`)*z_1Zrbgo8Ay6tZK9PciLXzWAA_y`jA|eSI4TV7?BH%GVVMkQP z67%enhMvMAArXY=eMNM8WNvH%x)g~jC(%hYjmd0_s?{ERBD}w@hrM<*oq2SBQs`cU zACkdC!e}W8@kAydXoIVQ>CcpVm7r(6F0c;h9%~)7TP>^jRZ!QF8gvV}un*pmsK@Uq zMR*$HO=0;R*izCjAeIza6gRQU04v4qf$2N;B_S5}-eQ#!e!-Q2uk8+W9Y7^O;EldM zroO(jM{TI_NP<1HiJ3Jtcms_@Ll|mkTwWC|$uPkyvxEl~XgYBKTO&Fq$?d!UYws+P7fvfz7)rgE|;-OF1TS8kvu+BFS?fxF?ysO$% zW5FhsQuZc!v?Y6Z9K%&uWYCI1iqU<4B9oaP`_&Xx=S8jb(6-WSLx_olgxb;^yBj5( zyxDz{#=l zO^I^Qk3}cz4$mL!YQm!MwW8^lO&;L*u<}4qjaMOpcQ_$kJ_PPo;Y{$Adci4J%7=Dh zM417~$hr0&UZ2Bg42(vP&HhEzc{SO88+1)4TBwW3CA3H@|NCY#JTv8RG2r^i3Gd!d zT9aFy^S9CwLQu$~Z>2SqfJiIXu_#nHAY>czMWLSEHwI3nu93;8@Q7q&B!oH<;pK>f z?WGpy*k9S7`e<)A`}=9&>@tQeL!gV%&Xk5UHd(~{$-ssG zgCWQ;dez0KFeZ@pKyC4ppl?{Dh@K7%JQYpz`ZO~vCCf66KxGwD%fX>fFSUfWJm@w$ z-&u18k(>Vn`ZA$0Q@yw6{;qPW8t#|KTy?%J`C3ot5x(wF5=jKCk6Ep5T61e4<#hPQT>BpMUWhw4?p;_D)#m(Pdqr}UGOniwd z@m&oE<+n^QtbT*87t>t41q3PpClF9;iK{LRge$-YAjN~5#t80h6>GBRZ_e;=g`oVi zG&D76bQt#4&tEh%{e!W->%>2%i(%5KurIt>U=zka5^1AUMM5RfM3pQ~1JP-8AZC&lv1Oz8)ybLpPNugvz4aqM9r0N(e!5r{#IFABd0p-PwCoHC9RWt%>q=Ejm3zYRx|t6t`UZbn~&- zJBm%*dxX|C$DE!)|39qmGQ{1XV4!xc()#7jCy={PKL;vxGB<(K`)i6ANsd*Qg9`&C z=l6%5`T6e1iw(JDFK9M=6Kd8N-lbQQ{pJjBhb^zrgJ9*wzh1bh#I0TpZbR8e)K#qW zIPNbJEbsEmAw=0zJehK50QSdLG1NjH`NM8*`NM7=@hJwjx~nign|*9sI#tzf%L_tM z{#{5h!1OvbzmBRcUG3l&MQH2{UO%E%J(z*_D{TqNG*@f)j5+E(LebUH{z~kAi$AR< z#WZgk&GW%DtFl3em2Sc#@6H}6gYV!jgLALS#n@(>Y3rWM7;!igUB}H?=FSdtjz#90 z%j43c@qdQGWX(VEE-X%8j*-og{flcCwRA>b!X?)3k=c|xgU17}=RuDfg8v;Xa3|bE zHiyC@+W6KCIz?Rec=y#B%u=t9oc7D&vVZaPe?|u6*nmvQ`f@6_0^Ccb??9Dyv{kZW ztV%ydEyLutK{BOSvc6Sdwrc~zY>F5JA_&2lD$_pO;B?@R!hM7_V4+0TsYE@09=n!J z^|&ksFqTwHl42>Arc9+hy(6|Hw8IBjIa}FPITihBKdZo9he5I@&O0<2v6TY)VXyc* zFIHi05WYZbwhQZSJi`a98`jk|5mLGo)r~w0ka18o0jShXFr8v9FYx3aH%C|$&r{!y`?0am5jxba^5;pE$2J#kb= zGg^9SK||ks;7$uzv&L4@aGwV}`|H>co>*B}oKpj7i;q!l%|I@R4`yJGO zfZLwtV+z2>oD%RLu%3BR6iIadG)jMkG4fd?-%&5L%suYutu4lMV``Lnd#L=LxAN9! z$j57zvIzZZFrTigQ&NO6k@E)mj#|A}h@v4~qri*^Ct#wdw4+`bFM*boUwPiZ1-;Ab zjGLp3gXh3V>>;OB$3OpWr(g*u@bv?wcT}BG_FY$y_Qvm|@zk*O{>d1T=l0Qh>+`jKtCsq2xA`FpGex6HwXjr9YuFwL09l;S^>VuO3!DDOCvx1 z#a^~cM}0PyKdTo>A&J76ZO)?mXG08T0We16$_1}j`{`SQ#Zt5|1mx4Z9(9$)BS36u zDOlu2K}@iRW}XN0vrRL?lk7gU$n$w?-$g(KgLw&N0(#edEmgGjyL+!ig`Bif-BDAs z%vRnp^WaQCK3|DpC19z}1??8RKiraQy;q>U0SkV`h2zW$IRVvBuhn``z)3!($ppQB zw;WD_@r2!C_&pf6TK$I>^sLzk=#Y;pWjq2t`qyFH7n-5ZUXRQ>D%EZY8&Nj7$LC8- zinyu@%%`0iQ>{QqjX#n^mkecXU3qGMO$J!WS>oxt)#?Ya0r`&7SHq`q3li;j-gz@+ z(`Y>hZq&00@fkIb)=HepwM=!#OwA}|{5s0&FrLmt3C?yOJmotoIujV)%_v=YN7FGD zJvo4C=V`u^tye!et&Z;OpEYAF%k!=xU%00rxex^Q|FvGaxM5=m>Lh@Od@nE%c6$+P zT|fHdVk4F+!1niG%XbvnHNObvyVhrlj-N_+hGXA*&FZ-fDCVW+r!x2;l<;C}IOH!S z+@*DNm-39KvZ=@?RB>E<-r^TsK79G>ar_;SEM)ZpNgy}0gW=;{WF&xZZ79&g2ji#o z-*D0h+1kb(P-oN4S0m?@G_y5KNIWqQ8aWqjGHS6)IYV7dI}^r&3ZT4(vXo6Sldd`ERoze_hqxZA9(f$oW)mv&HwvXx9DE6?~oy-kRA z^n}W8CGX~zbyv$HzUjt`rCjU@6Cyy}{ZV&T%(8;du=kAUsNsmGo2!QBj&nonC^!`x zOlt;HG1s*ENT>Og+uDxeA8N+_d2mlOdz@HT*K;$5$yGC#E3w+dV>4JmQOdgOOULmw zE!qpqD7bfN1ukLn{_M$A1BCg8ErMs0^+v?dFPYbv8^_T)$hR$9RIERoYuhw-76};WBQZp zuZZWX;IH4A@nR$H-&qt30Dto5c4b+0?|P;>`VZY<{q{fg1LEVh_kxmJs=)g`pmCxg!$bC8sTpRc3YoOMLJq3ef9uO-Piby;d*D~)WuYthWsEC zsg&b5JhHVK&Y(BFLff#>>g297mWuYd<9%VAlXY2u>S3*gN55}ny?Hul%h&%aS07k8 zEkPx7v(^y_clsUm7|76_rnL;f+52a4x|Zitd*l_w{!CzC?XhC|8j9t%o7y$m%In8= zbXE<p6l#Cil$)`Ao88eNeW3l(qLsUn^y=-^f>e%hu22wXnnNHoS(5Py`uJ55;iG zDuMpvSgT|#VeT;u$??$Ao@7kc!X4IZDjJ~y9)Nn%Rn6wbCl3VX2sefu;61FnS~-X+ zcUU`x#^T4TXlH>Hn{xQxG96GxZomvkOYxd1o=^J4+M zfZRl-#DrSsxhdPKjB%y+-R`%=&&KE=$&RXgd_|-oEV; zc5Q{*&x@M&O{;y@1lx}bT^5kCLtNcqVlRr?^|8=7R?Zx5@_cP}$BLL0mMpWx)s%b` zSw0&|p6#uu;g`H^GkfedWBh3O+zPSNSJe26bUMK7aZ~WLg4wk&J!I_4rE`~UeQm2_ zem#->e2@2cc-%7Mk>B)kgxKqq&QVw`C!}aCaM@;yU-r;3TRj-dI1O9nz%n4fuifLH z^o4xDz|oyR?*VZ7$}~@%OY?#h3XU=$1A8H;)LQ%;z|TnPQTJu7`_9t+n&HY$4WJtV z9|B$n+yi(G@I}C{t>awQqO#o9s(JzVlQzNn;rg93Y$;ZM%-Jloe38Jf%~jkW7&}Db zh{S+CicM#(t?JtJMuY+YrA zm87+l$=35VCX+PANfcimB$9?rPr3d{mt>Y=g=zNjI4MR873VQkf~B+tGOV}C+r&>? zkgk0kYrGXs>2dR9O($NK=Q7@j+D81ocMLVptnsVkN58M$?P-&jdXyn$=|RkmhB7^W zGVCSpJr^?Mc{|B!ah7Wilca{KCHZ!;m_yhOktc~AI-=RXmfsk}fReYtwthF*iS>(pY;e#bP7_TWMxKdOoO8{Z^;J~|&fM95H~{Z?>T zQ>?N^LdjN#3op@Hl@THejHFADBtwEDn`*svlBGn68ZEkMrpJhBMk%G5=`mR>sie~G zDKKmn*12Vx^ItI-A^ayYS9*ek}@e^ik|9>3{ zBOhzi{!68`PRDe8mHyeiziV1MX^iQoP03_^=nt4yFSzK^Z;8z+a3d ztUG7X6-$<_SjBXa&|>dQBv9{!?X7jCt6g)-X&ek{CtY`~>)oJ7-(lwc%feL+8vX4M zOIF1AzUX$wpO*f2cInMKto&tmr@N{Jm_)aGa_y35v%OTAyKjeWJ?UYOTxg>wJ?&Y~ zYwJZXdsX}0Rq(&${hzzj)>ChN^*7Mh2KDJTfaQ0S?e@e|&%E%mZ+-7aKl_DhsJ|B= z$%?A!hH2T3>-l(srk1vjuAV*w6Gu>e&lT_W!82ZCEAsIf>JB7_ln@h!-Dwqu=lscVwWDK z_f7KT-N)gmzt+OZN=n8(T*_FzbN~xMsN4xwY54YVxupH@ym@q;-zkk zlwHwFRGYJIVy+KZTyQ^8hx5Sd^0myXFPlc;S|QsMU0^nxoZtLbHVH0UE1ge7^qj-& zpX65YIy&h$F?G3GG*9?9k^6e3r}OPtk-nQV^H^R5SNcIFlqNT6MaHbkPX6n}w7rU# zP;}BKQ(hNA*O|_V#sh`XG3Y!IGJMrqSqGQ|#*$cjbWmMGYdiH`-=#Hm`_(nHi*%`6 zbVgjzcp-SBUB%JERC-+h7e;+nWyN_p=svIee{w3O2#qotfyD_SmSO-<_>TCM0P z_}%kYbwI=vPurFI^K!=(a+Y)OEF0bO{8sP-IRsDu&$3Yt1sp*n2f&pIu6#)jpqx+u zVyFk;f%b*ofi!Y4Pap!84giJLrGqR1D1f8TPyhfx5CBjB0{{RDKnwsL0Q3%|kpPW= z1hK@1(af^h7z&o>IYxNaozgOgE%msUFr$$mrI<>l5N6qBdU8X^9KbTGlBjj^ol;Wk z$dq<;?hAP%W@KY{kY$y7-(q(7%T40)KEz}hRArC{KL;)9J}-XdO^Ay+Uuqgq(SVwM z4jord7foK>h@Q*_PQ6&AS8z9kXNtNCjf{+`BA?Pp2npHcRXYIj$8UXet8%DR_{j%Sy$@k<%r`kepwe_cW|s@){n literal 0 HcmV?d00001 diff --git a/public/fonts/Lora-Regular.woff2 b/public/fonts/Lora-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2a40f607bfb3c6ddfae14951991afa2843bbb3c6 GIT binary patch literal 21148 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 k%<43<$K|5(uQ0Fgjf7kdf7*ZQs$kO})A)AOHXW literal 0 HcmV?d00001 diff --git a/public/fonts/PermanentMarker-Regular.woff2 b/public/fonts/PermanentMarker-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..203ccaeb9c2bab914dbb05e4501915a16315200b GIT binary patch literal 29564 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
    S}D~Xz1ggD{L7{ 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 Jo`3ha{{z9RE`|UA literal 0 HcmV?d00001 diff --git a/public/fonts/PlayfairDisplay-Regular.woff2 b/public/fonts/PlayfairDisplay-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..141ea84abad01fa1b1e978b930608fd9b1c3305e GIT binary patch literal 21856 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 literal 0 HcmV?d00001 diff --git a/public/fonts/Roboto-Regular.woff2 b/public/fonts/Roboto-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..77e42594c11eada587f9be4d0330699f4218e3b5 GIT binary patch literal 21884 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 24 ? text.slice(0, 24) + '…' : text, text, fontSize: 48, - fill: '#f5d76e', + fill: '#000000', }) store.addLayer(asset.id) } diff --git a/src/components/CanvasStage.vue b/src/components/CanvasStage.vue index bb589b8..586e730 100644 --- a/src/components/CanvasStage.vue +++ b/src/components/CanvasStage.vue @@ -20,6 +20,7 @@ import { isButtonLayerActiveAt, isLayerActiveAt, sampleLayer } from '@/lib/inter import { importImageFile, loadImage } from '@/lib/fileLoader' import { useClipartStore } from '@/stores/clipart' import { useDocumentDrawer } from '@/composables/useDocumentDrawer' +import { fontCssFamily, fontsReady } from '@/lib/fonts' import { drawButtonFrame, drawSceneFrame, loadSceneImages } from '@/lib/render' import type { Action, @@ -1303,11 +1304,17 @@ function circleConfig( function textConfig(layer: Layer, asset: Extract, props: AnimatableProps) { const fill = props.fill ?? asset.fill const base = baseNodeConfig(layer, props) + // Read fontsReady so this config recomputes once bundled fonts + // resolve — otherwise Konva caches a measurement made against the + // fallback family and the text is rendered too narrow. + void fontsReady.value + const family = fontCssFamily(asset.fontFamily) if (isLayerGhostLocked(layer)) { return { ...base, text: asset.text, fontSize: asset.fontSize, + fontFamily: family, offsetX: layer.offsetX ?? 0, offsetY: layer.offsetY ?? 0, fill: undefined, @@ -1320,6 +1327,7 @@ function textConfig(layer: Layer, asset: Extract, props ...base, text: asset.text, fontSize: asset.fontSize, + fontFamily: family, offsetX: layer.offsetX ?? 0, offsetY: layer.offsetY ?? 0, ...(layer.isMask ? {} : strokeCfg(props, asset)), @@ -1611,12 +1619,14 @@ function clipCircleConfig(item: RenderedClipLayer) { } function clipTextConfig(item: RenderedClipLayer) { + void fontsReady.value const asset = item.asset as Extract const fill = item.props.fill ?? asset.fill const cfg: Record = { ...clipBaseConfig(item.instanceId, item.layer, item.props), text: asset.text, fontSize: asset.fontSize, + fontFamily: fontCssFamily(asset.fontFamily), offsetX: item.layer.offsetX ?? 0, offsetY: item.layer.offsetY ?? 0, ...strokeCfg(item.props, asset), diff --git a/src/components/PropertiesPanel.vue b/src/components/PropertiesPanel.vue index 51af13c..1175b94 100644 --- a/src/components/PropertiesPanel.vue +++ b/src/components/PropertiesPanel.vue @@ -19,6 +19,7 @@ import type { Action, AnimatableProps, Layer } from '@/types/scene' import RangeSlider from './RangeSlider.vue' import ActionEditor from './ActionEditor.vue' import { t } from '@/i18n' +import { AVAILABLE_FONTS } from '@/lib/fonts' const SECTION_STORAGE_KEY = 'animatr:propSections' @@ -137,6 +138,14 @@ const textAsset = computed(() => { return a && a.kind === 'text' ? a : null }) +const textFontModel = computed({ + get: () => textAsset.value?.fontFamily ?? 'system-sans', + set: (id: string) => { + if (!textAsset.value) return + textAsset.value.fontFamily = id === 'system-sans' ? undefined : id + }, +}) + const polygonAsset = computed(() => { const a = selectedAsset.value return a && a.kind === 'polygon' ? a : null @@ -484,8 +493,14 @@ function deleteSelection() { {{ t('properties.sections.text') }}
    - - + + +
    diff --git a/src/components/SvgLayerPanel.vue b/src/components/SvgLayerPanel.vue index c8894cf..1ff91e3 100644 --- a/src/components/SvgLayerPanel.vue +++ b/src/components/SvgLayerPanel.vue @@ -77,7 +77,7 @@ async function addText() { name: text.length > 24 ? text.slice(0, 24) + '…' : text, text, fontSize: 48, - fill: '#f5d76e', + fill: '#000000', }) store.addLayer(asset.id) } diff --git a/src/devtools/tests.ts b/src/devtools/tests.ts index b31a7c1..f06e088 100644 --- a/src/devtools/tests.ts +++ b/src/devtools/tests.ts @@ -15001,4 +15001,141 @@ export function registerAllTests(): void { } }) }) + + suite('text font picker — model + render + export', () => { + test('TextAsset.fontFamily roundtrips through addAsset', () => { + const s = makeFreshStore() + const a = s.addAsset({ + kind: 'text', name: 'T', text: 'hi', fontSize: 24, fill: '#000', fontFamily: 'inter', + }) + expect(a.kind).toBe('text') + if (a.kind !== 'text') return + expect(a.fontFamily).toBe('inter') + }) + + test('default text fill is black (#000000) when added via the sidebar', () => { + // Regression: defaults used to be a yellow #f5d76e which made + // first-time text invisible-ish on white canvases. + const s = makeFreshStore() + const a = s.addAsset({ + kind: 'text', name: 'T', text: 'hi', fontSize: 48, fill: '#000000', + }) + if (a.kind !== 'text') return + expect(a.fill).toBe('#000000') + }) + + test('fontCssFamily resolves known ids and falls back to system sans', async () => { + const { fontCssFamily, AVAILABLE_FONTS, SYSTEM_SANS } = await import('@/lib/fonts') + const inter = AVAILABLE_FONTS.find(f => f.id === 'inter')! + expect(fontCssFamily('inter')).toBe(inter.family) + expect(fontCssFamily(undefined)).toBe(SYSTEM_SANS.family) + expect(fontCssFamily('does-not-exist')).toBe(SYSTEM_SANS.family) + }) + + test('PropertiesPanel renders a font dropdown for text assets and writes back', async () => { + const s = makeFreshStore() + const a = s.addAsset({ + kind: 'text', name: 'T', text: 'hello', fontSize: 32, fill: '#000', + }) + const layer = s.addLayer(a.id)! + s.selectedLayerId = layer.id + s.selectedLayerIds = [layer.id] + const handle = mountComponent(PropertiesPanel, {}) + try { + await nextTick() + const select = handle.host.querySelector('select') as HTMLSelectElement | null + expect(select).toBeTruthy() + const options = Array.from(select!.options).map(o => o.value) + expect(options).toContain('system-sans') + expect(options).toContain('inter') + expect(options).toContain('marker') + // Default selection: system-sans (asset.fontFamily is undefined). + expect(select!.value).toBe('system-sans') + // Pick Inter — the asset should mutate. + select!.value = 'inter' + select!.dispatchEvent(new Event('change')) + await nextTick() + const textAsset = s.scene.assets.find(x => x.id === a.id)! + if (textAsset.kind !== 'text') throw new Error('unexpected kind') + expect(textAsset.fontFamily).toBe('inter') + // Picking system-sans clears the field (undefined, not the literal id). + select!.value = 'system-sans' + select!.dispatchEvent(new Event('change')) + await nextTick() + const textAsset2 = s.scene.assets.find(x => x.id === a.id)! + if (textAsset2.kind !== 'text') throw new Error('unexpected kind') + expect(textAsset2.fontFamily === undefined).toBe(true) + } finally { + handle.unmount() + } + }) + + test('drawSceneFrame sets ctx.font with the selected font family', async () => { + const { drawSceneFrame } = await import('@/lib/render') + const s = makeFreshStore() + const a = s.addAsset({ + kind: 'text', name: 'T', text: 'hi', fontSize: 32, fill: '#000', fontFamily: 'lora', + }) + s.addLayer(a.id) + const cv = document.createElement('canvas') + cv.width = 200 + cv.height = 200 + const ctx = cv.getContext('2d')! + const fontHistory: string[] = [] + const realFontDesc = Object.getOwnPropertyDescriptor( + CanvasRenderingContext2D.prototype, 'font', + ) + Object.defineProperty(ctx, 'font', { + configurable: true, + get() { return realFontDesc?.get?.call(this) ?? '' }, + set(v: string) { + fontHistory.push(v) + realFontDesc?.set?.call(this, v) + }, + }) + try { + drawSceneFrame(ctx, s.scene, 0, {}) + const used = fontHistory.find(f => f.includes('Lora')) + expect(!!used).toBe(true) + } finally { + if (realFontDesc) Object.defineProperty(ctx, 'font', realFontDesc) + } + }) + + test('generateExampleHtml shows a font hint listing assets that use bundled fonts', () => { + const s = makeFreshStore() + s.addAsset({ + kind: 'text', name: 'Title', text: 'Hello', fontSize: 48, fill: '#000', fontFamily: 'playfair', + }) + s.addAsset({ + kind: 'text', name: 'Body', text: 'world', fontSize: 18, fill: '#333', fontFamily: 'roboto', + }) + const html = generateExampleHtml(s.scene) + expect(html).toContain('Fonts used in this animation') + expect(html).toContain('Playfair Display') + expect(html).toContain('Roboto') + expect(html).toContain('@font-face') + expect(html).toContain('PlayfairDisplay-Regular.woff2') + expect(html).toContain('Roboto-Regular.woff2') + }) + + test('generateExampleHtml omits the font hint if no assets use bundled fonts', () => { + const s = makeFreshStore() + s.addAsset({ + kind: 'text', name: 'T', text: 'hi', fontSize: 18, fill: '#000', + }) + const html = generateExampleHtml(s.scene) + expect(html.includes('Fonts used in this animation')).toBe(false) + }) + + test('exported runtime carries a FONT_FAMILIES map and uses fontFam(asset)', async () => { + const { generateRuntimeScript } = await import('@/lib/exportPlayer') + const src = generateRuntimeScript() + expect(src).toContain('FONT_FAMILIES') + expect(src).toContain('fontFam(asset)') + // Sanity: known font ids are present in the embedded map. + expect(src).toContain('"inter"') + expect(src).toContain('"playfair"') + }) + }) } diff --git a/src/i18n/messages.ts b/src/i18n/messages.ts index ccc4e69..1d85d33 100644 --- a/src/i18n/messages.ts +++ b/src/i18n/messages.ts @@ -202,6 +202,11 @@ export const en = { appearance: 'Appearance', button: 'On Click', }, + text: { + text: 'Text', + fontSize: 'Font Size', + font: 'Font', + }, polygonPoints: 'Points', polygonPointsHint: 'Changing the point count rewrites all keyframes; new points are inserted at the midpoint of the last edge.', polygonClosed: 'Closed path (fill)', diff --git a/src/lib/exportPlayer.ts b/src/lib/exportPlayer.ts index 8ace46b..ecb933a 100644 --- a/src/lib/exportPlayer.ts +++ b/src/lib/exportPlayer.ts @@ -1,4 +1,5 @@ -import type { Project, Scene } from '@/types/scene' +import type { Asset, Project, Scene } from '@/types/scene' +import { AVAILABLE_FONTS, fontFaceCss, fontPrimary, SYSTEM_SANS } from './fonts' /** Input accepted by every export helper below. A Project exports all * its scenes (jumpToScene works in the bundle); a single Scene is @@ -10,10 +11,18 @@ function isProject(p: ExportPayload): p is Project { return Array.isArray((p as Partial).scenes) } -const RUNTIME_VERSION = '27' +const RUNTIME_VERSION = '28' + +const FONT_FAMILY_MAP_JSON = JSON.stringify( + Object.fromEntries(AVAILABLE_FONTS.map(f => [f.id, f.family])), +) const ENGINE_SOURCE = `(function(){ if (window.AnimatrPlayer && window.AnimatrPlayer.__v === '${RUNTIME_VERSION}') return; + var FONT_FAMILIES = ${FONT_FAMILY_MAP_JSON}; + function fontFam(asset){ + return (asset && asset.fontFamily && FONT_FAMILIES[asset.fontFamily]) || FONT_FAMILIES['system-sans'] || 'sans-serif'; + } function easing(name, t){ if(name==='easeIn')return t*t; @@ -702,7 +711,7 @@ const ENGINE_SOURCE = `(function(){ } else if(asset.kind==='text'){ var mtOff=layer.offsetX!=null?layer.offsetX:0; var mtOffY=layer.offsetY!=null?layer.offsetY:0; - ctxm.font=asset.fontSize+'px sans-serif'; + ctxm.font=asset.fontSize+'px '+fontFam(asset); ctxm.textBaseline='top'; ctxm.fillText(asset.text,-mtOff,-mtOffY); } else { @@ -827,7 +836,7 @@ const ENGINE_SOURCE = `(function(){ }else if(asset.kind==='text'){ var tOffX=layer.offsetX!=null?layer.offsetX:0; var tOffY=layer.offsetY!=null?layer.offsetY:0; - ctx.font=asset.fontSize+'px sans-serif'; + ctx.font=asset.fontSize+'px '+fontFam(asset); ctx.textBaseline='top'; var tFill=p.fill||asset.fill; if(tFill && tFill!=='transparent'){ @@ -1330,6 +1339,22 @@ function jsonForExport(payload: ExportPayload): string { return JSON.stringify(out) } +function collectFontIds(payload: ExportPayload): string[] { + const ids = new Set() + const assets: readonly Asset[] = payload.assets ?? [] + for (const a of assets) { + if (a.kind === 'text' && a.fontFamily) ids.add(a.fontFamily) + } + return Array.from(ids) +} + +function escapeHtml(s: string): string { + return s + .replace(/&/g, '&') + .replace(//g, '>') +} + function sceneToLegacyProject(scene: Scene): Project { return { version: 1, @@ -1415,6 +1440,19 @@ export function generateExampleHtml(payload: ExportPayload, options: ExportOptio const sceneBoot = generateSceneScriptBody(payload, options) const canvas = isProject(payload) ? payload.canvas : payload.canvas const aspect = `${canvas.width} / ${canvas.height}` + const usedFontIds = collectFontIds(payload) + const usedFonts = usedFontIds + .map(id => AVAILABLE_FONTS.find(f => f.id === id)) + .filter((f): f is typeof AVAILABLE_FONTS[number] => !!f && !!f.file) + const fontHint = usedFonts.length === 0 ? '' : ` +
    +

    Fonts used in this animation

    +

    This preview uses ${SYSTEM_SANS.label} for missing fonts. To render with the correct typefaces, host the .woff2 files alongside this HTML and add the @font-face rules below to your CSS:

    +
      +${usedFonts.map(f => `
    • ${fontPrimary(f.id)} — ${f.file.replace(/^\//, '')}
    • `).join('\n')} +
    +
    ${escapeHtml(fontFaceCss(usedFontIds))}
    +
    ` return ` @@ -1489,6 +1527,8 @@ ${sceneBoot} + ${fontHint} +

    Embed on your own page

    <!-- once per page -->
    diff --git a/src/lib/fonts.ts b/src/lib/fonts.ts
    new file mode 100644
    index 0000000..1f9fb69
    --- /dev/null
    +++ b/src/lib/fonts.ts
    @@ -0,0 +1,111 @@
    +// Curated set of Google Fonts shipped with the editor as local
    +// .woff2 files (in /public/fonts). Adding a new entry needs three
    +// things: (1) drop the .woff2 next to the others, (2) add an entry
    +// here, (3) update FONT_FACE_CSS so the export player's HTML preview
    +// can hint users at @font-face declarations they need to bundle.
    +
    +import { ref } from 'vue'
    +
    +/** Reactive flag that flips to true once all bundled fonts have
    + *  resolved. Read it inside a computed/watch on the canvas to force
    + *  a re-render after fonts arrive — otherwise Konva's first paint
    + *  would use the fallback family and never refresh. */
    +export const fontsReady = ref(false)
    +
    +export interface FontDef {
    +  /** Stable id stored on TextAsset.fontFamily — never rename. */
    +  id: string
    +  /** Human-readable label shown in the picker. */
    +  label: string
    +  /** CSS font-family string (with fallback) used at render time. */
    +  family: string
    +  /** Path to the .woff2 in /public/fonts. */
    +  file: string
    +}
    +
    +export const SYSTEM_SANS: FontDef = {
    +  id: 'system-sans',
    +  label: 'System Sans',
    +  family:
    +    '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
    +  file: '',
    +}
    +
    +export const AVAILABLE_FONTS: FontDef[] = [
    +  SYSTEM_SANS,
    +  { id: 'inter', label: 'Inter', family: '"Inter", sans-serif', file: '/fonts/Inter-Regular.woff2' },
    +  { id: 'roboto', label: 'Roboto', family: '"Roboto", sans-serif', file: '/fonts/Roboto-Regular.woff2' },
    +  { id: 'lora', label: 'Lora', family: '"Lora", serif', file: '/fonts/Lora-Regular.woff2' },
    +  { id: 'playfair', label: 'Playfair Display', family: '"Playfair Display", serif', file: '/fonts/PlayfairDisplay-Regular.woff2' },
    +  { id: 'bebas', label: 'Bebas Neue', family: '"Bebas Neue", sans-serif', file: '/fonts/BebasNeue-Regular.woff2' },
    +  { id: 'source-code', label: 'Source Code Pro', family: '"Source Code Pro", monospace', file: '/fonts/SourceCodePro-Regular.woff2' },
    +  { id: 'marker', label: 'Permanent Marker', family: '"Permanent Marker", cursive', file: '/fonts/PermanentMarker-Regular.woff2' },
    +]
    +
    +const fontById = new Map(AVAILABLE_FONTS.map(f => [f.id, f]))
    +
    +export function fontDef(id: string | undefined | null): FontDef {
    +  if (!id) return SYSTEM_SANS
    +  return fontById.get(id) ?? SYSTEM_SANS
    +}
    +
    +export function fontCssFamily(id: string | undefined | null): string {
    +  return fontDef(id).family
    +}
    +
    +/** Primary CSS family name only (no fallback list). Needed for
    + *  ctx.font shorthand and FontFace registration. */
    +export function fontPrimary(id: string | undefined | null): string {
    +  const f = fontDef(id).family
    +  // Family is either '"Quoted Name", fallback' or a bare list.
    +  // Split on the first comma; trim outer quotes.
    +  const head = f.split(',', 1)[0]?.trim() ?? f
    +  return head.replace(/^"(.*)"$/, '$1')
    +}
    +
    +let loadPromise: Promise | null = null
    +
    +export function loadFonts(): Promise {
    +  if (loadPromise) return loadPromise
    +  if (typeof document === 'undefined' || !document.fonts) {
    +    loadPromise = Promise.resolve()
    +    return loadPromise
    +  }
    +  const tasks = AVAILABLE_FONTS
    +    .filter(f => f.file)
    +    .map(async f => {
    +      try {
    +        const face = new FontFace(fontPrimary(f.id), `url(${f.file}) format('woff2')`, {
    +          style: 'normal',
    +          weight: '400',
    +          display: 'swap',
    +        })
    +        const loaded = await face.load()
    +        document.fonts.add(loaded)
    +      } catch {
    +        // Best-effort. Failure to load a single font shouldn't block
    +        // the editor — text falls back to the next family in the list.
    +      }
    +    })
    +  loadPromise = Promise.all(tasks).then(() => {
    +    fontsReady.value = true
    +  })
    +  return loadPromise
    +}
    +
    +/** @font-face block users can paste into their own CSS when bundling
    + *  the example HTML — used by the export preview hint. */
    +export function fontFaceCss(ids: string[]): string {
    +  const seen = new Set()
    +  const out: string[] = []
    +  for (const id of ids) {
    +    if (seen.has(id)) continue
    +    seen.add(id)
    +    const f = fontById.get(id)
    +    if (!f || !f.file) continue
    +    out.push(
    +      `@font-face {\n  font-family: '${fontPrimary(f.id)}';\n  src: url('.${f.file}') format('woff2');\n  font-weight: 400;\n  font-style: normal;\n  font-display: swap;\n}`,
    +    )
    +  }
    +  return out.join('\n')
    +}
    diff --git a/src/lib/render.ts b/src/lib/render.ts
    index b977b98..db58b2a 100644
    --- a/src/lib/render.ts
    +++ b/src/lib/render.ts
    @@ -1,6 +1,7 @@
     import type { AnimatableProps, Asset, ButtonAsset, ButtonState, Layer, Scene, SvgAsset } from '@/types/scene'
     import { BUTTON_STATE_TIMES } from '@/types/scene'
     import { isButtonLayerActiveAt, isLayerActiveAt, sampleLayer } from './interpolate'
    +import { fontCssFamily } from './fonts'
     
     export async function loadSceneImages(scene: Scene): Promise> {
       const result: Record = {}
    @@ -202,7 +203,7 @@ function drawLayers(
           const offX = layer.offsetX ?? 0
           const offY = layer.offsetY ?? 0
           const fill = p.fill ?? asset.fill
    -      ctx.font = `${asset.fontSize}px sans-serif`
    +      ctx.font = `${asset.fontSize}px ${fontCssFamily(asset.fontFamily)}`
           ctx.textBaseline = 'top'
           if (fill && fill !== 'transparent') {
             ctx.fillStyle = fill
    @@ -303,7 +304,7 @@ function drawMaskShape(
       } else if (asset.kind === 'text') {
         const offX = layer.offsetX ?? 0
         const offY = layer.offsetY ?? 0
    -    ctx.font = `${asset.fontSize}px sans-serif`
    +    ctx.font = `${asset.fontSize}px ${fontCssFamily(asset.fontFamily)}`
         ctx.textBaseline = 'top'
         ctx.fillText(asset.text, -offX, -offY)
       } else {
    diff --git a/src/main.ts b/src/main.ts
    index 281d8f7..4ddd83c 100644
    --- a/src/main.ts
    +++ b/src/main.ts
    @@ -5,6 +5,12 @@ import App from './App.vue'
     import './composables/useTheme'
     import './styles/global.css'
     import { vTooltip } from './directives/tooltip'
    +import { loadFonts } from './lib/fonts'
    +
    +// Kick off font loading immediately. Konva text needs the FontFace to
    +// be resolved before the first paint, so we don't await — instead the
    +// stage observes document.fonts.ready and re-renders.
    +loadFonts()
     
     const app = createApp(App)
     app.use(createPinia())
    diff --git a/src/types/scene.ts b/src/types/scene.ts
    index be0fd98..5c07198 100644
    --- a/src/types/scene.ts
    +++ b/src/types/scene.ts
    @@ -116,6 +116,8 @@ export interface TextAsset {
       name: string
       text: string
       fontSize: number
    +  /** Font id from src/lib/fonts.ts AVAILABLE_FONTS. Undefined = system sans. */
    +  fontFamily?: string
       fill: string
       stroke?: string
       strokeWidth?: number
    diff --git a/src/version.ts b/src/version.ts
    index 445b245..a6846ca 100644
    --- a/src/version.ts
    +++ b/src/version.ts
    @@ -1,2 +1,2 @@
    -export const APP_VERSION = '1.2.4'
    +export const APP_VERSION = '1.2.5'
     export const APP_NAME = 'RUWIO'