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 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 literal 3143 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 Xi@U~2IX9xfp8#ZxyoM pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy