From 5039b61e6c477328e7945bdbe3e1882922020f95 Mon Sep 17 00:00:00 2001 From: Igor Gladkoborodov Date: Wed, 10 Jun 2026 17:58:14 -0700 Subject: [PATCH] Fix font settings --- ...size-syncs-both-family-and-size-1-snap.png | Bin 0 -> 10610 bytes ...t-family-syncs-to-vv-fontfamily-1-snap.png | Bin 0 -> 11779 bytes ...renders-with-the-requested-font-1-snap.png | Bin 0 -> 10667 bytes ...ly-updates-guifont-reverse-sync-1-snap.png | Bin 0 -> 12677 bytes ...n-test-ts-screen-match-snapshot-1-snap.png | Bin 8577 -> 7341 bytes ...en-test-ts-screen-overlap-chars-1-snap.png | Bin 8602 -> 7320 bytes ...en-test-ts-screen-overlap-chars-2-snap.png | Bin 19167 -> 16885 bytes ...-show-undercurl-behind-the-text-1-snap.png | Bin 10020 -> 10033 bytes .../src/__tests__/fontSync.test.ts | 82 ++++++++++++++++++ packages/browser-renderer/src/screen.ts | 24 +---- packages/electron/bin/vvset.vim | 49 +++++++++++ packages/electron/package.json | 2 +- packages/server/bin/vvset.vim | 49 +++++++++++ 13 files changed, 183 insertions(+), 23 deletions(-) create mode 100644 packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-h-size-syncs-both-family-and-size-1-snap.png create mode 100644 packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-syncs-to-vv-fontfamily-1-snap.png create mode 100644 packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-renders-with-the-requested-font-1-snap.png create mode 100644 packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-updates-guifont-reverse-sync-1-snap.png create mode 100644 packages/browser-renderer/src/__tests__/fontSync.test.ts diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-h-size-syncs-both-family-and-size-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-h-size-syncs-both-family-and-size-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2e9f9e7d85dad59d04bdda7cbbfb353b56b6bf GIT binary patch literal 10610 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 ZC`!0c$Z=F68aUv(j#|b8EpL5L#P_Q&Y^K zT(7a*s?-Hqa0N`<{Q7VBHp|2}NW9kribAc86a?ZHE32&IC|}&p&N=Z+?HvN{pD@bn zQ^j_Rg}q)68e4Mh+BIN!QEkFU?a?SAxoyj4(BJVKbp|~0`cjzIvQpeg5IdH7#{IO*H5&;kI~F&lvLD^wV$Msjl&wD z#56!;PHXf9_(xI?%gqJ*xpNt8`N+DKum0g9SiKi!P>OLj*Neu?>pG}=W4f>$fzUki zN&I}ezj0VdU|RScrxJ$-xsQ2jBW!N#J^W)eQ>i&wMcNe$NPjwZi%;(x3a~9%kU{UV07o8 zUqCZHF-O#Xj9TUct`;B&y=sS(i&3>|?f>lg;ALd|=igz*ufNL-JZe?{gd;lbmg$$r z<=z8k%?^u6nsy(upBh^_@(;wUigrIO4 zYdor{zHa02upi%2^7Y}SrW&fjC5t66=DzuUY?f(5g)<>rF4$xXA6lvu5I}AN2|Qdc z{ApT)LjbUTj=jw6bC|7mPQLrBW_O0qCI)Y!iLv7&}IZ;#raK zI}bad=hT>Nb}HT+fctET2T#YyrQu5((q9&ZuUupF_RV$jl5tAn7&ha6WEo7ftbDIh z3`{aje%IME7;(Qm*W2lpS@L*w@`^rEyk^ ziq^v3cKU%oz>XMRw(1r@=)rvlQN3;k27FUWP8I8GbxDGuyPb>{=_jqC2Pz7a2+})F zPT7@UFJY`PVHMTOb`3~*^KLd)H7QO1pjJ^fHMg0lJC;t=>dcbhvx+@i%$Qb0sps0? zhf|3bZT#ipvcGOVj5uQSZPzY$0}9DZjZbut8SM;78<@q%TmG=EMavx>aVHh`7MJA> zC4mdiQX#Hta;M5yMpxT+my0dZXz#nN^rqZOdX@012$VF=1sz2SZcR6D^l);j=-prv z)^lY1@N*t5uy=k&a-3}qFms;yzVS(=pHO41bee;X`}}z_wOS|JLEoy_zU$3{;1NN-O7PU(8z#|!9Qf7`vQ_6%G<+KOgq+Y0z) zP-&u(E$D!)DV&{fj$x4$CjEVg{MDHyA`-(qBk2|wSIItRs%QNCeVDWgM6PoWtH&8s#vqqq%$D(B%nL) zBNgLlQwz{*vs_zU!35)pJe5B!c4=LC{{CHlASWz5+*aF$?Mg6NAttHiK+c(PaPtJ(&>V{3r9n~3DbaE2}aV>`% z%a*aVw!k4Sb-9pIPgUq-!d!X}<*H9%;E&R4x>W_AIcuy^E8g`19=PYc%NW25-B1Hoff*CVf_fR#3SM&7ha@13> z+q~>A9gJ5jO)l$*7b)~HY$IFh)>ob~lutSDIwv}J)FNdcQTKIxqNbvvrrKa0uXlQe zOB?(%+4#1HycDG?X8ADoDjw{fJI)1&1~k-_A@pq6ww?Ccc$T?r`@<^pxbv;qU<_;J zL(BgN)1ql79M@e+baP{2F?*=1+NK$GF#GX3xA;?rS_u9wGs~@ovG&D0@R1t7%$ZT+ zh($F+$d!nhuVeH;YdqQ1gJHREdCtLGFLqoH=y}W}nA5T{FIbYn1RYV3PVxSXw zvmbUg+q-oa+bMIsHwK~4l&;LbSg(zzJLG@x;5iH&Seuo2Yodp6?jD?Qu7~tDb~uUT z|4H~TxDAmB@bK_>HX|6+lSrGClq3cW4E|?_U-ar<3C#3*7jd%v&2}ngj^JUdPufzTa1l1bu literal 0 HcmV?d00001 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-syncs-to-vv-fontfamily-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-set-guifont-family-syncs-to-vv-fontfamily-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..c254e0de91c00dc425841f5aecf02c570b7a6280 GIT binary patch literal 11779 zcmc(FS5T8(*lqj}MQJursiG7CsiF6x^dco7T|OlA-a86{AVo?D9g!Y-htQ-5(joK` zLhm)y&~jd#Idf*tx%zLulZ$q0;Mp;wThx4aPU!Db@LZOKt{7+waU=mIWV zhUwHDRe#b89goJ5f`q=4INlpbGKv2sLea6gGsJk^6)>G_-d=%TuNz1WR_sxw?sf*)M&WfH4--@EWbP3QAYXi^sTs3iD z?6M-(&B2{+>lo3dYf}7#k#*8xK=f3s@KqM#1)0Po2y_&3gRIRj)^|u6QRa0Bm8CvD zKE}Fr_UY;L5BdvCKr0n9Gc#L(-}QMQK@}9S@^h4m!8S2Y4Obu-%n8`-1`3OK1z6RCS~u`y!pS8(9a=x(8tUN}yDhc(-{%*VIn%gJf4C|r(c8MY9h+QZ*T~fOgCDA0 z{u&G@=o#M8a^vlcB=*-{91Lh)I$Y_ENXKngs#^@CGWoR?SXph2m%x(a)a{d!^t80> zDpO2NP0_TT=Nppe2hjn~2_j=+V*300B~1DSZ6=Iejx&5EGKMSjFb`3r*Nb1diryWV zUvFOiXp`~MH0y$@WC&bcU?c}Xfgktn?g8}}Ry*rl7%^GU&mbG}TXfWjcvr7-bt@vm zNv`)_`q10A7w(7BXXYwI&`V~vQ|D}#+GBCKu4HXlQOV<`Vpf8ca^&K!ScVt!?)mYl zWF<6I_lHeGM|sSykADUYYYgi|-t7Ex|3x+jzsoAmTDnI~X>M+>PZEz`=Rxh9skoS; zR`<5(o*{R@b(*>aF1Q+hcITmpBwN@F87!+SV%O_l^Fb#y7}^)lJWsf0;&?oE$e1z8 zn4F^wr<+mr{B3hu>$59nM=d7ay;?a#BGd%-v3N`|N7$m=+poLfu&aX zo=@fJM80mgG&t(%b=G8JF~#;!freV9KfRS%teLUbU6FeB_MLWFq5nkUsJ54jF6-pi z@ghC5Y9diSQqc?NUypBBpML55)g@mAof}9K71Y(y2kKyjkp8*e_3r>WIQQEW3W^nj z8e2srrSM2v<`h;|)@bpQj_o-0P3*2(x?i}jovrPwS8R73`qd!#6wIZ7&>gI^OAdcl z&oB=itS(YD(mV%~gseBcx|P*MMNQ4fhC+?xsf+3htfl*vAOeqYREF$OipSir7eTH2J z(>&&;biAf2xQYZU;mbR7Nay)!n^MW0s)VUnWsKf*J=ZAqFaxid^S$wK&a>UEwD|;q zz#o?exGa3;fD0-pD6H9q>cp6%k#1|LE(uirDI&+eefF+Gho^7Bnj328^naYhB$ST{ zU2mulA{WEibIL>{@t=qXz~?_*h%?dz_mYX=HnVk3ENPPu7Eo22yWU~o!OH?AX|MCs zS(nqLXi3E8ikt8D0lr5SOMeY-8IU|ptv8};7E}+w`yLI4vJtL?%?99GI-{veH!(hV zG&^TYpXHTF(|jATd^D9ANJ`TB4#S*93^H{k7b8QTn9fCo%L3_@Xf!x6a(6wuJVMXzCLn# zva!D6kZ#4?ytPv8R((upgeKvg=*7iFvReNk5gPNVfwT?m{^H^fGJXn}otafk@dTDU z-Xg;fdPyo+;A~#V>CtO#0#j8Za>p;oPsNe>?Nm>QXrG`*;F(I0Z#>fjk;6P@)0Da8 z$=jeI2YvnE7xLAg<=xy=*Tk)n2%0KXlU-)BjjrFCf%(nRLjMETYzaVDazBVF)#B8slv%|e)yCKivYB@M~A`$YRB3Z{Dn5?C! zF(B8G2X{X2=>F5;I;J!kEm6L{eq&3?2-AF&TsZRUvz$$6=JCfnTjR9vn;dmb#2un9 zd=LAlm!d@HER9@OTW`~I--2$Wg;9K=D(0?2|mlhY7B@jYJE3&kn)G8QF z$1i6TI;ZF5HN)EI*4kjc7_4FzI65|lV83ZAFf+9?k#4|w={3{EIJT1y_U=yLFwoAN z;HsM?FLZA4V}*>A1-v8hL6d5Vq^XTzo?T`1N^DKCHvkt6!EL?#@^8`I)6vyksa7{= zx$aCU5_A<7%xIY}*^PR|X1(>ce<1x)>JHGIa$$Y8E!!;-rIyp-^Nu&gRccj@El zLSU&&TkMY>6pE+C#`4Yw8Swsua=aICm>V+^IAD5K+Ptctr3-_@3)>t5d=xz{`jWu% z6m+=3_SW9d7d7_PB_64MJ*>dQ7m&7<-m_=6?Wv+xp8CR_z55l<$3yV{{mo?IN zgK~ntCLdP6E zK+Dx~^rO7RzIh`TZeq+R3FhU+!gP%<249e`tgNU@_+o|E(({mLsuZfdW}lD4%FDr0 z{@+Iy;@7a#HV*##tv*alIsO5?B!h5c?*hCe*XgELfMMgAomXyb4_1>?|ELGJcse>d zBKEUDPvy1fPkp-Jtk{72Lqxp?3Gmkw;vRUTyAN5^e9eb#a9&=BHC)bPlPVnp@udhb zz2CNm)qVeiUsz>M+zxKdaxI3vv=R8IM3#3? zsHP}6)GbV7!)uJWHl%kP_s!uZNMGDqE5E9$D$w26Q+Bo-&kX{!%cSy>n=Di-h^kC9 zCem;o*N}AOwdk$5Z$hWD^@C!EuA%300S24`0`6iRNbf<+)r)}r*4vzo`LR}9n!n>Z zPbbUG$VF`{8bz3xer-(@Z1jWakKXrXW%~f7=K+C;gfX`kTCUyjVJzu<)}!lxchJ3BAEsp496EF5kF zOp@Wq^j9yWC*!tg0^h47+~7`h^Sk0@B?1lIB=!PU6(ftSH z_`Q;aiKSQYDb*{sSKmI7kgk^KkByF^ST~&;Mo>*B;~U@&D`Ph)MW^z=+oNN6<B^G#-hGjI~y05O32LQ z6A4A{9erV;)jx}9m6_ty#4sXyc&^;x6Xr$6ZZXrU7jTglwC9!iF{GxKxpSganFn#J@e=gpG^XC_8Q z`+}mQiz}cY82UNUnNOEG3nN29Zb2M{`ic~%$U?!M6Fdb4NqSQ#Yd+w`Q$Y3gwglR_v44m&Kik}chl3@PrLcQdrp)j3X_xdMcx?Md*~x4=0yCM#rq4%Ub1ou{MkNNRI`&vJST@qB10WQ_|FX! zRn>nrW8;lDb)A*MA;YKk!x zGdl_WNF?%8BsIyOuE1*7g00}i)D#2ykdB?1ne5KVj?=*bP~Y~og%MNiZW1bx z)Jv-*em2#g^N+N%qpOfeC2#q$?I%{mt1GL{s)V3t9g~X>G~HW5t&*{@5CDJ~cf7** zpWg%BYkOz&2=tx*)4l(E@!1dAaGbOiAOL~vs;Y@zWc_HID_>Yx=>I4MTvSt2X+OWF zKgb4tVW=@YJp2$`NfVXuHlETnxEJ>ATU|~CYVY(<`{iqJ4TVNfmkLl(QE9g>a91*$ zi_#3t8+B#pLZRl$g~Py$*G{yuddgE?uF1yA+CA8dHq_fV@Jt=x9^o?+OAimfTb%*! z+c<_Q+(l+RXP;re0TLRTii?d~Ng*Mnq@Yxg4!Px`TWoD@z46Gc9&NQ@?6Y;0bi`LG z@;$o_P&$F_cNLz#IEqh5IP;Z&P!Qep<>wDmRMd2@H|%C*)pTz_SLo^L>XtbL{e|kB z9bIFc)tQ>=`uZsZASvaeo5eXL=Ae~RJMR3^a{7_N!t6=X1Rx?Nj!Lm%I57Nal%6B*1+B(x3l! zfs)U0(~_n1LqVYLku{X2AGG5qLK82lKoGyCgDKr@x(WRxKk$K`0BHT1bqA2a5{lVOa2?V+= z;-l$Y;TxCP`lIb1R)A9OA|R@&9BDr|YehNGHV$bLap|j&+wqSc|Ea6HBebk$!RaW} zgN(sE#6KScOLLidSQUFX;q1apZ+h%&4Ft9}H}4AAbN_|vs;i#f9^aW70YO27>c~ja z>Y3WEUtKe{0uAVr)nSD~9u^BGuqA*m+2-TE09UYxY1=-n*l3X4x z<~dzUP9p6pBM}FlY;0_!{sY{36DbU=>rvrFwxu^g^HLV-N@@uXynOGp-#sIIO4Vmn zjVLI{(HdQG&&%=IDIT#vjWlis#xDN*cYEXu^N1lWef`BloHpdyz5TIKMrJ0(sTF6Y zyle&F{`EqQjEq`4N&iB1e2s~hUXsJi`06UOu%^5`)BWP4?#vUY@7kF$F)Azm)#aiO zw@5+H;;Z_oV9f6w@3Nuf^^J^}nzF3jBdQ1won7j4{{h|m*VgF{YXhd8PZg&m3xICy zNn;1qeSj~S7V+N&4N*x0Bg=ogB#V2ty9(I~q}%`n3QX$<$7pC6?@jLS@2^UI2U==b z+4tt=IRM#4lkS(~udlC%CFzmLE5B6w%H6gCcq_A-dK;$~e_C#`5mFZ18L3N6N=k~D zcTCiatDq&b*e@~D)B;ylifM(r_lkLevMrvQ?iEdQdoGc^^~_x%PaI5t5q3w4u3 zP5RBbLSbQHwug3qR7}l#V|&gCZQ$e)9Gnd1r#^|ftR_}~y(xoAhrfIA55Siqs^$Kt zqvroLm%6B=_*VgMro{3-faBwC_tM2rQ@i6>ZcoI+U{|<+J?^2s2cazeDT1Z4D|=iG zRX`(Ir}jJDJjJ`*2o&EGAxcxT=(r367WRCHJ=Tz->7>N z{KgmZP1{4RPHG<)Vlmh5(SvK?^IzZn-iw#lJ0BL7HY0ji(p+PKnfY89Uh1z-GVk(K zdvR$oz`66OlarHX$&9fmz62*nKiTWk-P4oIYrYA1OV80U{Z?RbNt5gP z8%ODQTn0V8$i`cUafRnW!(Ph_I-Rw<+ZhVo{(2?!dP?@5{bZf#L9C!CS}*+gw##%u zp2t86P^zZo?b>?SdJGmiBvF#;l4g`Yp0!TUC(>QGBLBs!nnUyu#S#~y8r zcsvZ=8ZY%|cn%R37Ve%TzHs`28u54zXP4=WOW-oGC*ch``6#WYNsw#8QeZ9s z-_&m)U;vYC3pMmTU_zO&tpF-|_Z!SO!S{=sL9>8L`bjW{z@aCemEP|thG)pz6#L0F zGlE`l?ujq3F|oKjty{cn*41{NB)H4~;GKY8)Npk&Ll>~flQpg5{1Cm!8gL2VS)i%2AJ*luR+6zCc?Y&8j+T~)V zy%zlS9%sF4$Cn_W4IlA{@6Y2YY+tSWnmnK$$yJ39_xv%NeG<0ykOfD8xl&ME3?@^N zSI;Q$Ue55{R4nVx9V!S=$$Qs6uyn2!vXP9*_;jo&BDGrNyNL! zTnpCd`1FL5)yMhGFBk?Dy#I|(Iu<|fWXM+DL@9GNE%vY%k67QQq&z7!xwclZMnGPq z5me*}qJ2gpYsHR+f_wrbJ`(hXm+JhM%!)qVZF>Fsb$%Nl?UQ`B$W^y7_*L}dho<+m z$L=gE#|L6ffkuJ9=%~DZp!_<+6gk=+V*G=pzbB{TpE0 z$+E(dx}J5?i}Rn`CpGxn!jKqUg=8m8(N*W>tJuDV)lHiQv9~8&oUA%_&%E4YKluk} zDOxFBMDtfxRtBB6c+c_c-0eB*KPTN1ge4%d7uMVe1x_P-8_uJxGwU`L9EnW!=dyV9xjU3(E4prM3y^ju?m zxkgpN7Jcz7`RUinfIl!GstjqG*+F8%C4Z|r%Re@BT=+!j=L~sT<|9w<=Q>*^ln1tb zXE>W5^8(PFAXk9kKW%#R{-iF7?MeE#{2uxMY`O21FV30&Lt=U|l%y(MEg?qwxKzhK zr^jVL$mLX&9=!Dg@-4G^p4iRAX9vQb56G_aat@Pux0#3CcHAaj=~dLVA8VrC!$J`~ z<8QvVHlHI_I00Wgi|R8LQhiX|pd$^~d3~q8eA6C_KLtO5^+GD4SZU zMRcQszK7^@M11tIH{|Z_boCZsb6oGm;rRp8lYA#lH=jFrS?D}=EH%Wzyhq}s^P8KC zETg>_uwj7Hturl-Wt5MiVMV6^WYK7sS@fOmw^!aPFtS=s()5SA22-=XU44q!~;u3l|t+78YhfLA}umIou zdK3FeuGjY1Dd-XrU7(fAoWpo~qNAhgcsDap_WcJ5|Rt`MysGd&qLVpB-l&uXcSsHrCOK^nE{09n5w{&`-Nr zyiG3-jc5Bk(*qba{p)jyJZ87N?xj1n-QnReQkRe4#gOp>DTf6>Vju{blO>mA44Pdq zT~O>+eERe$mW-*T5G(K0-)LjsbfrVE{!vygO8c|9wBJV@4!230RUPg6EU3(bQriDK zDNmb0oI|`0%>AxMniVlLG&zYI2XrfTu_DOO`P#>)#TLzibB-f}T$gVE`H|$dyILzJ zVFq)d#8@B(v!G)`HSi_q#67_=TeJssjt0C)U%)qtmc&^uw5{1U9aC;OumH`<2Xm2r zW4jbkz@kpBx%pGGeJ_W*5cdG-yG&N5Y2*@7QZiTO)V{8fwekoXkDUBJ7LVf0FeGvLm%w>twWlg0&vfV5dCf+99&`IW9nStdC*w5Bo^nUc-@t+w~ zrCq)Dts;G2W&F&(xbN9sIjucEEmZqM@B5+s;MY$THg{drisH5y7GyU)#;AQvGsrgj z2V1?M3nOqN@A^k%cg`;#e-(RV#XhM|>$6?1obZaQ8Db=FS=Bc=SI9E;mHgF@rjd%8 zlBFL4YN0Q(+)7jjDIQVg%Xq#^}0 zO_Sd6OLG$Q$@nodCjJJCJJ5NK83WL_!2~(&}wVOwLQYn zgbQ0Bq$YNklyuxdRwEp@PorpgKjcH`=^tmnU^zX#EoW`(b`1gVbzU^xM9LuB7$_)&@TZksUw4g{)p!a&>`|0SQ`EZ$<=i|MTY-4b}bn=aImtmDXA)7T$gttqA3#WhXH$Rc%7iZ>phSFgQ!9_0+F~?gJ%75 znKmH?hJ{44D2<7_qXhir+QN)|lWKZ_>!VrEcGcblj<}eb%}qoQkVIQ%$YNGYeAbkU zviCpV_?Rje(G0d3=lMg@*vRc9@5f_80p8s?y+(hEo@gf*o6hqA@=J6x))yx`yb(rv z8VsM$&gzb;T-7g*cyL>uJ7c<}?=gzC+5F@@XKi8c$KN~}XQE7NI#}I$e1+AO>)rkp zgI(2or@ih#D}8Y^qTaHRTV1OjdgOes#JFi%S8Hiw^~c%f=H@Aok{gfEliPaL1H|j@ zG()cEj6DxN=Qh`$c?*&kl^0lb8+;9LG*reEHQEB9NLGB20rB0ta_)HSb{ws!yV&`p znZ;lld$G#Xm*N$$`wxuuj!<8Mg#Z5iyWF_+a?5ufAflBCgM=sD8Y9yK-6DoU_qVgiCAFnrs>T2~1yI+m#^~T2 z*X>9eeiRVH_;q*U{QP|PlVb+iR7Q!0jTm@nd(U@ExwMg{aRa}bod}T1YYe%>kXOO| zJ7I*xs~+ivC`t0|FvWsFzDmBlTjm`*uo_TJgIUmf#Xe@Ygz~Wjv zh;*}ITFz$4?L`Z~66Tz`XvHrJg9j>@YgFG9l@yS<9;WDN=#>{{O2eXsF2C&hj~bo6 zdWUqiGD1hq3#tp_1dz3-p_6J?8jrUejUBH)kAF|Au+o~sU$2m5opy9~Mjb;*)TxXO zwX4pzN_|#F;NA+!K~@`9sO!Q~%<))H>A9=;qm3{av$nN9qU)hnwYjpM-c(2=HPV)p zg-ktJ(7`yg2V>%Hg{f{j-yPe-uRWmpAZ0pPRs&&XL|*&vVIt?4xm2B%DrUb%7%O7{ z;at&FL&NV%jbP~KoO`55yLbIV2vSk<`h%n2cwWR{v9{Qu?4q_zf&vW{B6q0>xfN2~#tr!$pIeYj zU>wmkb~7ZPCInnm?8Z?^I5s>M6}u{RxLJCrDE*yl==mShijv{~^&|na>k*(<8x8;c z#eeT@{eQ62{?A|T;BSCHcszTWOac()zV&BTBLEq3yE>K$#j69~fE3@Ty)Kb?|LK1L D7(Rg# literal 0 HcmV?d00001 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-renders-with-the-requested-font-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-renders-with-the-requested-font-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..409b8b238b23770e2179ebce1bd155f01e9ff5c6 GIT binary patch literal 10667 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 literal 0 HcmV?d00001 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-updates-guifont-reverse-sync-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/font-sync-test-ts-font-sync-between-v-vset-fontfamily-and-guifont-v-vset-fontfamily-updates-guifont-reverse-sync-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7b9620fecab36afa00ea4f4f857994bd949535 GIT binary patch literal 12677 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 literal 0 HcmV?d00001 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-match-snapshot-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-match-snapshot-1-snap.png index 427643ba7ad869d08c297a371ec4b38a1b65dabd..9343ac8f8f0cffa3656b5310eb66c2811834bb63 100644 GIT binary patch literal 7341 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ο=;_J*`l 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 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-overlap-chars-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-overlap-chars-1-snap.png index 17212fc49b655f449d20dbfd2e96266aececff2f..efcf0750ef8230854d16c57c1d6765d7d9d6b1f4 100644 GIT binary patch literal 7320 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 GkNyUg1uR1V literal 8602 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 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-overlap-chars-2-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-overlap-chars-2-snap.png index 32216f4ee3e8ae66c9e091d5bf00cdc1f35f5981..a7f649c2573486c3ec333b026bfac3917a12203f 100644 GIT binary patch literal 16885 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 literal 19167 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 diff --git a/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-show-undercurl-behind-the-text-1-snap.png b/packages/browser-renderer/src/__tests__/__image_snapshots__/screen-test-ts-screen-show-undercurl-behind-the-text-1-snap.png index fcbb2f0490d02d40d57b33537ea593c3eb90e691..52370e3c69f3c323cbe7e0b69a6b2a0c81eb6325 100644 GIT binary patch literal 10033 zcmeHtXHZk`w{)7=b{?%|W1J9~h4VSB}gg`avLe&|?i%6aVy$87A{j;Dyd@9+xLidAXdn zZfAeJW!-RDE#R_j_26(%Z`ZUb*0LZGT5cp>T`?p1ywb)~%EHoOs(o-Xug(%@nOg70 z^WaiqRNptHyq(x@%)2VLHXbqlxIt@InCrj8M)-Wkb@sxS*N2TO>HAr6k#gd96Y*0p zau*I)a2E8uc0)Zn|6i;7L8m8PJ1nj$i(9FZy9hmKZNjy^YLt?IEigr^dj& zjf6qU$e1nK*dUG_L``gp?|jFCt%XxoUBAHf6%z9>9`pCfzZ*Y%_%LXMpV>DR2Z7GW z$jQ`iZ8I#LKW`vKPVl**2MMUS05iY{b?wi3oMtoc0V@xinM&+}xdncJY0axdu+^#f zc#gB62dpe4Mq{JE&d$yf|0P+>REbO>PI7&3tq6_roFet%jO_vg+WU~$9j3DyOAUu{ zi0yW>{hkIZW{f^EBzcFPo7K<&e)7cIJK{L#gLTHE=VQcx? zOriG=*qqgFzx*7@bb0BBx=@jfhf<`P1#B^!FPG>#76Ek!7S`6qAkd#Dh`2JH~GpMl8=_eZA)e@DO~rS9G*&i1v2dG z=^=N2(TRW@fHC z$>FRQi460vXh$7!^cY^R^Gl(p*+w|SQjMuqLn0?ZZo_wE_%3jGZ?}iaLk=;#pFOBQ zfyY?S22fby-vDoelP}7c;qUO8*C+V*cZIG3nMP;h_ocRm-}|c} z%7MP7KS!Vjw6CYu#PKnD$cVn7IVISwc87H zok7H{a`Xj0g*FoASIZr3T%$veSiDiutc|4NTTx{g{%F6K>+#{XXa@NP0ZVutr($^rF)Q*?=*vn8M`*6Y z<}E403R(_Qu&*qj95}qBh=ki61FaO)s~&7khimYxeV<^<*!c`BmxdH|k6?#5(!-}- z4n2J##=Z&bKsEM#AYV+c%9Qmr&@Y6;rbrM?)K&+-XusW-zvf$=0!5eYKA<*E^M4tb zE_WRJd7TNg<=A{yZNR=B*YT6GPoOWSdB&)e;3U%qXeUmeXZMNcq=R}2H zn{)Eo9{J(NV%CA{Jw09Zhs*pzLBaE$#$K|#%*I|Bc_7f1UGt>H!)O6+9v;NOfG8^1 za>z<98_`g!+cRHcPIGY5P)0rASM>d{B%+mWjp$ddv}9mVz6T@0_xr@eBs{2F!P4sr z>$IS$8qaK?OkM~xq8nWr7+;~jgpfY$n#SN1SfI z4aa=Gha*GrlM&j|{qoyn{x_kaFv6@iLHUlbh=`^$N?%a)XcMCZ3qBfEG3!gW=>Iw1 zfK(fJE6W$dMu(w4zY9SlsBqkg%FUyLR@uLtA$qfwI8%y$=x9Dxn`3+*1+1m8)C#Js zj5DY$hlEeId$QFP>0FJ4_0t1ziw5^_lAY~-L6qJ^q!NtVIj)oQ37nj=v$Heu{C-M6 zKYSMHuvU9XS+9rdqN3CK1QtDbiz7^jR$#2U-+Pxzjde?tTvzhAi=d)`OS^dJ2^TNuqX~{ZVZOCeLbVE`T zy}h#3jqsXOTC#OG_Jmg$3DA?`}c+&K3v2|ApnZY%6qbFw8Or9nnW;QBOXZdv><9U+X)hlzGR@Dx6G%JdV3 ztm{*Ah4I)oJ7fxQ?}1t%0|*qs5e5Pk{Of>ZZ29p6DqSwEh-~_LsX4#wmzhxh5V(E@ z5MbIP9!vOZhJ>G=KBX7C>FW(ia7TS-&ns-d80R3vH#9gXTQZFEy#WFpAX6{eTQ`ij zR64slM^>myK7ORDjY}vjES&J*;K)}L_?s+$**ZHA{-GN@Uvyqst!RW#;GB^IX64V) zZJD#6EwglAe$XXZ5+4KTQOu>2|4_hdus?iQ6BQ9NfFm+69BRIO+eChVEFHv~0@bWl z|3tmkJViGz=Z}-#OZQZla&zW)x4@Dlf3EC-l%%9mw_JUc@iEXh!Z49>aiK&mO;SnR z_>-XfV>JgO?F{ezMDCx4S2GaPU!|Fs@!U3%88WR=6RWc2rk59hGTqEgA3 zhM-r?g=f@&l5evG3jcqB=wAc)ukZdZ@VYbdF#SJ*SM1V_NeS+M0kEtpBj{E7_;W4* z<~QvBP^jiq<-IU*^P1d4)DREXAD;8v6=8q2(c{q4^mKPJfb7PzIh zJ4o}km{gB18b&{Kw6v_xOH@Sa1BKIUJR}kwg_-oI*(laEgyvs86Y=;u+z1SoO_LNp z4h~oUn~Xt2Gp$_>&E`{gBe*(C>shsBsJfc=1}VM4`rX500I^+TJO=u}85DCIl=G1N zp9)Z6MiG&z_O^~yU-Fwb)T|aYJNQ?9GaMA?AP+=r@-JIU=w356@~OyEkkzX+mpG-K zQpg>2FLL0Su8z)Fl@V$PXbFD9+yleBw@uS}laPtmyI8BQT$a9`YXH=*OQoj9*R>a7 zK(g#t`OhlNSNBwJn!QDv5*bTOpTBtYC}QSILUQ*nF`ykDIe8gqVI0uF?jB}T`=^5b zNqZ+JY|1zIG805?PqlWbVj+n-L_+WMn1s603BsP?Cf#v=}K zTGD(mZf>|#(=}hk^B@paUoY;~%~|)#iHgeGniH8xSFT*kB|Zj&M?7lYGnxpp{!PZk ze%_Otsqy}grNXU|$cvdH?kuclu9r`}-0`^p(9}UuD!@|@^fv(Y{J;ln?tdmsMqG-H z_Tb^<&mO`to!yB#%LLzht!R@wRRZ7^=bQQNMft7Ix{rVUOkEz9>2)aQWwtN0+}IX- zm@O?SX)~ma)JGi$y_ze)adfm>dCFNqP4mQ*hChb2<$StdP*|AS%gyn+ur>2UHVv>*8__xBU1a<)yUPV6GkjoDWg$T% zUrH`&F%u6AGcA(6dnKpMtN&-WGa&1~(e40GffUNe#6S<+fzAC71<^ORZdcgodPM7^ zq{Mzm-H;%ToL=)y^uhqRsSLj5YiVzBx_$Mk=<`(LA(^Olhg)FIshti_cjbPjt?mOE4nm6c)P6S!tXsWDWnD?CkqUxv00cLVtX~ z2kx42zuc=&g@=6_$14QXF#|M31?vGkbxHL94-t-n*t!3=7w~UE{y+Pze+%-z1^NF{ zkck&~SODYg1JI}cr;I;<=7}XVj+e?Ll-*MIG1}kS+A7{CK5?2=>_L>70lTfd{lcqb zCmNO(ojZksw~jH;vC@vEwZxA)jn2v4esf3rH+oSQRI)3{_XivpPM##<(~_j0KJ^$g z$6$R%Pwb2L+AsKVQufxROg9^Y#^(>ZnRGVf(vDN5zJ$0N7MYebECK(O4{7&-e{+t# zlbQNFt5ED5{WsjOW`gx_jZh1B_wlK~Gz1@ZE5Y!@BuJyPHrlo^xYuXbhes+z-_2`< zG-A-oW9Ok5NPPD6=~K%&naa9^!D2pgwEi`khOo$_;60O^^r-!aB)4B*RTt6qmTh3? z+^Hq^nxdFUKN3OZlBoPj45G=Km@L9$BlB!H-*A5pMxU;G*(R5Cysj5{M_#cWj!&)5 zC^IY@#OxSah)P-W5pK8#Keg_&ncaEb`{Ru%Ti5LH3g<+!Etj=GC6w$Gt3 zzX}{XI~D=w@kEi$b-3|xu`3FpVjXG6gwf}k5KxVd9XXR#c4DaQgX1}7*cG3a? zN?+M!$q;w_ibH!v#$Fspe3kvqHz1d_76BNM&0a`|E|~Yehktmipl0pz(o*b2*$#G> z@yek6G)Ut_rB?qyc4yeTFpt>^O^*>%Q`1pf{97Jtu`0-%>X|1V;jH-aI>+7R-m{l5 z3m?zrx*J?@LR;TH6%Bg& zl_@A!J~t>{mh%*=fY=)izkK2FN!T-$n)SrcQ!KVrszbOsSl`Up)<#z#@>JG~4Rf~$ zO94JU_f4m!?T)l_H00KD8YFP)y+ZW+_wUytj^>@0mYh4|*aT8I_@}_ZCJuK-alWw^ zmFv~RN$3W0BnJLs{Wq47YG0G0x#*BK!}%LGef8S?Sw;V?r_ur@mW9_}6>G-{Ds8;5 z4p;*Gl;&N}%-P@}NkwEx>t|0&OUC;@oRyaR@}68n9e}L{>?JIKgbRBl?^L~C5%0X7 zw)VMJiM<+*qmt<8XgGx=3Ae{>FX}^<%IsS^Y`vFyKHpjC4Kh)%(F@q?>FG&Cqo*rf zF}x9^(f8ld?ySteK5^R=ZEIs{dd;2to*bej>`d13IN(f5v=9cgmLs^h;BALY%Mty! zc?Gup4L=966S)c}%rI7BXBO15xD%fob^SwuF-ppkSatl7M|+WYo&k2ZoFQ&y`OmXX zq>Ur??b{1&x=!}?na53Z^!2$9S7rj-@skD+ES^Lp5&?%(d}SCXq;)Vl1tIC_q!F?F z%lGe5{%C2g;3CC4l0JPJ##MQamwgA%^Qq9>2PVj?*>RtSMh=R^M<@d!yS-!8&)Zyn z6oMfJjgFSO$teI4PVP0+Th#_^3sRL14Smnj4~B&rGKS(lt2i_FY{}{16DF@-d)Po% z9HM0elOqnUS3DuA!iQ>BKKN%ie7k(B%!R&J<0(Q^oJpT}8O(AvDl$n5VR0v~I?scL6_g?~j7CQp(4V!Zb|t5fr=1HChM9tSD`NcyuZEDkEdQ z_V-tom^JOWl0Gz>O!5U-|Hf=%=W?&z41(Txhwyp3#V$E1F|i-1WENc^_F(Up{o8IZ zwsk9mzOgo5VEp36dmnw|z-MQTXglb{dw}nJc0#D5{zX6DQQuGlGoE3ll#ttB$T1D| zA5v0$yY=KTtgPIS?1thV8yu_qh~gszxfwzs32KJ*q>lW~To+VIP2_&M(kHmEj8($H z5{${jfSsRj&%ThW_MED*!gy7SvbI&Vw}@u=dwh2k(Xyruc6W3AC;=Claz|+fN8PVn zwXg#`9!^=2oBZX=Mj8J3mqgPPE5sOV?IF=pjY2wy%lrSOjmXsro*h-n4@sMm^4Dl4{tZvbLz#sAHjc zE|F#%hx*}C9{x~=JZ;@FPqKqC67?ScCRR|9n!aD@)4><$w_X4Gbv=svsHv|G*}(Z4 z;*S^H8Cwjs?WlOtMxeo>yA#?k$_&gdjb z1gvI;UxYi&ie`iW+-#=5vRzwyu#O0VYiNXx=l4ut%?^cRk47+r1L*H>(Ez`oEskdQ zRf6YaYn}tX5O4kVrs&6ygPpuyT*}0@FpZa@QRegCUY~#kW7Yqp`^((ARkpSni=0)z z-vEQ*Cv)8<=V+ucfQPpa91V(Xu+ZHkbgZEGdFi>vp#AQfjS|AbKJ+HIq&<2-@y3lC zYw7HuTYNDiC~y%Ow)(3))YfiKWeL9eJ2O<24#~^S3t$2UXYj|5kF+`oDrG9-N=1lf z+U4(;2~F5Fb6h#GidclM8(l0Q3Pvy~Too0y3&c5R{T{BO9i85ou4@efrG0p+cS}<% zIVmYpt_fmk7#r=e;`yuG5%ujAXl@R5@Nx&P5HvR3mJ~w~dh>+3JALc$6y$L7c`3MX zKZ$gahu)rS$ILHheI*?`>Xmew?Yt!Qs0C+?in*ZtaJm8bSEV$L5M-CGe0JSgTTlsD z#EI*7@ek@g(UA6QtPQME2;de&NlpRz?9`QIg(a4!cMvyaebw^OfNxo3icuiOM1vn{ZNEUlwuD=f=%{TE~8b4_+fKP9;% zC=@2tJvtY4ssy7uU`EKl3*AW61`~vzb|*>7vdt*AQ?3@9AlQPM-B8ntn$ditwxI-q z@m7dJP&Y8Ys(mGnt}oS3T&>C_>0z4>Z+40tZ`Lx}FMHt#t?ue_QJR7;YDkrs^?!+v zk9Vl2bqXOo7V=a%$I??$#5yc@nRXCe)B@so`9nT~TBsVGc0{P#znFU{LvhVXNA90d z`IQOpoTw~{9X)?S0n*^TR?=AGIeG1>Xq4pGMx%wp%b_5j;ICJUnzh6fQ*bz(_MSH@ zg@iZmi=J_r^1pfW(KT|EE6#yy1XXhgTl9Prs@|4gFiyh#nlDZV*VNt5t~|Q$-Ne}{ zsy$*JyN<-nxocBen+5JKAx{6w8s-dhVA4ko>5*rg3~!1{A-;Yt9lxH&0km9l9x0gV z4dibZYINTkB~0jjTv0u=johz-{+;?}%Xp7D=G3WEHD}2L284Lm#K=NbL^*`ew3zs% z>yCoYqEj#B0h2@zbuih;T2$Bz?7+b382ek(eykC{xa5-h8Jf1#&n89QgD0HK% zQ~`3d&SZ;I$R8WWc3zmOt~-n~u0d4v8pF5JpB=WE1x-TV3n=eJ#-I_j!=3&H{GMw4 zq0l|AXO8C03zgMUA%iz+N8VdW88lN{4ysO?1@wA<*NQ|0Y&SJS@gw+;X%CC-XcL+6 z)6biW*cR%o^VZGx}4+BQCV4682s=% zqBx!2wcx2kEO`@LG_$j5rWwSf(co!w1nw(MpG5NtPT8KEzit(2WTSI2 z&IU$EKbFqBv6gu41@;D9h2Oi!n~2neM0mt*@B*%PpZtm)`&mR2Ug7Gc-+j&UQ2g7h zbTy>yST$@+aj$ztBF%50=iwLscALeH{=)j&XOEj~d=)D(NOB+%xzKwtZsnjnwaCiE zw4PsKF(kLM_3+@>*QL8sp=CK`2i+LC_PvO8h1%~?EfDKE)gFdE3t4*C=f&2^cZX}@ zGl^Ow9i_3*`4k#Y?B1oEbSJu^m{fVGlyuP z32->YG$M9J{AIG<;ZRl4CU$wob+#0v7h*~i5pl)Hos81A&6qE+32bA{2*&+d50^rc zsImPuV{Q$OGpt(n5n{{&D*4;V`i(j0Df}76{77AISnKn3yCC1UD;sv%iw%@$(C>yP zoMFbr326smd6;`sH4T`69-?=4o^3g)J&xba)HIOVEiWILCYDyOp;EtGu0)sHtqJ2_ ziw+3cX`#%*RTl?~OVll8D_Y)~_3qa+5cA?Wh3Z1K!ZPie>4aj4zH*}fyS~nTMv!IG zu21Z*m3|oY`V*eJp19})q59Re@0lGR6cb5DHLlm_(w8n>f}1qI8$I0kqe7!iiZ(1g zHkg)ioPe`bTkr3n;$qYBH_<88K2Y;8!(*WI@IJyNiAk$ke0Isqoj_mwP)VOUMxy>G z5*uRNZ(Qg~$Z}MYsnVC8hxK?5TgBogs&)2xbL}07dvTl@?2b9YOy@!00#>Q4YV++B znyI0wv>S~@R7J*V;fb`WIckTjB^r@|9fcRkBs36qMy2e;cXnE&PjG?09p-7KTU@(W zs5hrG)OHCamX@Fx)lxQRvjEQ*Lv3{;=)WcR`ITI(u+i-g>tzTt8*TTyGSY-{;TXb^rTzL6ddZ}RIPMV8#KR(L|BuN7a; zI*M>4tyfX)yZ4)H)aU$zm%bI9nxPJV`cU?CKz;9`*1%8q$7{(sCPL1@1A`FRBJIr{ zblv3BjkMXINF%|dD2!Ce(XXQuuAjKLgSrhMwgS$v%$Mk_aS?U@9(IdvG zNA^?pfauV7=)lP5D~EOF#eZmi`9G7T8s$J$>^Z3To8a literal 10020 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 diff --git a/packages/browser-renderer/src/__tests__/fontSync.test.ts b/packages/browser-renderer/src/__tests__/fontSync.test.ts new file mode 100644 index 0000000..c42a247 --- /dev/null +++ b/packages/browser-renderer/src/__tests__/fontSync.test.ts @@ -0,0 +1,82 @@ +/** @jest-environment node */ + +import puppeteer from 'puppeteer'; +import { PORT } from 'config/jest/testServer'; + +import type { Browser, Page } from 'puppeteer'; + +const setup = async (browser: Browser): Promise => { + const page = await browser.newPage(); + await page.setViewport({ width: 300, height: 200, deviceScaleFactor: 2 }); + await page.goto(`http://localhost:${PORT}`); + await page.waitForSelector('input'); + return page; +}; + +const run = async (page: Page, cmd: string) => { + await page.keyboard.type(`:${cmd}`); + await page.keyboard.press('Enter'); +}; + +describe('Font sync between VVset fontfamily and &guifont', () => { + jest.setTimeout(30000); + + let browser: Browser; + let page: Page; + + beforeAll(async () => { + browser = await puppeteer.launch({ + headless: true, + slowMo: 10, + args: ['--no-sandbox', '--disable-setuid-sandbox'], + }); + }); + + afterAll(async () => { + // await browser.close(); + }); + + beforeEach(async () => { + page = await setup(browser); + }); + + afterEach(async () => { + await page.close(); + }); + + test('VVset fontfamily renders with the requested font', async () => { + await run(page, 'VVset fontfamily=Monaco'); + await run(page, 'VVset fontsize=14'); + await page.keyboard.type('iHello Monaco'); + await page.keyboard.press('Escape'); + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); + }); + + test('set guifont= syncs to VV fontfamily', async () => { + await run(page, 'set guifont=Menlo'); + await run(page, 'VVset fontsize=14'); + await page.keyboard.type('iguifont Menlo'); + await page.keyboard.press('Escape'); + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); + }); + + test('set guifont=:h syncs both family and size', async () => { + await run(page, 'set guifont=Courier\\ New:h16'); + await page.keyboard.type('iCourier h16'); + await page.keyboard.press('Escape'); + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); + }); + + test('VVset fontfamily updates &guifont (reverse sync)', async () => { + await run(page, 'VVset fontfamily=Monaco'); + await run(page, 'VVset fontsize=15'); + // `:set guifont?` echoes the value to the command line, which the + // screenshot captures. + await run(page, 'set guifont?'); + const image = await page.screenshot(); + expect(image).toMatchImageSnapshot(); + }); +}); diff --git a/packages/browser-renderer/src/screen.ts b/packages/browser-renderer/src/screen.ts index 1146aa4..805b9a8 100644 --- a/packages/browser-renderer/src/screen.ts +++ b/packages/browser-renderer/src/screen.ts @@ -443,18 +443,6 @@ const screen = ({ cursorEl.style.transform = `translate(${left}px, ${top}px)`; }; - const optionSet = { - guifont: (newFont: string) => { - const [newFontFamily, newFontSize] = newFont.trim().split(':h'); - if (newFontFamily && newFontFamily !== '') { - nvim.command(`VVset fontfamily=${newFontFamily.replace(/_/g, '\\ ')}`); - if (newFontSize && newFontFamily !== '') { - nvim.command(`VVset fontsize=${newFontSize}`); - } - } - }, - }; - const recalculateHighlightTable = () => { (Object.keys(highlightTable) as unknown as number[]).forEach((id) => { if (id > 0) { @@ -573,16 +561,8 @@ const screen = ({ modeInfoSet = props[0][1].reduce((r, modeInfo) => ({ ...r, [modeInfo.name]: modeInfo }), {}); }, - option_set: (options) => { - options.forEach(([option, value]) => { - // @ts-expect-error TODO - if (optionSet[option]) { - // @ts-expect-error TODO - optionSet[option](value); - } else { - // console.warn('Unknown option', option, value); // eslint-disable-line no-console - } - }); + option_set: () => { + /* empty */ }, mode_change: (modes) => { diff --git a/packages/electron/bin/vvset.vim b/packages/electron/bin/vvset.vim index b3381c9..4a18694 100644 --- a/packages/electron/bin/vvset.vim +++ b/packages/electron/bin/vvset.vim @@ -32,6 +32,52 @@ let g:vv_default_settings = { let g:vv_settings = deepcopy(g:vv_default_settings) +" Guard against infinite recursion when syncing fontfamily/fontsize and &guifont. +let g:vv_syncing_font = 0 + +" Apply VV's current fontfamily + fontsize to nvim's &guifont. +" Builds ":h,,..." so :set guifont? matches VV. +function! s:SyncGuifont() + if g:vv_syncing_font | return | endif + let l:parts = split(get(g:vv_settings, 'fontfamily', ''), ',') + if empty(l:parts) | return | endif + let l:size = get(g:vv_settings, 'fontsize', '') + let l:first = escape(l:parts[0], ' \') + if l:size !=# '' && l:size != 0 + let l:first .= ':h' . l:size + endif + let l:rest = map(l:parts[1:], 'escape(v:val, " \\")') + let l:guifont = empty(l:rest) ? l:first : l:first . ',' . join(l:rest, ',') + let g:vv_syncing_font = 1 + try + execute 'set guifont=' . l:guifont + catch + endtry + let g:vv_syncing_font = 0 +endfunction + +" Parse &guifont and apply its first entry's family + :h to VV. +function! s:SyncFromGuifont(value) + if g:vv_syncing_font || a:value ==# '' | return | endif + let l:first = split(a:value, ',')[0] + let l:family = substitute(l:first, ':h.*$', '', '') + if l:family ==# '' | return | endif + let l:size = matchstr(l:first, ':h\zs[0-9.]\+') + let g:vv_syncing_font = 1 + call VVsetItem('fontfamily=' . l:family) + if l:size !=# '' + call VVsetItem('fontsize=' . l:size) + endif + let g:vv_syncing_font = 0 +endfunction + +augroup VVFontSync + autocmd! + autocmd OptionSet guifont call s:SyncFromGuifont(v:option_new) + " Catch &guifont set in init.vim — OptionSet does not fire during startup. + autocmd VimEnter * call s:SyncFromGuifont(&guifont) +augroup END + " Custom VVset command, mimic default set command (:help set) with " settings specified in g:vv_default_settings function! VVset(...) @@ -124,6 +170,9 @@ function! VVsetItem(name) if has_key(g:vv_settings, l:name) let g:vv_settings[l:name] = l:value call rpcnotify(get(g:, "vv_channel", 1), "vv:set", l:name, l:value) + if l:name ==# 'fontfamily' || l:name ==# 'fontsize' + call s:SyncGuifont() + endif else echoerr "Unknown option: ".l:name endif diff --git a/packages/electron/package.json b/packages/electron/package.json index 1df0c96..dfb6ff9 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -2,7 +2,7 @@ "name": "@vvim/electron", "description": "Neovim GUI Client", "author": "Igor Gladkoborodov ", - "version": "2.6.2", + "version": "2.6.3", "private": true, "keywords": [ "vim", diff --git a/packages/server/bin/vvset.vim b/packages/server/bin/vvset.vim index b3381c9..4a18694 100644 --- a/packages/server/bin/vvset.vim +++ b/packages/server/bin/vvset.vim @@ -32,6 +32,52 @@ let g:vv_default_settings = { let g:vv_settings = deepcopy(g:vv_default_settings) +" Guard against infinite recursion when syncing fontfamily/fontsize and &guifont. +let g:vv_syncing_font = 0 + +" Apply VV's current fontfamily + fontsize to nvim's &guifont. +" Builds ":h,,..." so :set guifont? matches VV. +function! s:SyncGuifont() + if g:vv_syncing_font | return | endif + let l:parts = split(get(g:vv_settings, 'fontfamily', ''), ',') + if empty(l:parts) | return | endif + let l:size = get(g:vv_settings, 'fontsize', '') + let l:first = escape(l:parts[0], ' \') + if l:size !=# '' && l:size != 0 + let l:first .= ':h' . l:size + endif + let l:rest = map(l:parts[1:], 'escape(v:val, " \\")') + let l:guifont = empty(l:rest) ? l:first : l:first . ',' . join(l:rest, ',') + let g:vv_syncing_font = 1 + try + execute 'set guifont=' . l:guifont + catch + endtry + let g:vv_syncing_font = 0 +endfunction + +" Parse &guifont and apply its first entry's family + :h to VV. +function! s:SyncFromGuifont(value) + if g:vv_syncing_font || a:value ==# '' | return | endif + let l:first = split(a:value, ',')[0] + let l:family = substitute(l:first, ':h.*$', '', '') + if l:family ==# '' | return | endif + let l:size = matchstr(l:first, ':h\zs[0-9.]\+') + let g:vv_syncing_font = 1 + call VVsetItem('fontfamily=' . l:family) + if l:size !=# '' + call VVsetItem('fontsize=' . l:size) + endif + let g:vv_syncing_font = 0 +endfunction + +augroup VVFontSync + autocmd! + autocmd OptionSet guifont call s:SyncFromGuifont(v:option_new) + " Catch &guifont set in init.vim — OptionSet does not fire during startup. + autocmd VimEnter * call s:SyncFromGuifont(&guifont) +augroup END + " Custom VVset command, mimic default set command (:help set) with " settings specified in g:vv_default_settings function! VVset(...) @@ -124,6 +170,9 @@ function! VVsetItem(name) if has_key(g:vv_settings, l:name) let g:vv_settings[l:name] = l:value call rpcnotify(get(g:, "vv_channel", 1), "vv:set", l:name, l:value) + if l:name ==# 'fontfamily' || l:name ==# 'fontsize' + call s:SyncGuifont() + endif else echoerr "Unknown option: ".l:name endif