From ffa45ff706c3e6b03c979411f83319133b68ead0 Mon Sep 17 00:00:00 2001 From: LongYinan Date: Tue, 19 Nov 2024 00:31:54 +0800 Subject: [PATCH] fix: shadow blur 0 makes text shadow not render at all --- __test__/regression.spec.ts | 15 +++++++ .../snapshots/shadow-blur-zero-with-text.png | Bin 0 -> 3467 bytes src/ctx.rs | 37 +++++++++++------- 3 files changed, 37 insertions(+), 15 deletions(-) create mode 100644 __test__/snapshots/shadow-blur-zero-with-text.png diff --git a/__test__/regression.spec.ts b/__test__/regression.spec.ts index ad2d1fcf..21bbc926 100644 --- a/__test__/regression.spec.ts +++ b/__test__/regression.spec.ts @@ -234,3 +234,18 @@ test('shadow-blur-with-translate', async (t) => { ctx.strokeRect(-50, -50, 200, 100) await snapshotImage(t, { ctx, canvas }) }) + +// https://github.com/Brooooooklyn/canvas/issues/857 +test('shadow-blur-zero-with-text', async (t) => { + GlobalFonts.registerFromPath(join(__dirname, 'fonts', 'iosevka-slab-regular.ttf')) + const canvas = createCanvas(500, 500) + const ctx = canvas.getContext('2d') + ctx.font = '48px Iosevka Slab' + ctx.shadowBlur = 0 + ctx.shadowOffsetX = 20 + ctx.shadowOffsetY = 20 + ctx.shadowColor = 'red' + ctx.fillStyle = 'green' + ctx.fillText('TEST', 100, 100) + await snapshotImage(t, { ctx, canvas }) +}) diff --git a/__test__/snapshots/shadow-blur-zero-with-text.png b/__test__/snapshots/shadow-blur-zero-with-text.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf4b7bb90657161d5a987331fffe1f8aca74b29 GIT binary patch literal 3467 zcmeHJ`B&4&7LP?ms+glFK3PIriar%VMTig~eV`ya6vDpQDgh*{2@zsK>T5w1u#zW; z5Rg(KB$BX5h(Sq^YFvOIb@ z{I_g08TNaZ+VI5>_WNF&?)xJ2=p}RelXg!YdEWE&?Z5r=81;*}&yt#qQUll@`1r86>^z%gFYxn&+=`VTkz(H~b zVQl{(`Sf(%@knv@UW}Mo&M8lu;d_%?Lw9wxb}xPSL>|$_0-?``1eI#zBs2aaZ)4$? zNj`G9G?tl|7>)*m0J=p%N>73Bbiy#NJ2R>lR&(RWA(>o?Vm51<#}Bf)ofDdGz_|Y~ zA$Fowi)` zQ=wP_mIEgbv&5;3QxZPpvVTjfv!Mq1cupSoQ1FOz`^r$~_MeWQ_?oFTMom-NUB*TnIj#nHkw%l&%-{S)O zneNFjz87-9{lkod=4MMfTC>cul9yPI1&4R_=njtRC|CTvcIk*JIX)F7cNf{z7|(xP z7e(Bz?@Lp#V_c%O@=U04=T*9h=Qt>xpE-GZj!Y2PCP?5G#886VcW~F@w*Ed61?EEi zaVREcWgqFr{B|*KFFWuUEVk;LfgHzizw%h;dbp5zZ8+M$%6|WxR$_W(ebN=$a5SoW z?w1&R?QtSBSt1T41Fa5(v)XvRrWr_Bqtg9f9-88v?Pvf^v}m`v)Ne>nzVOv`{~ zOX5nA_lCAd2Jx-gDAXNnI5G%8V90l}Gt(5-NQYz8*8cIa8+nxJq58&2TT9|QMQ86X zS6#FwwBm>9^^y!$LI_>P%XQn@N$Pk>5?v|?adOV@_s+q~R=)obv|<+TpP+Ja4$o(wnl=!FzP#^R`Bq3&WF`($pqj~zAuq{v_{krP28&~XzE(2U8L64n%p2?(r!f{ks zVvsm0O%YNICnP}cKs&&eDaS0e)`iDs4G^q55ojY}pQk6bUpZyGnYBT@HW1K1JS%Hg zv;Rm{W3UcLHMarBva}QS4OT2S%$8o!jcxq)2e-!CkXs8CYm9P?!j+taQFxZR?rgpUvM~}6h zc<3keqlm=}4>X3dDw$Wp7gk_*TuoMop%!$(9~Jc!RxgTqCDUOGp+Cp0415MYYhc%< z^3x0I$h$!RQ)~*!;CWBYf^gt7N^{`e1#l_3Xze5##Acc)>V<+1}icNBemZ-CJ6KFtRRy{$4Q!9p} zv4WSbtEtl&_adK{bCKFIVALG2;bL3v+i{au-#TA5OB!u|(;Hoi%KyN4QKKw)@t!wX zyT7nITNj(mHpajiEw|^uksjb+-guW!UKOGzrT0-0m-8w=1vz;puYlk;?NF=fNgycB z7*#i7AK&kZw3jK~P6LrFQqVK3DWnZ0e~%Fx9?Y*BG7;*bijGA^X%j29=c0gq9Vqoao+{$@Vym@o3S%I#?*V#>lCdRnpEMdMsp#S%iH1?^;`TP_E8=G;`6-V~T;>H;z7S00f>4S#hDEUV1|oc1!M zjmKGX?GKCIhviy5nZ-u_o&dK5<^BVNw;{p1BR=Mgq}AF`yWW_&)r>Ga!d5*A?*c|2 zummlivh5202}_UI?p8C#=skL`h@#y-xHn?WP10F(ed4ikTM6$uy$ip%ebPGd88TA8 zvGJ$57%>7=0tZ-$)oC6b1^$GE5Ovw{A55vO8D;DSGzGGaUtBeyn|P5=mzjH?weIZwsSNm%@ylP3VIfDX`ni`mp?vWXfwb1L~-5g107~hs}zd7rZ2G zS-H{$lqpE63_1=uy_O$}YVh w)DG%c@W919