From 92e671d7970b8f96c50424c0c47efd0a1c95bc51 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 20 Sep 2025 20:15:20 +1000 Subject: [PATCH] Updated tests for FreeType 2.14.1 --- Tests/images/colr_bungee.png | Bin 4545 -> 4350 bytes Tests/images/colr_bungee_mask.png | Bin 2789 -> 2534 bytes Tests/images/colr_bungee_older.png | Bin 0 -> 4545 bytes Tests/test_imagedraw.py | 8 ++++++-- Tests/test_imagefont.py | 10 +++++++--- Tests/test_imagefontctl.py | 2 +- 6 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 Tests/images/colr_bungee_older.png diff --git a/Tests/images/colr_bungee.png b/Tests/images/colr_bungee.png index b10a60be057c4654ebcf36de28870e6bd6ee8010..9ec6b11823b429c1b7280b1539ce3bb2c4511e37 100644 GIT binary patch literal 4350 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 literal 2789 zcmbW3`#+QYAIC=yBW`1I$Q>Pa%e|1M9PjQ5wJDo&m^sa1gd8Falbq&`Ih0rqZQKqM z8Pc#@HivS^sT>k*QR8;3vC0%l->dIm@O^yWKU|ONas6<8uIu&ryk5^&#zhQLQGTyH z2n15JMcFujKoa`E{ROZja6MaO5CsCsGi`0oIK|S0^k9^#mqu?u43Qglz6y&sb##1c zco$aum+fd;ipjX4pOf02Gk$RyP6*UE7>?Q`sOQNKrZ@k+yIkyJ-EV*}uzjg-+g4c2 zuYX*-`okJ>>2W-fxIoiPNYsgW&UwMQ`T4_8Ns;*>#NKRG5a?e>o(Tw)w-0;(1d*`< zgUHDcNs!NeGU&9%|Mn<@`YpJbmz*ro+s2=odgg~{ETq3pnVFf%%~giFVKA6<#__$w zBO@cR?!pfr{18R24-$wuPVi_V@m$l#dtF^!rKb{e*i_fy#A6x?si~J~e zVC5Kr0e!SWAova3w=Z27zSl>IMadUSsiq5gqTQ6H$Kj)s_HGrjK3FC zsnpl6U%#JhQ2OPU7TsPv9{-~Blxgj=*+NaFRu81wqH$l8I zk&uv}vAx~vZRF?YCnYPZuBNv0_2aHag!{^yY)#d}eiP`TdRu)WG7wh5@X&{A@Z?HDAuprHL%Z(YDEdrZSR8-_q zyZz;D;+{QwJZeD-@1nuKQywsx#}isijy)S5HZU|?sBg#Co{akhixEo%zl#Sqy9qPZ zkD}T-yOMXwYM&%^U;3zJ8g_m2Q(DDr5><4Pta>(KXS=9L`d0-drNb~7ha{$C&fd~F zwNS3#DK7~Yu&=&Fxp$J!Rk*ehLy<_?Hh&}%d2Fb!kV^+?g-j=HP#C#eMm1rJ|Fkd2It zF4kdxhy{Rz1OkE2;~8l{)Uva)e}3dwQJE9mpYiU?+FREef@Frxql9n7dgmdl@uMd#7_56{ zMw`KPf-5R0(99!s55*9mP^hD`v;Q*wIGTlUGpdE|K5+I@dwaXya219=&{wu??A`goH5hWL)Bp|EiBv`f)x+uq7EJ~F*{b9r*L4_3r9@!mA1iPay$(C^hsYu zKC^PPklQpQ;$zaAtAWKk!43fqjWKKZA=6@M8JXGqU3!m@PXLD%heFlWO%t}FR=Fb8 z)UNO!I|($3l)dB+zt~s}|8tXosb9UqF0Gi6JSs-FqmQOz?$_4Wx0A#VmiPUpVvEJ9 z6}$qKeERU(IKLH?i)!-gzay)p{m?QZ$#owR49JOXz=tm5RWkma?a91QU^xFo#psyP z-t6Y)X49}YX0f8b!zbb*RzDtftg>spHb3x}q83U^LJE|+7#PQRKF)sy1W6V89*s_C zhrIr|%oq`bH@2{V2S%4@%O#dgTp1krId}5%GAWc;M1WCIP*_-fZLM*mnA&@A61wkSJfuL6zYIH{U>%LF@nv3=9wd7McvD zP$=c)<)}6z`^3akz88p-5%)yk-^pk+`lwesOqh}o5)!gH!+k$DXUzkjmN}4iyS$pm za~o4L>zbbaKEsU|>_c}+pBEH^TVi{+ zH$PvvaA9t4?xX%KbD!HNSS_|rrO6@(LL!k$EMvkrbwH^4`1k-T>oLfP+-C}DR=Ih3 zd2~9O2ac1Jl)PASB04-gJuAy5E(TmW(eG9Mki~M;Q%zr!J6);;(Q|cm1v~&)PdAio zq^+&}Z9{kuw!-;pzqGPKnNo?Mc#HtYTi>lIy=gZ{hXX!tDqE|tP|+kKM9lOc;A>&nWyy3K{1ogkh1l-Rhq->K(YO7dBO0_dvRewp6X?L;d| zIS}4;%%ne`M_G6}I5-3aEq5Gsp19K7-`_tyJhr7c1oSo0ym|nVfW2`gO1~+&L(yhI&?iZvc>5tE;O5f#6!} z_9Vl+4*N~;RJPeIbkuBa>(R`HkguhswOd}E$uth-9bfOQsHoWd?_eozwrI2>t2vFs z<*rS)vAw$_C2Hot0zUg{pZmk=j*bpCTb-+l9w*#bU0Jy@s#0ZbZ4IZMXE>CtA*!lR zv{l?LD3}}>5s3uW!4z*%zmA24g`vkk;qwD~e!i%z%loTHusU@Fr z(pPKnXdN4XJZ}9t=n}TvySPI~Ggml;g=YddI%1J1dQ$ zigyOzv_|%A|6yXH#)1~v>E=TmRC~O$bwFB@y9KcwO90IZUCw#1E@vl|tlQh!k?$Xm z&Ae@;p{y)eTr^$Kt#K+YE~X4;;Pf%}_IspC$1&Q6ekZ+o~`(*JtZism;MlaB5junTMtA`SVtsX_`yAP5EHK z(IcwzW9O1Oe6+1X)~p#pTT_jMxVX5>?!aHxI6dg@w#lJQO-=nfKTpliFZ{l`L{DV_ z!p_gn1Drz?DKzRD_eQ1!42c}4Um9lh7;%)ulg^Kdi}$Wi_|s@KAPNA;s46RWl|zfG zOs~#tZ;9V$WhvyhO^jIf@%j7#8MS8B%$}N>8Uq6ZfM-io1Aopy>`d99eYB%S(I+9F zJvD{1w6tt_GkzRsFCT=$ecIY3G@1tvH#IuiHB~Yi2%Nf!(F!EsF-`Y7DA?%eXuxyY zGSGCmks+a>1Yh6Bk009=jJ+4j$;nmS@>I$2+u7a(NPCw!3J3u7jE=~~=hfBKuB^-E z=H{-OB=1JthqW~?SJ(c3+?i+KR6{)HpVro*n=85y&BI;3@&LK&YHNc-LazVV`3{h( zt*tGdL~3%Y!#9{}C;%jYQ-LaBVQ!A5TSRZIF9Qf+1-!sN^ge^bX)wP@h7VT)%}%7* lHIyUSX(RoAbiTqL5>fu#K-(my1W;c=wr4Rm^;X^~{{iV^RQ&(| diff --git a/Tests/images/colr_bungee_older.png b/Tests/images/colr_bungee_older.png new file mode 100644 index 0000000000000000000000000000000000000000..b10a60be057c4654ebcf36de28870e6bd6ee8010 GIT binary patch literal 4545 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 None: def draw_text() -> None: draw.text((0, 0), text, font_size=16) - assert_image_equal_tofile(im, "Tests/images/imagedraw_default_font_size.png") + assert_image_similar_tofile( + im, "Tests/images/imagedraw_default_font_size.png", 1 + ) check(draw_text) @@ -1513,7 +1515,9 @@ def test_default_font_size() -> None: def draw_multiline_text() -> None: draw.multiline_text((0, 0), text, font_size=16) - assert_image_equal_tofile(im, "Tests/images/imagedraw_default_font_size.png") + assert_image_similar_tofile( + im, "Tests/images/imagedraw_default_font_size.png", 1 + ) check(draw_multiline_text) diff --git a/Tests/test_imagefont.py b/Tests/test_imagefont.py index 4565d35ba..4b8a61eb3 100644 --- a/Tests/test_imagefont.py +++ b/Tests/test_imagefont.py @@ -19,6 +19,7 @@ from .helper import ( assert_image_equal, assert_image_equal_tofile, assert_image_similar_tofile, + has_feature_version, is_win32, skip_unless_feature, skip_unless_feature_version, @@ -549,7 +550,7 @@ def test_default_font() -> None: draw.text((10, 60), txt, font=larger_default_font) # Assert - assert_image_equal_tofile(im, "Tests/images/default_font_freetype.png") + assert_image_similar_tofile(im, "Tests/images/default_font_freetype.png", 0.13) @pytest.mark.parametrize("mode", ("", "1", "RGBA")) @@ -1055,7 +1056,10 @@ def test_colr(layout_engine: ImageFont.Layout) -> None: d.text((15, 5), "Bungee", font=font, embedded_color=True) - assert_image_similar_tofile(im, "Tests/images/colr_bungee.png", 21) + if has_feature_version("freetype2", "2.14.0"): + assert_image_similar_tofile(im, "Tests/images/colr_bungee.png", 6.1) + else: + assert_image_similar_tofile(im, "Tests/images/colr_bungee_older.png", 21) @skip_unless_feature_version("freetype2", "2.10.0") @@ -1071,7 +1075,7 @@ def test_colr_mask(layout_engine: ImageFont.Layout) -> None: d.text((15, 5), "Bungee", "black", font=font) - assert_image_similar_tofile(im, "Tests/images/colr_bungee_mask.png", 22) + assert_image_similar_tofile(im, "Tests/images/colr_bungee_mask.png", 14.1) def test_woff2(layout_engine: ImageFont.Layout) -> None: diff --git a/Tests/test_imagefontctl.py b/Tests/test_imagefontctl.py index 95af3fda8..633f6756b 100644 --- a/Tests/test_imagefontctl.py +++ b/Tests/test_imagefontctl.py @@ -183,7 +183,7 @@ def test_x_max_and_y_offset() -> None: draw.text((0, 0), "لح", font=ttf, fill=500) target = "Tests/images/test_x_max_and_y_offset.png" - assert_image_similar_tofile(im, target, 0.5) + assert_image_similar_tofile(im, target, 3.8) def test_language() -> None: