From 09b8ee83aafb260d7c1127e46b7c84f0b8f28908 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 14 Aug 2023 20:38:24 -0400 Subject: [PATCH] Fix MathText antialiasing I think an accident during confict resolution of #26168 incorrectly overwrote antialias settings for MathText. This puts the `_val_or_rc` call in the correct location. Also, re-arrange the tests to better catch this error. --- lib/matplotlib/_mathtext.py | 3 +- lib/matplotlib/mathtext.py | 3 +- .../baseline_images/test_text/antialiased.png | Bin 3143 -> 3045 bytes lib/matplotlib/tests/test_text.py | 76 +++++------------- 4 files changed, 20 insertions(+), 62 deletions(-) diff --git a/lib/matplotlib/_mathtext.py b/lib/matplotlib/_mathtext.py index 25a825b7b0d9..5073bdde0ff2 100644 --- a/lib/matplotlib/_mathtext.py +++ b/lib/matplotlib/_mathtext.py @@ -106,7 +106,7 @@ def to_vector(self): for x1, y1, x2, y2 in self.rects] return VectorParse(w, h + d, d, gs, rs) - def to_raster(self, antialiased=None): + def to_raster(self, *, antialiased): # Metrics y's and mathtext y's are oriented in opposite directions, # hence the switch between ymin and ymax. xmin = min([*[ox + info.metrics.xmin for ox, oy, info in self.glyphs], @@ -128,7 +128,6 @@ def to_raster(self, antialiased=None): # old approach and keeps baseline images backcompat. shifted = ship(self.box, (-xmin, -ymin)) - antialiased = mpl.rcParams['text.antialiased'] for ox, oy, info in shifted.glyphs: info.font.draw_glyph_to_bitmap( image, ox, oy - info.metrics.iceberg, info.glyph, diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 7f639d2c0987..e25b76c4037c 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -75,8 +75,7 @@ def parse(self, s, dpi=72, prop=None, *, antialiased=None): # is mutable; key the cache using an internal copy (see # text._get_text_metrics_with_cache for a similar case). prop = prop.copy() if prop is not None else None - if antialiased is None: - antialiased = mpl.rcParams['text.antialiased'] + antialiased = mpl._val_or_rc(antialiased, 'text.antialiased') return self._parse_cached(s, dpi, prop, antialiased) @functools.lru_cache(50) diff --git a/lib/matplotlib/tests/baseline_images/test_text/antialiased.png b/lib/matplotlib/tests/baseline_images/test_text/antialiased.png index 11ba1b082df94b965371f44699a556afdb09b6a6..06c007591d966acc6a2ef96fcf2429bc823d88a6 100644 GIT binary patch literal 3045 zcmbVOXIN9&77Z#4MPx=t)X+vy6p#>l5s9K8Ar$Go*U%Cnv`_-hD1wv`rAiqA=^a81 zf-=A$O+gX`B4CILAs{7`VBj6+$NRqd^}aVh?!D*Ud+s^=uC?~sJMosuO+kJrKLi31 zL>k;Mhd>Sqf-#Dh2b?$VH4lS}4NlJ%XMyp?g}ViNL5$sS*Z>SJ0PX%um{)KJ8WW@p z(}2NYo?c;!8gNxPAGn*EyO)=zx{@c%Qwgr54A)Rpz4VJO4u=iVQcwu|@8>W~u#bYH zv-NSX1s~SHE(8J*a{GR8l_Sc~5Qu;Z^2RmGh&(2hU}VLT7+9m6^!#>@=aD6UhAm@2 z!d)a05iEb)+cqhw!P*T=X) zv!cIv8w~hN2s`xX-P`d(HnFcZ8mN(DnuTM#q;}eey^g|-_K)?KhCoO?7e5(=azP-j z-oL1T0HuBdfVlql8Vr+vghC*3Kj|KZK;XK*;DJ6bfUJl2DVTlw>^~-_d3k#;Eet;D zX9@@ius%eszMqbajFgp=dlL6*m`UxliP~PtABRFrHAGYWmuOfGZLNWb++(V)0lb2z zt&qq>@#wEF&h80`X_aJV3ez@35wVT~sbWp7-JC6lNeU$ml~PbyU2W;*MSo0=%Rwv6 zE=PFu;pVSQa=Wtq{rxA#5C__x2eyZPz5IiaIH`2MCm^hb@JBWRd(;#@0T&Rxg11DY z(Mb;;Oe{@S5d){yLc_ug)1gr40!}NGy@}S$H<5Q}F*6^YBG*C-4bZw=$J>Y zwkyud6Xoo!b|3DKKHzK~mTeUYkz zEd!4f@3sd0Dwcg}8d2W}F|0CtXf|d$KNIFuIr2oE@v-m0tC5jOQv|1EeLa}i(o)&n zYzfOk<>cf9YvoThcq9}=uOnmD`c5S!CtC&tRNLFzKTc1VMA|ocCZ4OPt~Qd9kx5EP zvBF^L{QUfyBR9OM5wsNc{@yAPJt3Wund!%2vw|3GHluEGa`M^Rx0Xor&`@G}diu{| zVl~P>qhDAQ7s_3MQ_cPq7;;=df%HdzzrL4`&(Q3w3z10FBJ7jSRkXI+@bU4jZ){kE zg|(bR1NJNH>TJx+9+p%wPPGJ4D@i16YVeT!RFhAdpTB=bcDBZCA)QkBgkCqo)C!>+ z<1ija<4oITs+Nplc?u~`-7km{N@QO|ukQ>?!ZE9}(5H>I5^EjKRP43Q4t0cOogdVS z+Nus+ey4~^w=y$xlR!l8)YIv7uh8&thfFWK-Q8VsP3s4(1#K=aF7k_Ce@GC!ASXA3 z|ME0pnORmCJB8nTbCb#3Tj?BoH99KZau9#`hwA(Hd877HFR#?|^YhQN$jiz$ej0h= z1JpLPXHuvWs404Eh#qVQR#%^mZpz5Y@{w3wUTzL*o9B^}mk)dg#d02c3dSyqkjAK} z;!d4{RK!%IHd>k7FmvUY6iWi-FtKLj*R%Q3sP__f|63&UebdbgCV98~{j2gfonTp1 zZ~Ci@EzWsVW_elJ&6=8;Tm<3yn#OGOMhXaMA-H{$;zFqC>T;T&pYP|0K%vW~2SArg zOH1SJA)nt)PM${~5a%yk@E^*QudJ=Lc6TrO&Lb2mySQ{o4~wl2Tm2wE)VMr7(;i}F zV^cOa=bEn>q7RtciinSoPfANuuNC_Gr;$Be)11H{D2vBzQ&}Q`-(GOw8}+4b!Ul$h z<}oo{&M_>jjK`15OG<8}<964*I#cTE>S73^c~#xQ9LkC0(#lFh2D#>YS^!0`7Rw4{ zuUv`gIW2_-xehXzPNNmi%s2w=$zHhNb2T5B4SV5{=>nbpth)LV6*pnL<^GCHwgwaq zQYbdDv9ash+csCP#(jvO3CcT@YzYUP)^menW0;;cKyE)m3Qkt1?_(NcS`)|BS*we- z(!?#MNRaW%xivmMii9_`He_UEq_U#I%+4;SOZX{ftw;ug!LYWrQs0%5NRCz3HRC9S zF3(klgAuw2M4zSLVjUa%ylZu5jdpzsAS$P+322v5R<^)A-z_EAxzuH6pU&5gG`F*} z3vwC8M@7*YjH-?fEo$r@b8FwC%tQtT8*MWg4k{q=jh3jJJhIyI<^)|&IfCRD60!*ltQpO}d|`1( za^T}fcbekM-rmr~@$>l_w{_FszI*38rm`sml-kXDGci$2*x$YB=H`}OlAL@Lti{N% zac=OD?&#>Sbabqiv#IqR&C|qxTN@yTd^Q1YVwkS8Gj~{3MJ0K$p=Vif2cZjH4KZm> zBw5a*CGPYM-}G%8<>ux_Z?91CTkm~T3H#A{dV23?t>MHlrhVW{n;F2){MN1Cx0uuF zCC1*~rNZ*|CE!2wZru2?`?-)3GIqsByMLWNl=1N4)193NdE5G{a@N(amB+M||1bs^ z>t4T3#Lnvin_PTbVS)dgAASz`;FN-OWMsR}!M6}@9v)dqN!@GLuHm<-;Y?F~O-)Up z2Fe|7fuDtiOF4VnjE6VH&rEp4zkfkhA$6M07srIwub$Y6i0*s6pv{?%Q0i4QKX~C% zCOYH&)kCe#I($HJL!&xJC7dUX10wVb3L+QjJ^1$Vp507oWNd z${DaY8EI*K9UYzPsem!Y_AJ51*SB0!N{U)Q1L+9zC=1-2JbqkhVMn3+o1}t*!d|c- zr03}0m3Dsp$p0?D|5vsCx09v&(h&O>6ME<02=-VN=p;mlyODl`!ettpnnD-;`pGU+ z^^-{4!N!8-pBuciyRYN;C~x1E07Ilkt#(;B@xwiU`+fMPNaq#I#sUrCmm3C3JB~tn zR3%khUy6Ye?N6>gQ(sq9q-(0Z_FJuEyZh?ia?{x3oSX{4r%701PqNAko|_DJEdtvH zX=!O$+S-;UCGkhOfO_-sz+t_VFm zF){~-&phJ`-)l>bPh0@)!yJ39R|rww*l3=Tl459Rn2uwO|M@`SxkgE#fx-P2%xrD` z=) zLTy0@1Xu#6c8+4I$~$#fPPbwT7i8lZ*AH@db$O(rPq}C?RaGk%i?zgLTG`sZ`<>=9 zRxrugo~_&5#09=@)N5~VXYbI`tQ;IJb59XFKZ{d=vrmDIx)3rlNM~nfSp|i{W%KwmgH$aZvYKnrPf+;T+}zw|keMR@ s!b%huB>BYOz2wW>f74?AQ?%<6m#mu?m;LwyL0<|%>Y3cA)pfn|A05K6h5!Hn literal 3143 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 Xi@U~2IX9xfp8#ZxyoM