From f5f4b5edfc91d4dec33141cf66fcdcd18f82a5ee Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson Date: Wed, 16 Aug 2023 10:46:12 +0200 Subject: [PATCH] Backport PR #26529: Fix MathText antialiasing --- 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 a2002c971296..324ba2af7a5f 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