See More

From 3a321943cca867db547d64e068deb9d2e62bcd45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Thu, 6 Aug 2015 15:56:07 +0100 Subject: [PATCH 01/14] first attempt finetuning with cm TeX match superscript height --- lib/matplotlib/mathtext.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index e633b023dc63..aa0c7f837ad9 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,15 +1187,16 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = 0.2 +SCRIPT_SPACE = -0.10 # Percentage of x-height that sub/superscripts drop below the baseline SUBDROP = 0.3 # Percentage of x-height that superscripts drop below the baseline -SUP1 = 0.5 +SUP1 = 0.4 # Percentage of x-height that subscripts drop below the baseline SUB1 = 0.0 -# Percentage of x-height that superscripts are offset relative to the subscript -DELTA = 0.18 +# Percentage of x-height that supercripts are offset relative to the subscript +# for slanted nuclei +DELTA = 0.15 class MathTextWarning(Warning): pass @@ -2736,33 +2737,30 @@ def subsuper(self, s, loc, toks): # node757 sub.shrink() x = Hlist([sub]) - # x.width += SCRIPT_SPACE * xHeight + x.width += SCRIPT_SPACE * xHeight shift_down = max(shift_down, SUB1) clr = x.height - (abs(xHeight * 4.0) / 5.0) shift_down = max(shift_down, clr) - x.shift_amount = shift_down + x.shift_amount = shift_down / 2. else: super.shrink() x = Hlist([super]) - # x.width += SCRIPT_SPACE * xHeight - clr = SUP1 * xHeight - shift_up = max(shift_up, clr) - clr = x.depth + (abs(xHeight) / 4.0) - shift_up = max(shift_up, clr) + x.width += SCRIPT_SPACE * xHeight + shift_up = SUP1 * xHeight + if self.is_slanted(nucleus): + x = Hlist([Kern(DELTA * x.height),x]) if sub is None: x.shift_amount = -shift_up else: # Both sub and superscript sub.shrink() y = Hlist([sub]) - # y.width += SCRIPT_SPACE * xHeight + y.width += SCRIPT_SPACE * xHeight shift_down = max(shift_down, SUB1 * xHeight) + # If sub and superscript collide, move sup up clr = (2.0 * rule_thickness - ((shift_up - x.depth) - (y.height - shift_down))) if clr > 0.: shift_up += clr - shift_down += clr - if self.is_slanted(nucleus): - x.shift_amount = DELTA * (shift_up + shift_down) x = Vlist([x, Kern((shift_up - x.depth) - (y.height - shift_down)), y]) From 800ff30f74aa125b895a3c88bd59de33a0bb080c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Thu, 6 Aug 2015 22:21:21 +0100 Subject: [PATCH 02/14] shrink after Hlist! --- lib/matplotlib/mathtext.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index aa0c7f837ad9..1f0c7b0299e8 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,7 +1187,7 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = -0.10 +SCRIPT_SPACE = 0.07 # Percentage of x-height that sub/superscripts drop below the baseline SUBDROP = 0.3 # Percentage of x-height that superscripts drop below the baseline @@ -1196,7 +1196,7 @@ def get_underline_thickness(self, font, fontsize, dpi): SUB1 = 0.0 # Percentage of x-height that supercripts are offset relative to the subscript # for slanted nuclei -DELTA = 0.15 +DELTA = 0.10 class MathTextWarning(Warning): pass @@ -2631,7 +2631,6 @@ def is_slanted(self, nucleus): def subsuper(self, s, loc, toks): assert(len(toks)==1) - # print 'subsuper', toks nucleus = None sub = None @@ -2686,6 +2685,8 @@ def subsuper(self, s, loc, toks): "Subscript/superscript sequence is too long. " "Use braces { } to remove ambiguity.") + last_char = nucleus.children[-2] if isinstance(nucleus,Hlist) else nucleus + state = self.get_state() rule_thickness = state.font_output.get_underline_thickness( state.font, state.fontsize, state.dpi) @@ -2735,25 +2736,26 @@ def subsuper(self, s, loc, toks): shift_down = SUBDROP * xHeight if super is None: # node757 - sub.shrink() x = Hlist([sub]) + x.shrink() x.width += SCRIPT_SPACE * xHeight shift_down = max(shift_down, SUB1) clr = x.height - (abs(xHeight * 4.0) / 5.0) shift_down = max(shift_down, clr) x.shift_amount = shift_down / 2. else: - super.shrink() - x = Hlist([super]) + if self.is_slanted(last_char): + x = Hlist([Kern(DELTA * super.height),super]) + else: + x = Hlist([super]) + x.shrink() x.width += SCRIPT_SPACE * xHeight shift_up = SUP1 * xHeight - if self.is_slanted(nucleus): - x = Hlist([Kern(DELTA * x.height),x]) if sub is None: x.shift_amount = -shift_up else: # Both sub and superscript - sub.shrink() y = Hlist([sub]) + y.shrink() y.width += SCRIPT_SPACE * xHeight shift_down = max(shift_down, SUB1 * xHeight) # If sub and superscript collide, move sup up From 8007cd19deabf17b0973c9c0fd6d076b3005e285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Thu, 6 Aug 2015 22:31:58 +0100 Subject: [PATCH 03/14] latest finetuning for cm, other fonts will need different parameters! --- lib/matplotlib/mathtext.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 1f0c7b0299e8..6d263bb9378b 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,7 +1187,7 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = 0.07 +SCRIPT_SPACE = 0.00 # Percentage of x-height that sub/superscripts drop below the baseline SUBDROP = 0.3 # Percentage of x-height that superscripts drop below the baseline @@ -2685,7 +2685,10 @@ def subsuper(self, s, loc, toks): "Subscript/superscript sequence is too long. " "Use braces { } to remove ambiguity.") - last_char = nucleus.children[-2] if isinstance(nucleus,Hlist) else nucleus + last_char = nucleus + if isinstance(nucleus,Hlist): + if len(nucleus.children) >= 2: + last_char = nucleus.children[-2] state = self.get_state() rule_thickness = state.font_output.get_underline_thickness( From 22a668260c6cbe76c8a05e725e97b69fbf5e7885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Fri, 7 Aug 2015 00:30:47 +0100 Subject: [PATCH 04/14] finetune stix and stixsans --- lib/matplotlib/mathtext.py | 56 ++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 6d263bb9378b..59c622706e8d 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,16 +1187,31 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = 0.00 -# Percentage of x-height that sub/superscripts drop below the baseline -SUBDROP = 0.3 +SCRIPT_SPACE = {'cm': 0.03, + 'stix': 0.10, + 'stixsans': 0.10} +## Percentage of x-height that sub/superscripts drop below the baseline +SUBDROP = {'cm': 0.3, + 'stix': 0.3, + 'stixsans': 0.3} # Percentage of x-height that superscripts drop below the baseline -SUP1 = 0.4 +SUP1 = {'cm': 0.4, + 'stix': 0.8, + 'stixsans': 0.8} # Percentage of x-height that subscripts drop below the baseline -SUB1 = 0.0 +SUB1 = {'cm': 0.4, + 'stix': 0.6, + 'stixsans': 0.6} +# Percentage of x-height that subscripts drop below the baseline when a +# superscript is present +SUB2 = {'cm': 0.3, + 'stix': 0.6, + 'stixsans': 0.5} # Percentage of x-height that supercripts are offset relative to the subscript # for slanted nuclei -DELTA = 0.10 +DELTA = {'cm': 0.10, + 'stix': 0.15, + 'stixsans': 0.25} class MathTextWarning(Warning): pass @@ -2696,6 +2711,11 @@ def subsuper(self, s, loc, toks): xHeight = state.font_output.get_xheight( state.font, state.fontsize, state.dpi) + fs = rcParams['mathtext.fontset'] + # If a custom fontset is used, use CM parameters + if fs == 'custom': + fs = 'cm' + if napostrophes: if super is None: super = Hlist([]) @@ -2732,35 +2752,35 @@ def subsuper(self, s, loc, toks): return [result] # Handle regular sub/superscripts - shift_up = nucleus.height - SUBDROP * xHeight + shift_up = nucleus.height - SUBDROP[fs] * xHeight if self.is_dropsub(nucleus): - shift_down = nucleus.depth + SUBDROP * xHeight + shift_down = nucleus.depth + SUBDROP[fs] * xHeight else: - shift_down = SUBDROP * xHeight + shift_down = SUBDROP[fs] * xHeight if super is None: # node757 x = Hlist([sub]) x.shrink() - x.width += SCRIPT_SPACE * xHeight - shift_down = max(shift_down, SUB1) - clr = x.height - (abs(xHeight * 4.0) / 5.0) - shift_down = max(shift_down, clr) + x.width += SCRIPT_SPACE[fs] * xHeight + shift_down = max(shift_down, SUB1[fs] * xHeight) + #clr = x.height - (abs(xHeight * 4.0) / 5.0) + #shift_down = max(shift_down, clr) x.shift_amount = shift_down / 2. else: if self.is_slanted(last_char): - x = Hlist([Kern(DELTA * super.height),super]) + x = Hlist([Kern(DELTA[fs] * super.height),super]) else: x = Hlist([super]) x.shrink() - x.width += SCRIPT_SPACE * xHeight - shift_up = SUP1 * xHeight + x.width += SCRIPT_SPACE[fs] * xHeight + shift_up = SUP1[fs] * xHeight if sub is None: x.shift_amount = -shift_up else: # Both sub and superscript y = Hlist([sub]) y.shrink() - y.width += SCRIPT_SPACE * xHeight - shift_down = max(shift_down, SUB1 * xHeight) + y.width += SCRIPT_SPACE[fs] * xHeight + shift_down = max(shift_down, SUB2[fs] * xHeight) # If sub and superscript collide, move sup up clr = (2.0 * rule_thickness - ((shift_up - x.depth) - (y.height - shift_down))) From 2ade0faddfdd2911aa85162f46d26dc79c94b4fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Fri, 7 Aug 2015 01:07:28 +0100 Subject: [PATCH 05/14] add tests for brackets --- lib/matplotlib/tests/test_mathtext.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index e74db5cc8788..d6d0465d4e53 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -97,7 +97,9 @@ r'$\mathring{A} \stackrel{\circ}{A} \AA$', r'$M \, M \thinspace M \/ M \> M \: M \; M \ M \enspace M \quad M \qquad M \! M$', r'$\Cup$ $\Cap$ $\leftharpoonup$ $\barwedge$ $\rightharpoonup$', - r'$\dotplus$ $\doteq$ $\doteqdot$ $\ddots$' + r'$\dotplus$ $\doteq$ $\doteqdot$ $\ddots$', + r'$x_kx^py^{p-2} d_i^jb_jc_kd x^j_i E^0 E^0_u$', # github issue #4873 + r'${x}_{k}{x}^{p}{y}^{p-2} {d}_{i}^{j}{b}_{j}{c}_{k}{d} {x}^{j}_{i}{E}^{0}{E}^0_u$', ] digits = "0123456789" From 84ace6128e9550c53ce68c990f3c41fe498d0a3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Fri, 7 Aug 2015 02:26:36 +0100 Subject: [PATCH 06/14] apply different rules for dropsub (integrals) --- lib/matplotlib/mathtext.py | 61 ++++++++++++++++++--------- lib/matplotlib/tests/test_mathtext.py | 2 + 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 59c622706e8d..06113927c1b3 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,15 +1187,15 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = {'cm': 0.03, +SCRIPT_SPACE = {'cm': 0.05, 'stix': 0.10, 'stixsans': 0.10} ## Percentage of x-height that sub/superscripts drop below the baseline SUBDROP = {'cm': 0.3, - 'stix': 0.3, - 'stixsans': 0.3} -# Percentage of x-height that superscripts drop below the baseline -SUP1 = {'cm': 0.4, + 'stix': 0.4, + 'stixsans': 0.4} +# Percentage of x-height that superscripts are raised from the baseline +SUP1 = {'cm': 0.45, 'stix': 0.8, 'stixsans': 0.8} # Percentage of x-height that subscripts drop below the baseline @@ -1212,6 +1212,11 @@ def get_underline_thickness(self, font, fontsize, dpi): DELTA = {'cm': 0.10, 'stix': 0.15, 'stixsans': 0.25} +# Percentage of x-height that supercripts are offset relative to the subscript +# for integrals +DELTAINTEGRAL = {'cm': 0.5, + 'stix': 0.5, + 'stixsans': 0.4} class MathTextWarning(Warning): pass @@ -2752,35 +2757,53 @@ def subsuper(self, s, loc, toks): return [result] # Handle regular sub/superscripts - shift_up = nucleus.height - SUBDROP[fs] * xHeight - if self.is_dropsub(nucleus): - shift_down = nucleus.depth + SUBDROP[fs] * xHeight - else: - shift_down = SUBDROP[fs] * xHeight + lc_height = last_char.height + lc_baseline = 0 + if self.is_dropsub(last_char): + lc_baseline = last_char.depth if super is None: # node757 - x = Hlist([sub]) + if self.is_dropsub(last_char): + x = Hlist([Kern(-DELTA[fs] * last_char.height),sub]) + else: + x = Hlist([sub]) x.shrink() x.width += SCRIPT_SPACE[fs] * xHeight - shift_down = max(shift_down, SUB1[fs] * xHeight) - #clr = x.height - (abs(xHeight * 4.0) / 5.0) - #shift_down = max(shift_down, clr) - x.shift_amount = shift_down / 2. + shift_down = max(lc_baseline + SUBDROP[fs] * xHeight, + SUB1[fs] * xHeight) + if not self.is_dropsub(last_char): + shift_down /= 2 + x.shift_amount = shift_down else: + if self.is_dropsub(last_char): + delta = DELTAINTEGRAL[fs] + else: + delta = DELTA[fs] + if self.is_slanted(last_char): - x = Hlist([Kern(DELTA[fs] * super.height),super]) + x = Hlist([Kern(delta * last_char.height),super]) else: x = Hlist([super]) x.shrink() x.width += SCRIPT_SPACE[fs] * xHeight - shift_up = SUP1[fs] * xHeight + if self.is_dropsub(last_char): + shift_up = lc_height - SUBDROP[fs] * xHeight + else: + shift_up = SUP1[fs] * xHeight if sub is None: x.shift_amount = -shift_up else: # Both sub and superscript - y = Hlist([sub]) + if self.is_dropsub(last_char): + y = Hlist([Kern(-DELTA[fs] * last_char.height),sub]) + else: + y = Hlist([sub]) + #y = Hlist([sub]) y.shrink() y.width += SCRIPT_SPACE[fs] * xHeight - shift_down = max(shift_down, SUB2[fs] * xHeight) + if self.is_dropsub(last_char): + shift_down = lc_baseline + SUBDROP[fs] * xHeight + else: + shift_down = SUB2[fs] * xHeight # If sub and superscript collide, move sup up clr = (2.0 * rule_thickness - ((shift_up - x.depth) - (y.height - shift_down))) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index d6d0465d4e53..134615a528d0 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -100,6 +100,8 @@ r'$\dotplus$ $\doteq$ $\doteqdot$ $\ddots$', r'$x_kx^py^{p-2} d_i^jb_jc_kd x^j_i E^0 E^0_u$', # github issue #4873 r'${x}_{k}{x}^{p}{y}^{p-2} {d}_{i}^{j}{b}_{j}{c}_{k}{d} {x}^{j}_{i}{E}^{0}{E}^0_u$', + r'${\int}_x^x x\oint_x^x x\int_{X}^{X}x\int_x x \int^x x \int_{x} x\int^{x}{\int}_{x} x{\int}^{x}_{x}x$', + ] digits = "0123456789" From 2b050ecf1f4892c88a1c92ec6ffa5fcb92d7108d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Fri, 7 Aug 2015 13:19:58 +0100 Subject: [PATCH 07/14] add sub/superscript parameters for Arev Sans --- lib/matplotlib/mathtext.py | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 06113927c1b3..1a2a52a0cfab 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1189,34 +1189,41 @@ def get_underline_thickness(self, font, fontsize, dpi): # Percentage of x-height of additional horiz. space after sub/superscripts SCRIPT_SPACE = {'cm': 0.05, 'stix': 0.10, - 'stixsans': 0.10} + 'stixsans': 0.10, + 'arevsans': 0.10} ## Percentage of x-height that sub/superscripts drop below the baseline SUBDROP = {'cm': 0.3, 'stix': 0.4, - 'stixsans': 0.4} + 'stixsans': 0.4, + 'arevsans': 0.3} # Percentage of x-height that superscripts are raised from the baseline SUP1 = {'cm': 0.45, 'stix': 0.8, - 'stixsans': 0.8} + 'stixsans': 0.8, + 'arevsans': 0.7} # Percentage of x-height that subscripts drop below the baseline SUB1 = {'cm': 0.4, 'stix': 0.6, - 'stixsans': 0.6} + 'stixsans': 0.6, + 'arevsans': 0.6} # Percentage of x-height that subscripts drop below the baseline when a # superscript is present SUB2 = {'cm': 0.3, 'stix': 0.6, - 'stixsans': 0.5} + 'stixsans': 0.5, + 'arevsans': 0.8} # Percentage of x-height that supercripts are offset relative to the subscript # for slanted nuclei DELTA = {'cm': 0.10, 'stix': 0.15, - 'stixsans': 0.25} + 'stixsans': 0.25, + 'arevsans': 0.12} # Percentage of x-height that supercripts are offset relative to the subscript # for integrals DELTAINTEGRAL = {'cm': 0.5, 'stix': 0.5, - 'stixsans': 0.4} + 'stixsans': 0.4, + 'arevsans': 0.5} class MathTextWarning(Warning): pass @@ -2717,9 +2724,15 @@ def subsuper(self, s, loc, toks): state.font, state.fontsize, state.dpi) fs = rcParams['mathtext.fontset'] - # If a custom fontset is used, use CM parameters + # If a custom fontset is used, check if it is Arev Sans, otherwise use + # CM parameters. if fs == 'custom': - fs = 'cm' + if (rcParams['mathtext.rm'] == 'sans' and + rcParams['font.sans-serif'][0].lower() == 'Arev Sans'.lower()): + fs = 'arevsans' + else: + fs = 'cm' + if napostrophes: if super is None: From 4d7d3778149f3605426b294f501bd162e5d8d429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Sat, 8 Aug 2015 17:00:54 +0100 Subject: [PATCH 08/14] remove kerning between nucleus and sub or super --- lib/matplotlib/mathtext.py | 69 +++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 1a2a52a0cfab..1ae2f1fc180f 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,8 +1187,8 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = {'cm': 0.05, - 'stix': 0.10, +SCRIPT_SPACE = {'cm': 0.025, + 'stix': 0.20, 'stixsans': 0.10, 'arevsans': 0.10} ## Percentage of x-height that sub/superscripts drop below the baseline @@ -1212,12 +1212,18 @@ def get_underline_thickness(self, font, fontsize, dpi): 'stix': 0.6, 'stixsans': 0.5, 'arevsans': 0.8} -# Percentage of x-height that supercripts are offset relative to the subscript -# for slanted nuclei +# Percentage of x-height that sub/supercripts are offset relative to the +# nucleus end DELTA = {'cm': 0.10, - 'stix': 0.15, + 'stix': 0.10, 'stixsans': 0.25, 'arevsans': 0.12} +# Additional percentage of last character height that supercripts are offset +# relative to the subscript for slanted nuclei +DELTASLANTED = {'cm': 0.05, + 'stix': 0.05, + 'stixsans': 0.05, + 'arevsans': 0.12} # Percentage of x-height that supercripts are offset relative to the subscript # for integrals DELTAINTEGRAL = {'cm': 0.5, @@ -2714,8 +2720,16 @@ def subsuper(self, s, loc, toks): last_char = nucleus if isinstance(nucleus,Hlist): - if len(nucleus.children) >= 2: - last_char = nucleus.children[-2] + # remove kerns + new_children = [] + for child in nucleus.children: + if not isinstance(child, Kern): + new_children.append(child) + nucleus = Hlist(new_children, do_kern=False) + if len(new_children): + last_char = new_children[-1] + else: + nucleus = Hlist([nucleus],do_kern=False) state = self.get_state() rule_thickness = state.font_output.get_underline_thickness( @@ -2733,7 +2747,6 @@ def subsuper(self, s, loc, toks): else: fs = 'cm' - if napostrophes: if super is None: super = Hlist([]) @@ -2774,31 +2787,29 @@ def subsuper(self, s, loc, toks): lc_baseline = 0 if self.is_dropsub(last_char): lc_baseline = last_char.depth - if super is None: - # node757 + + # Compute kerning for sub and super + superkern = DELTA[fs] * xHeight + subkern = DELTA[fs] * xHeight + if self.is_slanted(last_char): + superkern += DELTASLANTED[fs] * xHeight if self.is_dropsub(last_char): - x = Hlist([Kern(-DELTA[fs] * last_char.height),sub]) + subkern = -DELTAINTEGRAL[fs] * lc_height else: - x = Hlist([sub]) + subkern = 0.25 * DELTA[fs] * lc_height + + if super is None: + # node757 + x = Hlist([Kern(subkern), sub]) x.shrink() - x.width += SCRIPT_SPACE[fs] * xHeight shift_down = max(lc_baseline + SUBDROP[fs] * xHeight, SUB1[fs] * xHeight) if not self.is_dropsub(last_char): shift_down /= 2 x.shift_amount = shift_down else: - if self.is_dropsub(last_char): - delta = DELTAINTEGRAL[fs] - else: - delta = DELTA[fs] - - if self.is_slanted(last_char): - x = Hlist([Kern(delta * last_char.height),super]) - else: - x = Hlist([super]) + x = Hlist([Kern(superkern), super]) x.shrink() - x.width += SCRIPT_SPACE[fs] * xHeight if self.is_dropsub(last_char): shift_up = lc_height - SUBDROP[fs] * xHeight else: @@ -2806,18 +2817,13 @@ def subsuper(self, s, loc, toks): if sub is None: x.shift_amount = -shift_up else: # Both sub and superscript - if self.is_dropsub(last_char): - y = Hlist([Kern(-DELTA[fs] * last_char.height),sub]) - else: - y = Hlist([sub]) - #y = Hlist([sub]) + y = Hlist([Kern(subkern),sub]) y.shrink() - y.width += SCRIPT_SPACE[fs] * xHeight if self.is_dropsub(last_char): shift_down = lc_baseline + SUBDROP[fs] * xHeight else: shift_down = SUB2[fs] * xHeight - # If sub and superscript collide, move sup up + # If sub and superscript collide, move super up clr = (2.0 * rule_thickness - ((shift_up - x.depth) - (y.height - shift_down))) if clr > 0.: @@ -2827,7 +2833,8 @@ def subsuper(self, s, loc, toks): y]) x.shift_amount = shift_down - result = Hlist([nucleus, x]) + x.width += SCRIPT_SPACE[fs] * xHeight + result = Hlist([nucleus, x], do_kern=False) return [result] def _genfrac(self, ldelim, rdelim, rule, style, num, den): From c56e56edfd880b9980a72a840da56dc4b958c9ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Sat, 8 Aug 2015 21:10:44 +0100 Subject: [PATCH 09/14] improve integral and slanted nuclei placement clean up, remove unnecesary do_kern=False fix overunder make cm clearer at small sizes --- lib/matplotlib/mathtext.py | 130 ++++++++++++++------------ lib/matplotlib/tests/test_mathtext.py | 5 +- 2 files changed, 74 insertions(+), 61 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 1ae2f1fc180f..a05ea70a92da 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -1187,49 +1187,49 @@ def get_underline_thickness(self, font, fontsize, dpi): # get any smaller NUM_SIZE_LEVELS = 6 # Percentage of x-height of additional horiz. space after sub/superscripts -SCRIPT_SPACE = {'cm': 0.025, - 'stix': 0.20, - 'stixsans': 0.10, - 'arevsans': 0.10} +SCRIPT_SPACE = {'cm': 0.075, + 'stix': 0.10, + 'stixsans': 0.05, + 'arevsans': 0.05} ## Percentage of x-height that sub/superscripts drop below the baseline -SUBDROP = {'cm': 0.3, +SUBDROP = {'cm': 0.2, 'stix': 0.4, 'stixsans': 0.4, - 'arevsans': 0.3} + 'arevsans': 0.4} # Percentage of x-height that superscripts are raised from the baseline SUP1 = {'cm': 0.45, 'stix': 0.8, 'stixsans': 0.8, 'arevsans': 0.7} # Percentage of x-height that subscripts drop below the baseline -SUB1 = {'cm': 0.4, - 'stix': 0.6, - 'stixsans': 0.6, - 'arevsans': 0.6} +SUB1 = {'cm': 0.2, + 'stix': 0.3, + 'stixsans': 0.3, + 'arevsans': 0.3} # Percentage of x-height that subscripts drop below the baseline when a # superscript is present SUB2 = {'cm': 0.3, 'stix': 0.6, 'stixsans': 0.5, - 'arevsans': 0.8} + 'arevsans': 0.5} # Percentage of x-height that sub/supercripts are offset relative to the -# nucleus end -DELTA = {'cm': 0.10, - 'stix': 0.10, - 'stixsans': 0.25, - 'arevsans': 0.12} -# Additional percentage of last character height that supercripts are offset -# relative to the subscript for slanted nuclei -DELTASLANTED = {'cm': 0.05, +# nucleus edge for non-slanted nuclei +DELTA = {'cm': 0.075, 'stix': 0.05, - 'stixsans': 0.05, - 'arevsans': 0.12} -# Percentage of x-height that supercripts are offset relative to the subscript -# for integrals -DELTAINTEGRAL = {'cm': 0.5, - 'stix': 0.5, - 'stixsans': 0.4, - 'arevsans': 0.5} + 'stixsans': 0.025, + 'arevsans': 0.025} +# Additional percentage of last character height above 2/3 of the x-height that +# supercripts are offset relative to the subscript for slanted nuclei +DELTASLANTED = {'cm': 0.3, + 'stix': 0.3, + 'stixsans': 0.6, + 'arevsans': 0.2} +# Percentage of x-height that supercripts and subscripts are offset for +# integrals +DELTAINTEGRAL = {'cm': 0.3, + 'stix': 0.3, + 'stixsans': 0.3, + 'arevsans': 0.3} class MathTextWarning(Warning): pass @@ -2718,35 +2718,12 @@ def subsuper(self, s, loc, toks): "Subscript/superscript sequence is too long. " "Use braces { } to remove ambiguity.") - last_char = nucleus - if isinstance(nucleus,Hlist): - # remove kerns - new_children = [] - for child in nucleus.children: - if not isinstance(child, Kern): - new_children.append(child) - nucleus = Hlist(new_children, do_kern=False) - if len(new_children): - last_char = new_children[-1] - else: - nucleus = Hlist([nucleus],do_kern=False) - state = self.get_state() rule_thickness = state.font_output.get_underline_thickness( state.font, state.fontsize, state.dpi) xHeight = state.font_output.get_xheight( state.font, state.fontsize, state.dpi) - fs = rcParams['mathtext.fontset'] - # If a custom fontset is used, check if it is Arev Sans, otherwise use - # CM parameters. - if fs == 'custom': - if (rcParams['mathtext.rm'] == 'sans' and - rcParams['font.sans-serif'][0].lower() == 'Arev Sans'.lower()): - fs = 'arevsans' - else: - fs = 'cm' - if napostrophes: if super is None: super = Hlist([]) @@ -2782,6 +2759,38 @@ def subsuper(self, s, loc, toks): result = Hlist([vlist]) return [result] + # We remove kerning for consistency (otherwise it will compute kerning + # based on non-shrinked characters and may put them very close together + # when superscripted) + # We change the width of the last character to match the advance to + # consider some fonts with weird metrics: e.g. stix's f has a width of + # 7.75 and a kerning of -4.0 for an advance of 3.72, and we want to put + # the superscript at the advance + last_char = nucleus + if isinstance(nucleus,Hlist): + new_children = nucleus.children + if len(new_children): + # remove last kern + if isinstance(new_children[-1],Kern): + new_children = new_children[:-1] + last_char = new_children[-1] + last_char.width = last_char._metrics.advance + # create new Hlist without kerning + nucleus = Hlist(new_children, do_kern=False) + else: + last_char.width = last_char._metrics.advance + nucleus = Hlist([nucleus]) + + fs = rcParams['mathtext.fontset'] + # If a custom fontset is used, check if it is Arev Sans, otherwise use + # CM parameters. + if fs == 'custom': + if (rcParams['mathtext.rm'] == 'sans' and + rcParams['font.sans-serif'][0].lower() == 'Arev Sans'.lower()): + fs = 'arevsans' + else: + fs = 'cm' + # Handle regular sub/superscripts lc_height = last_char.height lc_baseline = 0 @@ -2792,20 +2801,22 @@ def subsuper(self, s, loc, toks): superkern = DELTA[fs] * xHeight subkern = DELTA[fs] * xHeight if self.is_slanted(last_char): - superkern += DELTASLANTED[fs] * xHeight + superkern += DELTA[fs] * xHeight + superkern += DELTASLANTED[fs] * (lc_height - xHeight * 2. / 3.) if self.is_dropsub(last_char): - subkern = -DELTAINTEGRAL[fs] * lc_height + subkern = (3 * DELTA[fs] - DELTAINTEGRAL[fs]) * lc_height + superkern = (3 * DELTA[fs] + DELTAINTEGRAL[fs]) * lc_height else: - subkern = 0.25 * DELTA[fs] * lc_height + subkern = 0 if super is None: # node757 x = Hlist([Kern(subkern), sub]) x.shrink() - shift_down = max(lc_baseline + SUBDROP[fs] * xHeight, - SUB1[fs] * xHeight) - if not self.is_dropsub(last_char): - shift_down /= 2 + if self.is_dropsub(last_char): + shift_down = lc_baseline + SUBDROP[fs] * xHeight + else: + shift_down = SUB1[fs] * xHeight x.shift_amount = shift_down else: x = Hlist([Kern(superkern), super]) @@ -2833,8 +2844,9 @@ def subsuper(self, s, loc, toks): y]) x.shift_amount = shift_down - x.width += SCRIPT_SPACE[fs] * xHeight - result = Hlist([nucleus, x], do_kern=False) + if not self.is_dropsub(last_char): + x.width += SCRIPT_SPACE[fs] * xHeight + result = Hlist([nucleus, x]) return [result] def _genfrac(self, ldelim, rdelim, rule, style, num, den): diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index 134615a528d0..c0f645f1de7d 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -98,9 +98,10 @@ r'$M \, M \thinspace M \/ M \> M \: M \; M \ M \enspace M \quad M \qquad M \! M$', r'$\Cup$ $\Cap$ $\leftharpoonup$ $\barwedge$ $\rightharpoonup$', r'$\dotplus$ $\doteq$ $\doteqdot$ $\ddots$', - r'$x_kx^py^{p-2} d_i^jb_jc_kd x^j_i E^0 E^0_u$', # github issue #4873 - r'${x}_{k}{x}^{p}{y}^{p-2} {d}_{i}^{j}{b}_{j}{c}_{k}{d} {x}^{j}_{i}{E}^{0}{E}^0_u$', + r'$xyz^kx_kx^py^{p-2} d_i^jb_jc_kd x^j_i E^0 E^0_u$', # github issue #4873 + r'${xyz}^k{x}_{k}{x}^{p}{y}^{p-2} {d}_{i}^{j}{b}_{j}{c}_{k}{d} {x}^{j}_{i}{E}^{0}{E}^0_u$', r'${\int}_x^x x\oint_x^x x\int_{X}^{X}x\int_x x \int^x x \int_{x} x\int^{x}{\int}_{x} x{\int}^{x}_{x}x$', + r'$f^\prime f^2 f^a F^2', ] From 4d1c494066492091bac964adcfbcd83d89496078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Mon, 10 Aug 2015 11:07:05 +0100 Subject: [PATCH 10/14] remove redundant test --- lib/matplotlib/tests/test_mathtext.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index c0f645f1de7d..550f52bad8a6 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -101,7 +101,6 @@ r'$xyz^kx_kx^py^{p-2} d_i^jb_jc_kd x^j_i E^0 E^0_u$', # github issue #4873 r'${xyz}^k{x}_{k}{x}^{p}{y}^{p-2} {d}_{i}^{j}{b}_{j}{c}_{k}{d} {x}^{j}_{i}{E}^{0}{E}^0_u$', r'${\int}_x^x x\oint_x^x x\int_{X}^{X}x\int_x x \int^x x \int_{x} x\int^{x}{\int}_{x} x{\int}^{x}_{x}x$', - r'$f^\prime f^2 f^a F^2', ] From ccdeebaba4f45f7b8dcd6e96eec72d774cde12f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Mon, 24 Aug 2015 15:04:11 +0100 Subject: [PATCH 11/14] implement comments by mdboom --- lib/matplotlib/mathtext.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index a05ea70a92da..54a47996aad8 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2662,6 +2662,19 @@ def is_slanted(self, nucleus): return nucleus.is_slanted() return False + def _get_fontset_name(self): + fs = rcParams['mathtext.fontset'] + # If a custom fontset is used, check if it is Arev Sans, otherwise use + # CM parameters. + if fs == 'custom': + if (rcParams['mathtext.rm'] == 'sans' and + rcParams['font.sans-serif'][0].lower() == 'Arev Sans'.lower()): + fs = 'arevsans' + else: + fs = 'cm' + + return fs + def subsuper(self, s, loc, toks): assert(len(toks)==1) @@ -2759,15 +2772,15 @@ def subsuper(self, s, loc, toks): result = Hlist([vlist]) return [result] - # We remove kerning for consistency (otherwise it will compute kerning - # based on non-shrinked characters and may put them very close together - # when superscripted) + # We remove kerning on the last character for consistency (otherwise it + # will compute kerning based on non-shrinked characters and may put them + # too close together when superscripted) # We change the width of the last character to match the advance to # consider some fonts with weird metrics: e.g. stix's f has a width of # 7.75 and a kerning of -4.0 for an advance of 3.72, and we want to put # the superscript at the advance last_char = nucleus - if isinstance(nucleus,Hlist): + if isinstance(nucleus, Hlist): new_children = nucleus.children if len(new_children): # remove last kern @@ -2781,17 +2794,10 @@ def subsuper(self, s, loc, toks): last_char.width = last_char._metrics.advance nucleus = Hlist([nucleus]) - fs = rcParams['mathtext.fontset'] - # If a custom fontset is used, check if it is Arev Sans, otherwise use - # CM parameters. - if fs == 'custom': - if (rcParams['mathtext.rm'] == 'sans' and - rcParams['font.sans-serif'][0].lower() == 'Arev Sans'.lower()): - fs = 'arevsans' - else: - fs = 'cm' - # Handle regular sub/superscripts + + fs = self._get_fontset_name() + lc_height = last_char.height lc_baseline = 0 if self.is_dropsub(last_char): From 341d4814db07cab87cf9facc17ccc915b0e175f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Zabalza?= Date: Mon, 24 Aug 2015 15:06:19 +0100 Subject: [PATCH 12/14] add all baseline images with subsuper --- .../test_mathtext/mathtext_cm_02.pdf | Bin 8396 -> 8411 bytes .../test_mathtext/mathtext_cm_02.svg | 277 ++- .../test_mathtext/mathtext_cm_14.pdf | Bin 5814 -> 5828 bytes .../test_mathtext/mathtext_cm_14.png | Bin 938 -> 936 bytes .../test_mathtext/mathtext_cm_14.svg | 214 ++- .../test_mathtext/mathtext_cm_15.pdf | Bin 5812 -> 5828 bytes .../test_mathtext/mathtext_cm_15.png | Bin 940 -> 954 bytes .../test_mathtext/mathtext_cm_15.svg | 216 ++- .../test_mathtext/mathtext_cm_16.pdf | Bin 6536 -> 6554 bytes .../test_mathtext/mathtext_cm_16.png | Bin 1161 -> 1170 bytes .../test_mathtext/mathtext_cm_16.svg | 326 ++-- .../test_mathtext/mathtext_cm_17.pdf | Bin 6536 -> 6554 bytes .../test_mathtext/mathtext_cm_17.png | Bin 1161 -> 1170 bytes .../test_mathtext/mathtext_cm_17.svg | 326 ++-- .../test_mathtext/mathtext_cm_18.pdf | Bin 10920 -> 10938 bytes .../test_mathtext/mathtext_cm_18.png | Bin 1669 -> 1670 bytes .../test_mathtext/mathtext_cm_18.svg | 463 +++-- .../test_mathtext/mathtext_cm_20.pdf | Bin 13056 -> 13056 bytes .../test_mathtext/mathtext_cm_20.png | Bin 4127 -> 3983 bytes .../test_mathtext/mathtext_cm_20.svg | 1220 +++++++------- .../test_mathtext/mathtext_cm_21.pdf | Bin 17773 -> 17772 bytes .../test_mathtext/mathtext_cm_21.png | Bin 4634 -> 4643 bytes .../test_mathtext/mathtext_cm_21.svg | 1326 +++++++-------- .../test_mathtext/mathtext_cm_22.pdf | Bin 16902 -> 16922 bytes .../test_mathtext/mathtext_cm_22.png | Bin 4250 -> 4238 bytes .../test_mathtext/mathtext_cm_22.svg | 1361 ++++++++------- .../test_mathtext/mathtext_cm_24.pdf | Bin 5861 -> 5880 bytes .../test_mathtext/mathtext_cm_24.png | Bin 1072 -> 1076 bytes .../test_mathtext/mathtext_cm_24.svg | 211 ++- .../test_mathtext/mathtext_cm_25.pdf | Bin 6482 -> 6503 bytes .../test_mathtext/mathtext_cm_25.png | Bin 1265 -> 1282 bytes .../test_mathtext/mathtext_cm_25.svg | 295 ++-- .../test_mathtext/mathtext_cm_27.pdf | Bin 9133 -> 9155 bytes .../test_mathtext/mathtext_cm_27.png | Bin 2334 -> 2328 bytes .../test_mathtext/mathtext_cm_27.svg | 697 ++++---- .../test_mathtext/mathtext_cm_29.pdf | Bin 10697 -> 10712 bytes .../test_mathtext/mathtext_cm_29.svg | 708 ++++---- .../test_mathtext/mathtext_cm_30.pdf | Bin 8471 -> 8486 bytes .../test_mathtext/mathtext_cm_30.png | Bin 1700 -> 1695 bytes .../test_mathtext/mathtext_cm_30.svg | 330 ++-- .../test_mathtext/mathtext_cm_31.pdf | Bin 5438 -> 5456 bytes .../test_mathtext/mathtext_cm_31.png | Bin 795 -> 820 bytes .../test_mathtext/mathtext_cm_31.svg | 139 +- .../test_mathtext/mathtext_cm_32.pdf | Bin 7225 -> 7256 bytes .../test_mathtext/mathtext_cm_32.png | Bin 1184 -> 1187 bytes .../test_mathtext/mathtext_cm_32.svg | 441 +++-- .../test_mathtext/mathtext_cm_33.pdf | Bin 10146 -> 10166 bytes .../test_mathtext/mathtext_cm_33.png | Bin 2040 -> 2043 bytes .../test_mathtext/mathtext_cm_33.svg | 647 ++++--- .../test_mathtext/mathtext_cm_34.pdf | Bin 11681 -> 11699 bytes .../test_mathtext/mathtext_cm_34.png | Bin 2242 -> 2199 bytes .../test_mathtext/mathtext_cm_34.svg | 603 ++++--- .../test_mathtext/mathtext_cm_37.pdf | Bin 18524 -> 18556 bytes .../test_mathtext/mathtext_cm_37.png | Bin 6966 -> 6848 bytes .../test_mathtext/mathtext_cm_37.svg | 1486 ++++++++--------- .../test_mathtext/mathtext_cm_38.pdf | Bin 14978 -> 14987 bytes .../test_mathtext/mathtext_cm_38.png | Bin 3754 -> 3736 bytes .../test_mathtext/mathtext_cm_38.svg | 1034 ++++++------ .../test_mathtext/mathtext_cm_42.pdf | Bin 6540 -> 6559 bytes .../test_mathtext/mathtext_cm_42.png | Bin 1292 -> 1290 bytes .../test_mathtext/mathtext_cm_42.svg | 328 ++-- .../test_mathtext/mathtext_cm_43.pdf | Bin 6444 -> 6467 bytes .../test_mathtext/mathtext_cm_43.png | Bin 1158 -> 1175 bytes .../test_mathtext/mathtext_cm_43.svg | 318 ++-- .../test_mathtext/mathtext_cm_44.pdf | Bin 7909 -> 7929 bytes .../test_mathtext/mathtext_cm_44.png | Bin 1487 -> 1415 bytes .../test_mathtext/mathtext_cm_44.svg | 541 +++--- .../test_mathtext/mathtext_cm_45.pdf | Bin 7922 -> 7937 bytes .../test_mathtext/mathtext_cm_45.png | Bin 1599 -> 1655 bytes .../test_mathtext/mathtext_cm_45.svg | 541 +++--- .../test_mathtext/mathtext_cm_47.pdf | Bin 7964 -> 7982 bytes .../test_mathtext/mathtext_cm_47.png | Bin 2085 -> 2101 bytes .../test_mathtext/mathtext_cm_47.svg | 547 +++--- .../test_mathtext/mathtext_cm_48.pdf | Bin 7964 -> 7982 bytes .../test_mathtext/mathtext_cm_48.png | Bin 2085 -> 2101 bytes .../test_mathtext/mathtext_cm_48.svg | 547 +++--- .../test_mathtext/mathtext_cm_50.pdf | Bin 11934 -> 11955 bytes .../test_mathtext/mathtext_cm_50.png | Bin 2737 -> 2702 bytes .../test_mathtext/mathtext_cm_50.svg | 612 ++++--- .../test_mathtext/mathtext_cm_51.pdf | Bin 6531 -> 6548 bytes .../test_mathtext/mathtext_cm_51.png | Bin 1119 -> 1140 bytes .../test_mathtext/mathtext_cm_51.svg | 326 ++-- .../test_mathtext/mathtext_cm_52.pdf | Bin 12305 -> 12329 bytes .../test_mathtext/mathtext_cm_52.png | Bin 3485 -> 3493 bytes .../test_mathtext/mathtext_cm_52.svg | 932 +++++------ .../test_mathtext/mathtext_cm_54.pdf | Bin 16598 -> 16632 bytes .../test_mathtext/mathtext_cm_54.png | Bin 4208 -> 4173 bytes .../test_mathtext/mathtext_cm_54.svg | 994 ++++++----- .../test_mathtext/mathtext_cm_55.pdf | Bin 5832 -> 5864 bytes .../test_mathtext/mathtext_cm_55.png | Bin 1092 -> 1091 bytes .../test_mathtext/mathtext_cm_55.svg | 220 ++- .../test_mathtext/mathtext_cm_56.pdf | Bin 9389 -> 9413 bytes .../test_mathtext/mathtext_cm_56.png | Bin 1633 -> 1731 bytes .../test_mathtext/mathtext_cm_56.svg | 495 +++--- .../test_mathtext/mathtext_cm_57.pdf | Bin 9019 -> 9039 bytes .../test_mathtext/mathtext_cm_57.png | Bin 2107 -> 2121 bytes .../test_mathtext/mathtext_cm_57.svg | 451 +++-- .../test_mathtext/mathtext_cm_58.pdf | Bin 6539 -> 6552 bytes .../test_mathtext/mathtext_cm_58.png | Bin 1092 -> 1085 bytes .../test_mathtext/mathtext_cm_58.svg | 324 ++-- .../test_mathtext/mathtext_cm_59.pdf | Bin 6538 -> 6556 bytes .../test_mathtext/mathtext_cm_59.png | Bin 1085 -> 1074 bytes .../test_mathtext/mathtext_cm_59.svg | 324 ++-- .../test_mathtext/mathtext_cm_60.pdf | Bin 9238 -> 9261 bytes .../test_mathtext/mathtext_cm_60.png | Bin 2083 -> 2065 bytes .../test_mathtext/mathtext_cm_60.svg | 738 ++++---- .../test_mathtext/mathtext_cm_61.pdf | Bin 7200 -> 7228 bytes .../test_mathtext/mathtext_cm_61.png | Bin 1481 -> 1441 bytes .../test_mathtext/mathtext_cm_61.svg | 678 ++++---- .../test_mathtext/mathtext_cm_62.pdf | Bin 7912 -> 7929 bytes .../test_mathtext/mathtext_cm_62.png | Bin 1126 -> 1125 bytes .../test_mathtext/mathtext_cm_62.svg | 268 ++- .../test_mathtext/mathtext_cm_67.pdf | Bin 13765 -> 13695 bytes .../test_mathtext/mathtext_cm_67.svg | 846 +++++----- .../test_mathtext/mathtext_cm_73.pdf | Bin 0 -> 15145 bytes .../test_mathtext/mathtext_cm_73.png | Bin 0 -> 3881 bytes .../test_mathtext/mathtext_cm_73.svg | 726 ++++++++ .../test_mathtext/mathtext_cm_74.pdf | Bin 0 -> 15145 bytes .../test_mathtext/mathtext_cm_74.png | Bin 0 -> 3881 bytes .../test_mathtext/mathtext_cm_74.svg | 726 ++++++++ .../test_mathtext/mathtext_cm_75.pdf | Bin 0 -> 8166 bytes .../test_mathtext/mathtext_cm_75.png | Bin 0 -> 3241 bytes .../test_mathtext/mathtext_cm_75.svg | 316 ++++ .../test_mathtext/mathtext_stix_02.pdf | Bin 8359 -> 8375 bytes .../test_mathtext/mathtext_stix_02.svg | 240 ++- .../test_mathtext/mathtext_stix_14.pdf | Bin 5515 -> 5531 bytes .../test_mathtext/mathtext_stix_14.svg | 150 +- .../test_mathtext/mathtext_stix_15.pdf | Bin 5515 -> 5529 bytes .../test_mathtext/mathtext_stix_15.png | Bin 876 -> 882 bytes .../test_mathtext/mathtext_stix_15.svg | 152 +- .../test_mathtext/mathtext_stix_16.pdf | Bin 6027 -> 6043 bytes .../test_mathtext/mathtext_stix_16.png | Bin 1050 -> 1064 bytes .../test_mathtext/mathtext_stix_16.svg | 224 ++- .../test_mathtext/mathtext_stix_17.pdf | Bin 6027 -> 6043 bytes .../test_mathtext/mathtext_stix_17.png | Bin 1050 -> 1064 bytes .../test_mathtext/mathtext_stix_17.svg | 224 ++- .../test_mathtext/mathtext_stix_18.pdf | Bin 7333 -> 7349 bytes .../test_mathtext/mathtext_stix_18.svg | 369 ++-- .../test_mathtext/mathtext_stix_20.pdf | Bin 11250 -> 11248 bytes .../test_mathtext/mathtext_stix_20.png | Bin 3905 -> 3896 bytes .../test_mathtext/mathtext_stix_20.svg | 864 +++++----- .../test_mathtext/mathtext_stix_21.pdf | Bin 14359 -> 14371 bytes .../test_mathtext/mathtext_stix_21.png | Bin 4382 -> 4423 bytes .../test_mathtext/mathtext_stix_21.svg | 992 +++++------ .../test_mathtext/mathtext_stix_22.pdf | Bin 13943 -> 13965 bytes .../test_mathtext/mathtext_stix_22.png | Bin 3933 -> 3932 bytes .../test_mathtext/mathtext_stix_22.svg | 1067 ++++++------ .../test_mathtext/mathtext_stix_24.pdf | Bin 5728 -> 5743 bytes .../test_mathtext/mathtext_stix_24.png | Bin 1052 -> 1052 bytes .../test_mathtext/mathtext_stix_24.svg | 150 +- .../test_mathtext/mathtext_stix_25.pdf | Bin 6209 -> 6228 bytes .../test_mathtext/mathtext_stix_25.png | Bin 1261 -> 1257 bytes .../test_mathtext/mathtext_stix_25.svg | 216 ++- .../test_mathtext/mathtext_stix_27.pdf | Bin 8203 -> 8223 bytes .../test_mathtext/mathtext_stix_27.png | Bin 2163 -> 2164 bytes .../test_mathtext/mathtext_stix_27.svg | 510 +++--- .../test_mathtext/mathtext_stix_29.pdf | Bin 8686 -> 8703 bytes .../test_mathtext/mathtext_stix_29.svg | 618 ++++--- .../test_mathtext/mathtext_stix_30.pdf | Bin 4791 -> 4808 bytes .../test_mathtext/mathtext_stix_30.png | Bin 1365 -> 1363 bytes .../test_mathtext/mathtext_stix_30.svg | 262 ++- .../test_mathtext/mathtext_stix_31.pdf | Bin 5393 -> 5409 bytes .../test_mathtext/mathtext_stix_31.png | Bin 830 -> 812 bytes .../test_mathtext/mathtext_stix_31.svg | 99 +- .../test_mathtext/mathtext_stix_32.pdf | Bin 6612 -> 6633 bytes .../test_mathtext/mathtext_stix_32.png | Bin 1230 -> 1251 bytes .../test_mathtext/mathtext_stix_32.svg | 313 ++-- .../test_mathtext/mathtext_stix_33.pdf | Bin 8939 -> 8957 bytes .../test_mathtext/mathtext_stix_33.png | Bin 1995 -> 1995 bytes .../test_mathtext/mathtext_stix_33.svg | 396 +++-- .../test_mathtext/mathtext_stix_34.pdf | Bin 9698 -> 9720 bytes .../test_mathtext/mathtext_stix_34.png | Bin 2075 -> 2110 bytes .../test_mathtext/mathtext_stix_34.svg | 482 +++--- .../test_mathtext/mathtext_stix_37.pdf | Bin 15591 -> 15578 bytes .../test_mathtext/mathtext_stix_37.png | Bin 6538 -> 6500 bytes .../test_mathtext/mathtext_stix_37.svg | 1132 ++++++------- .../test_mathtext/mathtext_stix_38.pdf | Bin 13413 -> 13408 bytes .../test_mathtext/mathtext_stix_38.png | Bin 3556 -> 3455 bytes .../test_mathtext/mathtext_stix_38.svg | 694 ++++---- .../test_mathtext/mathtext_stix_42.pdf | Bin 6028 -> 6043 bytes .../test_mathtext/mathtext_stix_42.png | Bin 1137 -> 1145 bytes .../test_mathtext/mathtext_stix_42.svg | 226 ++- .../test_mathtext/mathtext_stix_43.pdf | Bin 5877 -> 5899 bytes .../test_mathtext/mathtext_stix_43.png | Bin 1128 -> 1131 bytes .../test_mathtext/mathtext_stix_43.svg | 197 ++- .../test_mathtext/mathtext_stix_44.pdf | Bin 6935 -> 6949 bytes .../test_mathtext/mathtext_stix_44.png | Bin 1391 -> 1380 bytes .../test_mathtext/mathtext_stix_44.svg | 368 ++-- .../test_mathtext/mathtext_stix_45.pdf | Bin 6952 -> 6970 bytes .../test_mathtext/mathtext_stix_45.png | Bin 1516 -> 1533 bytes .../test_mathtext/mathtext_stix_45.svg | 368 ++-- .../test_mathtext/mathtext_stix_47.pdf | Bin 7232 -> 7245 bytes .../test_mathtext/mathtext_stix_47.png | Bin 2139 -> 2140 bytes .../test_mathtext/mathtext_stix_47.svg | 399 +++-- .../test_mathtext/mathtext_stix_48.pdf | Bin 7232 -> 7245 bytes .../test_mathtext/mathtext_stix_48.png | Bin 2139 -> 2140 bytes .../test_mathtext/mathtext_stix_48.svg | 399 +++-- .../test_mathtext/mathtext_stix_50.pdf | Bin 9460 -> 9484 bytes .../test_mathtext/mathtext_stix_50.png | Bin 2500 -> 2580 bytes .../test_mathtext/mathtext_stix_50.svg | 436 +++-- .../test_mathtext/mathtext_stix_51.pdf | Bin 6030 -> 6044 bytes .../test_mathtext/mathtext_stix_51.png | Bin 1039 -> 1021 bytes .../test_mathtext/mathtext_stix_51.svg | 224 ++- .../test_mathtext/mathtext_stix_52.pdf | Bin 9317 -> 9350 bytes .../test_mathtext/mathtext_stix_52.png | Bin 3120 -> 3108 bytes .../test_mathtext/mathtext_stix_52.svg | 681 ++++---- .../test_mathtext/mathtext_stix_54.pdf | Bin 13181 -> 13198 bytes .../test_mathtext/mathtext_stix_54.png | Bin 4022 -> 3959 bytes .../test_mathtext/mathtext_stix_54.svg | 660 ++++---- .../test_mathtext/mathtext_stix_55.pdf | Bin 5547 -> 5562 bytes .../test_mathtext/mathtext_stix_55.png | Bin 1087 -> 1069 bytes .../test_mathtext/mathtext_stix_55.svg | 156 +- .../test_mathtext/mathtext_stix_56.pdf | Bin 7123 -> 7145 bytes .../test_mathtext/mathtext_stix_56.png | Bin 1322 -> 1383 bytes .../test_mathtext/mathtext_stix_56.svg | 373 ++--- .../test_mathtext/mathtext_stix_57.pdf | Bin 6889 -> 6901 bytes .../test_mathtext/mathtext_stix_57.png | Bin 1802 -> 1807 bytes .../test_mathtext/mathtext_stix_57.svg | 349 ++-- .../test_mathtext/mathtext_stix_58.pdf | Bin 6038 -> 6048 bytes .../test_mathtext/mathtext_stix_58.png | Bin 958 -> 973 bytes .../test_mathtext/mathtext_stix_58.svg | 224 ++- .../test_mathtext/mathtext_stix_59.pdf | Bin 6035 -> 6053 bytes .../test_mathtext/mathtext_stix_59.svg | 222 ++- .../test_mathtext/mathtext_stix_60.pdf | Bin 8025 -> 8037 bytes .../test_mathtext/mathtext_stix_60.png | Bin 2013 -> 1975 bytes .../test_mathtext/mathtext_stix_60.svg | 490 +++--- .../test_mathtext/mathtext_stix_61.pdf | Bin 6192 -> 6214 bytes .../test_mathtext/mathtext_stix_61.png | Bin 1388 -> 1404 bytes .../test_mathtext/mathtext_stix_61.svg | 498 +++--- .../test_mathtext/mathtext_stix_62.pdf | Bin 5922 -> 5941 bytes .../test_mathtext/mathtext_stix_62.png | Bin 983 -> 981 bytes .../test_mathtext/mathtext_stix_62.svg | 168 +- .../test_mathtext/mathtext_stix_67.pdf | Bin 10689 -> 10707 bytes .../test_mathtext/mathtext_stix_67.svg | 568 ++++--- .../test_mathtext/mathtext_stix_73.pdf | Bin 0 -> 11131 bytes .../test_mathtext/mathtext_stix_73.png | Bin 0 -> 3790 bytes .../test_mathtext/mathtext_stix_73.svg | 507 ++++++ .../test_mathtext/mathtext_stix_74.pdf | Bin 0 -> 11131 bytes .../test_mathtext/mathtext_stix_74.png | Bin 0 -> 3790 bytes .../test_mathtext/mathtext_stix_74.svg | 507 ++++++ .../test_mathtext/mathtext_stix_75.pdf | Bin 0 -> 7132 bytes .../test_mathtext/mathtext_stix_75.png | Bin 0 -> 2461 bytes .../test_mathtext/mathtext_stix_75.svg | 230 +++ .../test_mathtext/mathtext_stixsans_02.pdf | Bin 8317 -> 8333 bytes .../test_mathtext/mathtext_stixsans_02.svg | 230 ++- .../test_mathtext/mathtext_stixsans_14.pdf | Bin 5308 -> 5324 bytes .../test_mathtext/mathtext_stixsans_14.svg | 89 +- .../test_mathtext/mathtext_stixsans_15.pdf | Bin 5310 -> 5323 bytes .../test_mathtext/mathtext_stixsans_15.png | Bin 876 -> 873 bytes .../test_mathtext/mathtext_stixsans_15.svg | 91 +- .../test_mathtext/mathtext_stixsans_16.pdf | Bin 5697 -> 5712 bytes .../test_mathtext/mathtext_stixsans_16.png | Bin 1069 -> 1059 bytes .../test_mathtext/mathtext_stixsans_16.svg | 128 +- .../test_mathtext/mathtext_stixsans_17.pdf | Bin 5697 -> 5712 bytes .../test_mathtext/mathtext_stixsans_17.png | Bin 1069 -> 1059 bytes .../test_mathtext/mathtext_stixsans_17.svg | 128 +- .../test_mathtext/mathtext_stixsans_18.pdf | Bin 8876 -> 8893 bytes .../test_mathtext/mathtext_stixsans_18.svg | 317 ++-- .../test_mathtext/mathtext_stixsans_20.pdf | Bin 12105 -> 12107 bytes .../test_mathtext/mathtext_stixsans_20.png | Bin 3796 -> 3810 bytes .../test_mathtext/mathtext_stixsans_20.svg | 626 +++---- .../test_mathtext/mathtext_stixsans_21.pdf | Bin 15704 -> 15701 bytes .../test_mathtext/mathtext_stixsans_21.png | Bin 4240 -> 4366 bytes .../test_mathtext/mathtext_stixsans_21.svg | 760 ++++----- .../test_mathtext/mathtext_stixsans_22.pdf | Bin 13333 -> 13350 bytes .../test_mathtext/mathtext_stixsans_22.png | Bin 3813 -> 3824 bytes .../test_mathtext/mathtext_stixsans_22.svg | 833 +++++---- .../test_mathtext/mathtext_stixsans_24.pdf | Bin 5496 -> 5508 bytes .../test_mathtext/mathtext_stixsans_24.png | Bin 988 -> 1010 bytes .../test_mathtext/mathtext_stixsans_24.svg | 93 +- .../test_mathtext/mathtext_stixsans_25.pdf | Bin 7681 -> 7692 bytes .../test_mathtext/mathtext_stixsans_25.png | Bin 1182 -> 1215 bytes .../test_mathtext/mathtext_stixsans_25.svg | 141 +- .../test_mathtext/mathtext_stixsans_27.pdf | Bin 7833 -> 7844 bytes .../test_mathtext/mathtext_stixsans_27.png | Bin 2194 -> 2161 bytes .../test_mathtext/mathtext_stixsans_27.svg | 346 ++-- .../test_mathtext/mathtext_stixsans_29.pdf | Bin 8072 -> 8089 bytes .../test_mathtext/mathtext_stixsans_29.svg | 400 +++-- .../test_mathtext/mathtext_stixsans_30.pdf | Bin 4865 -> 4882 bytes .../test_mathtext/mathtext_stixsans_30.png | Bin 1374 -> 1379 bytes .../test_mathtext/mathtext_stixsans_30.svg | 266 ++- .../test_mathtext/mathtext_stixsans_31.pdf | Bin 5294 -> 5310 bytes .../test_mathtext/mathtext_stixsans_31.png | Bin 759 -> 729 bytes .../test_mathtext/mathtext_stixsans_31.svg | 78 +- .../test_mathtext/mathtext_stixsans_32.pdf | Bin 6306 -> 6322 bytes .../test_mathtext/mathtext_stixsans_32.png | Bin 1152 -> 1150 bytes .../test_mathtext/mathtext_stixsans_32.svg | 211 ++- .../test_mathtext/mathtext_stixsans_33.pdf | Bin 8735 -> 8754 bytes .../test_mathtext/mathtext_stixsans_33.png | Bin 2012 -> 2012 bytes .../test_mathtext/mathtext_stixsans_33.svg | 284 ++-- .../test_mathtext/mathtext_stixsans_34.pdf | Bin 11067 -> 11080 bytes .../test_mathtext/mathtext_stixsans_34.png | Bin 2079 -> 2099 bytes .../test_mathtext/mathtext_stixsans_34.svg | 395 +++-- .../test_mathtext/mathtext_stixsans_37.pdf | Bin 16853 -> 16827 bytes .../test_mathtext/mathtext_stixsans_37.png | Bin 6739 -> 6671 bytes .../test_mathtext/mathtext_stixsans_37.svg | 974 +++++------ .../test_mathtext/mathtext_stixsans_38.pdf | Bin 12868 -> 12856 bytes .../test_mathtext/mathtext_stixsans_38.png | Bin 3371 -> 3282 bytes .../test_mathtext/mathtext_stixsans_38.svg | 548 +++--- .../test_mathtext/mathtext_stixsans_42.pdf | Bin 5708 -> 5721 bytes .../test_mathtext/mathtext_stixsans_42.png | Bin 1146 -> 1142 bytes .../test_mathtext/mathtext_stixsans_42.svg | 130 +- .../test_mathtext/mathtext_stixsans_43.pdf | Bin 5795 -> 5814 bytes .../test_mathtext/mathtext_stixsans_43.png | Bin 1066 -> 1070 bytes .../test_mathtext/mathtext_stixsans_43.svg | 145 +- .../test_mathtext/mathtext_stixsans_44.pdf | Bin 6520 -> 6533 bytes .../test_mathtext/mathtext_stixsans_44.png | Bin 1363 -> 1379 bytes .../test_mathtext/mathtext_stixsans_44.svg | 220 ++- .../test_mathtext/mathtext_stixsans_45.pdf | Bin 6521 -> 6539 bytes .../test_mathtext/mathtext_stixsans_45.png | Bin 1495 -> 1502 bytes .../test_mathtext/mathtext_stixsans_45.svg | 220 ++- .../test_mathtext/mathtext_stixsans_47.pdf | Bin 7517 -> 7536 bytes .../test_mathtext/mathtext_stixsans_47.png | Bin 2037 -> 2041 bytes .../test_mathtext/mathtext_stixsans_47.svg | 373 ++--- .../test_mathtext/mathtext_stixsans_48.pdf | Bin 7517 -> 7536 bytes .../test_mathtext/mathtext_stixsans_48.png | Bin 2037 -> 2041 bytes .../test_mathtext/mathtext_stixsans_48.svg | 373 ++--- .../test_mathtext/mathtext_stixsans_50.pdf | Bin 9049 -> 9062 bytes .../test_mathtext/mathtext_stixsans_50.png | Bin 2545 -> 2565 bytes .../test_mathtext/mathtext_stixsans_50.svg | 299 ++-- .../test_mathtext/mathtext_stixsans_51.pdf | Bin 5696 -> 5711 bytes .../test_mathtext/mathtext_stixsans_51.png | Bin 1036 -> 1063 bytes .../test_mathtext/mathtext_stixsans_51.svg | 128 +- .../test_mathtext/mathtext_stixsans_52.pdf | Bin 8922 -> 8943 bytes .../test_mathtext/mathtext_stixsans_52.png | Bin 3087 -> 3048 bytes .../test_mathtext/mathtext_stixsans_52.svg | 474 +++--- .../test_mathtext/mathtext_stixsans_54.pdf | Bin 14453 -> 14472 bytes .../test_mathtext/mathtext_stixsans_54.png | Bin 3990 -> 3983 bytes .../test_mathtext/mathtext_stixsans_54.svg | 530 +++--- .../test_mathtext/mathtext_stixsans_55.pdf | Bin 5354 -> 5358 bytes .../test_mathtext/mathtext_stixsans_55.png | Bin 1106 -> 1100 bytes .../test_mathtext/mathtext_stixsans_55.svg | 95 +- .../test_mathtext/mathtext_stixsans_56.pdf | Bin 6892 -> 6915 bytes .../test_mathtext/mathtext_stixsans_56.png | Bin 1334 -> 1386 bytes .../test_mathtext/mathtext_stixsans_56.svg | 284 ++-- .../test_mathtext/mathtext_stixsans_57.pdf | Bin 6619 -> 6632 bytes .../test_mathtext/mathtext_stixsans_57.png | Bin 1772 -> 1801 bytes .../test_mathtext/mathtext_stixsans_57.svg | 233 ++- .../test_mathtext/mathtext_stixsans_58.pdf | Bin 5706 -> 5720 bytes .../test_mathtext/mathtext_stixsans_58.png | Bin 986 -> 981 bytes .../test_mathtext/mathtext_stixsans_58.svg | 126 +- .../test_mathtext/mathtext_stixsans_59.pdf | Bin 5705 -> 5720 bytes .../test_mathtext/mathtext_stixsans_59.svg | 126 +- .../test_mathtext/mathtext_stixsans_60.pdf | Bin 9615 -> 9645 bytes .../test_mathtext/mathtext_stixsans_60.png | Bin 2064 -> 2064 bytes .../test_mathtext/mathtext_stixsans_60.svg | 384 +++-- .../test_mathtext/mathtext_stixsans_61.pdf | Bin 5555 -> 5598 bytes .../test_mathtext/mathtext_stixsans_61.png | Bin 1365 -> 1340 bytes .../test_mathtext/mathtext_stixsans_61.svg | 291 ++-- .../test_mathtext/mathtext_stixsans_62.pdf | Bin 5825 -> 5850 bytes .../test_mathtext/mathtext_stixsans_62.png | Bin 1031 -> 1041 bytes .../test_mathtext/mathtext_stixsans_62.svg | 137 +- .../test_mathtext/mathtext_stixsans_67.pdf | Bin 10271 -> 10289 bytes .../test_mathtext/mathtext_stixsans_67.svg | 421 +++-- .../test_mathtext/mathtext_stixsans_73.pdf | Bin 0 -> 10068 bytes .../test_mathtext/mathtext_stixsans_73.png | Bin 0 -> 3531 bytes .../test_mathtext/mathtext_stixsans_73.svg | 325 ++++ .../test_mathtext/mathtext_stixsans_74.pdf | Bin 0 -> 10068 bytes .../test_mathtext/mathtext_stixsans_74.png | Bin 0 -> 3531 bytes .../test_mathtext/mathtext_stixsans_74.svg | 325 ++++ .../test_mathtext/mathtext_stixsans_75.pdf | Bin 0 -> 6781 bytes .../test_mathtext/mathtext_stixsans_75.png | Bin 0 -> 2355 bytes .../test_mathtext/mathtext_stixsans_75.svg | 172 ++ 363 files changed, 28754 insertions(+), 25517 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_73.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_73.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_73.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_74.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_74.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_74.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_75.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_75.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_75.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_73.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_73.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_73.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_74.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_74.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_74.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_75.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_75.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_75.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_73.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_73.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_73.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_74.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_74.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_74.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_75.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_75.png create mode 100644 lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_75.svg diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.pdf index 24f07419d9e5464a5bc492e4a33c10565b2648ef..a772b831d81938cc77dae3235804bf28f775eab0 100644 GIT binary patch delta 2239 zcma)8TWl0n7fi5iw3GguN9@?qfnRRvw zg$EZDZew%ImyGB^tMSA|R+qPV!oUhe+R=-R znRd&v-89;cb|SgQvBy#f3dnG?Q2?2b2Z-_pmN1PD zdmQ$`@Kf|K(p0f!C)8yY6o}+&53sa7=ER|0(a!+l8v_d@Nsfs+E~1OmrnJ!?0uJ9e@@B#ar4IO=d-`I92rwS zIIT^;ZC^V5skuD(?DNt7>k|)gAxzqJm@!(Ah!E&WXhd{8vlil0Rjt`A3l9g%hz|FA z%Sc!(@jn+}elr;4zf~>aQ_^$*=T;8}Q~ZUB=KHpq33oV+NQo?S)K>SpF^Abt!HXSbqgC>w0bL=?muJK@XGeo^t z*|4QMX$+;2LWTKKz04dM2KOiszs-BlR2|9f>9|lTLL&ti2vAX$jyq<`wH-hMWsb1&$TNU+|Jk4MtQ8ZB73OzYWX11 zJZ6PC6LvBQ-IJX4k-VQdHX@$CQp_>!1R|d8ZHpl)90`L3W{xvN^1f?p~2Z!Fw!ia)j2w95-g->$rK48 z6$wGTsoiLdis8>E%+5X)(7fT7Z>tjqQVTk%sxqUKu7QC0BSnB&{jWkHS-dZ)&$}v@ z!A^rN8+{mI3Ff~bq1bd*LX2^dgp_0t%)3!muIZud$o!Rox?FDs@J2E5+i+>2T0 ztNtg&qCP+0(Aro`tO8RtLo8^Q-FDBGip2yG&mY|iqIm<$-4s!Uf7W=0Uv855%T3Mv z(WZvG!c--yMyb9ElU9sd@0a*=Q*?J2%q%WsAt`r*bp>4FTZ;e-;wp+$#l*~A1Dw9K z5azEfT~QWR`IV(BGH^c3iJ%Jh?M`t7tX;Z0(fzrK5`rl%jl&_;SA*a%Fa=kps0BhX z93Q30ghuj##c`VM1E{LHuZT*+KF~@eToRWNIPSQ^ Pc1wVPN-Zs2{oT?()K7p; delta 2227 zcmai0T})e598U|Q+YKEM`Eq=CHlS=qa?d&UtDU3@l(HcMEIQCdmrHvocb49Idr@3S z8uZC!Gm!Hz6J5;InPtug)+{sGigiT0pUVXnJ%W zjoB1nN&ChCAJSgXqgrI3cj@kZ&AGO64#6Pn%hYI?-5A;LY9d3frb-$|b5VO51jzHQ zq0I8$k6~r##mpz(N)4PNeto?C+xrhaTz0v?uI2TO@%gso#imL)5x?-($l*^PJ=>Mjt0x}0dFkfV#LrjvJ>*_Lx7PhdaP_J8249}P zc^OrJ=0gcnps~<4}bIF^;^-u&(8ib zm)!9EHTY)z4~st?`J?=H?I32DrY%!bXExDAhyuglMY2K`+$j65_pXbqRJ41C)fq<4 z%#4m8M?UhjA;9;lY0ZW(ZwLIi9<!#?0NLPh{MhWIWs}M<6v%I$+J+pOxu~#irmend z)dY~NRRL06-7NrqNX;9uByk1ek&thVkrdL>QAR=+MiL<3R~^V$+RSn4z=soRJPicQ z@e@ZhJw9y#QKU%=Wm%}Hr!2#y&Xlv_!2o|uowH{E2tvrwWlZI>C{PCcQM#IXv?m!) zXslLGt_k+4vZzs%S{_(WAY+_u1T<{zi#xCTMh)kGaTQajFP(QM)E*I2i$=s zyopAsh=c%XZ|tPa-%C9d_y1Q0GRC(g+7b` z$|DlS0Ey(Q=4GH8$q>8H4~7n7h$M)xf<!1le-{)xA?zgATiU4(7Fr~#19xj^N~W;0 z4@d&eK0rla6}H>_^v>F5qj{Y+wh7z)M2TE&^|=*HzHIenki!GXvLibZWx8>tnGjMO zeprEyZlNqVYKS7t#b$~|6_KAZURp%(J4cX2$|{q_mgDN{ZxYM#0YEBuR{wbi>jp64TyhLd#V3gl5|RAdV)d3?Srh lfrw#PAb%dyPiyp7gso=UQcY{l)TTH^RurzIqkkmK{R?U_aMAz( diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.svg index f82f1d61e3ae..a2d5d97ac3f4 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_02.svg @@ -5,161 +5,156 @@ - - - - - + - - + +" id="BitstreamVeraSans-Roman-31"/> + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.pdf index 39ba0b17d20ac762ce3493c9ee43a0a1579a2d81..7fb55058582227bfdafb2232213d6677bc45df57 100644 GIT binary patch delta 1560 zcma)6UuauZ7&j@gdb_mKW=x^3$7XG+Gv0Im<&W(OX_M56+d?wjR2-b%o+P(4_r`lq zHQP&G1_L|Aa!OI`9(|a91|y&-B5rJg`dAQ$Q^DsU>_G(;@jFRM(`2GI54ra{-=E+2 z`+n#9D0)5m<_OM_67`UZFv=tO#F;8Z@*H7g*(sr!8Hw79&cc$EfMfALJ&o3ulysp? z7A?DkVj@bCGc`6}V1!Ymx6+(CzOY11hT^TytYb5zwcc}tG3wgLSi3q>PuaG^JoF-Z z3CZ)Wvr z$@gBry{u{Po++`uWYvY~<^)^S?jv?pI~^t?b3= z(R)jJ`H$7Xo9FCL?a1lZZlz~7(&L8(^&WF6sca8HQ2@1=f}$mO!LKx49{9}1qk-_` zNo$dnJ*4cKVv}|GS>my|GI5b=7!v9b z@)rV=^{nN#qcN}vS#qvpLLEcUC&|Z1MX06XD!4-{ikNg;EOK_4lsu%V;6|!XQ>#=4 zRp1zsPqjaELql@PGsOg&2Q3K-9O+5wnXXl3jw{JWK$4c3vP;Vp(#zs}r#!zId~^c( zVzlxc!V-w3l`yI*Q0geDH3>orR^z@zwoCDnRf73u@uZxgAbMen=QSAEdzMi0VsO@ zA7qJIi2o26y*pnbX9r&x^T5zX<6{45f1eSLHU7T;aUYKi2YodjA0FG&zE@clDLSXa zS2zjDJRS=3q0s&Z6RNK0hN|I1Scza9c}(JKp>z>$Cl(K~k<@&_deQ)8ciWP%OLp4~ zEQHr>(_jg8+l)A$+Be}(=-k{lQBT4!cY7#Cq9+qvDrl$6Pr*IN)EKC_%MZtto*G&r z4i^EQdPl2TEZzfG1JCY+dQ#~DqsC%Au?C>tiDfRamZ>YYv|O;xQlx@f^0MPFBvuFP g_ak=EL27GF!0PlEaaql!MafVTNojmMb37~k0|eQ@AOHXW delta 1495 zcmb7^UuaWT9LKq-RX8NEtaTGw^=SWCSHeB#-rReWwN_)()M{;QGPE$+cAK6ix1_oC z-lNMlG*5ys*{o;Cd=jJ&4)&l%e5#;QaIiAE^=S`dgAJw+J_sF*`Lc6vTAM!%wh+j@ zzx@7vKfm8OOQ8p$t8Jt2emqB@JYZ5YXJ?>%(##MSDiFaW?C%F8KV?tOfCzsVzkPjB zo*0{)A!!N?&xZ$4N}N2@#4DH|!Civ|I+UU&B{1ySaR1)AN-uY^XSm0KjxMur_>jx#_s>LE&XB7!tKvio-O=-`PH#M{ys==Jj})~tURCj z^49mXuxGrr^YoLi3Tyh##os!L$?-GKZl7OEKJQGdNiQ=Uw!r36hnTY)05Rs;1wpLp z%=FB~~U&VK~g2*eoex9BYo+4tM6m*_0==oG=TX9EcG@ zfN$O0dKLreP#)$xXr*KMOpfp_V9T4Einxx~5ZNz{dpW{heX_?zlN&)kdEqN)eXO5g;Z77>k6x?Q70iBtxu>#BK#JuF0A3o2B~9OIpTPi>~MbC qhJp>0ll*Jj6p9;!Kc}ou2vk&YBwT7bwBV3wpecq1Iy(o)65t=%h_8JB diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.png index ad67fdf68aa755dc59df2fe5d2785c181fbe745f..58f75a2e21c75aa08e80b487d57b62c7c427bed1 100644 GIT binary patch delta 650 zcmV;50(JeW2dD>-NqChkq(V$C%G$ew9gM*@kM^LVDL)&>?!w>q=@Z7Lzu(Whckgm`c9tYLJw46t?rsKyLBq>{Kh4BwG#WKM0%%6B*UQ_tZ}ar&)4X`` zA`1%(>2x|dJ3GtO)m65)x0{{_{6U;Fz!-b;=1pF`dX;v&oo=_Aj~_o~eSJMYe*DP8 zhYyn^`}_OZ+SN!2Y~SzBBC_4)YtIIF9xNs^6?jU>s*$w_*> zUY+24mLM8^X%EPEG;c% zI2>kbYO2BIKvVoZ0b}g@_wN}D22i-QCUX>}n+a07*qoM6N<$f(1EA761SM delta 635 zcmV->0)+jj2dW2L_t(|obB7OOVxWE#_{LmF>q{%BnP2EgTOEeY0XI#n+wFFn9sxAt=;$c#-o4BG{Cr-%e3|j_@r;g+=HTEUXJ=eZ{ z`SK+%Uc7%ulDv8I=KB2O$B#KVImy?rU$d~VkcST+{^vV^o5A%2kju-<+_`fno12?? z`t<4b`QF}Mc6WEPxVV`8{ryZ$P37q5C<6ln4Xy>6;(7we_V#vKtyU%`CXytlr>8kS zKF*IHKeDm0ktBKa=uxh&uJY~MwjAI@21n~WMg9^BO@cZb?eWM zgyrSs3=IusW@aX9Yimi8v$M0b+ilkq(8D~_06nVRZs*C9Cs|op$@utqc6N61{{8zL z9v}`}y-{I-O4L-Mg10`TqTThKGmKZvXy$ zVrf`uDUTmN&a-FFa&>i;zP`RD<^l~94ZuHIUtiDg@NmY)#FMe8_xI=5uV3kQyE#8UPpj2xdK%CG(EtFH`1b^p5d(o55e)!9$sdvo Vxi7Gox*Grh002ovPDHLkV1i$&ROSEx diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.svg index 516b8b06c045..f6567f61b7d6 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_14.svg @@ -5,128 +5,126 @@ - - + - - + - + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.pdf index de6ce8ce3576c692cc261f55e7cd89fda598f19d..cc1252890f9c2c3ab9193d83e994d095d0a29237 100644 GIT binary patch delta 1558 zcma)6U1%It6gInVYA4xkF&i4N+G|37>=NhB-~MQ+Zj#+(#WrzMYOrX%ncVD7%+4$` zcg6VBI<*!6j2e11&!^K49sO5ld}udWGGhqOglD1TJ3#`Fh*S)8OJ}}zMQme zhk57#dK}5)u2U)^0FbAFhf8d)NL*^0hky@6#^}?QNwec44U)BdpeXO5a~2tK%1{Tx zPm9Hop^K8EfJ<!vNYt>i)N@L%3C9)Z$s)eDtwWOJDS^X~%4yp}%l(Iy&^g?hT6*nV zU+1ltGmlkzlessp+;ZvE3!zuOxb{cz{I7q%|LQweCO&+x=)WT}dFrJn4-6eSa^w0} zn^S*X8+iF*H+uE$(r<(Ne@b5We`NMQE2Q_BOG%;81VsVXq6>-^=a2Z5 ziqr9N8;=C~h90%%Sl&a*hAviBmmek`8_g3JsfHo()!>e;AaH4xRU0kZt?@qtck=Gg zUBMCJ(b}fbg3D(DLp#%!Ti=aAO{g;EIws&4LOw~}OA5j*1y{lR!S)`SUL-jWX)44> zae`X8JXionkvvoX&KKsQtGzS|ng@oeDU$iIlD3U96xtzdy_4}^O1|E-$7PBjAr zStIyARTEfcJxp1Q9I^i(p{w*geCpSIe^Bb{f<;LcnZJ{dthJs~oboF-DFMC=+ zN`jkR@A89TnH%9g9t>~0J+A7CZm1fLU}X^F!FwcrG(0vBcN2>T*+{CsU_D`gubX2D zD84afV9~_pm*E#7PSWZA!H)beCyrmLcDHsw>c?xb}rbfZuO?fz~ zv|woQ7z{jkme(Csi^f{$YLMAnP){f=WYlQ1Wv>CO*Y+}(Sc}vZGg_Xuo}owu+hk?O lVMq)PnC=;S-a%?@NWkFq7;#zIrSp=Z#uHM1e`+!<{R2DE#RC8U delta 1493 zcmb7^UuaWT7{GVaR@fy;rD>mlhI?}CVX&vMb8b?bGz_-Og?sOJ zzrVlpec%1qH?d2D*%R+B5Ksx$A;(-bXW?*bgCbc=Ia7Iq>Z}A)*1tmXS zI75mQOkal^P)ghy7~)f2ox;Q8i!_s?7A2tjG9_2G=ImMt;th)lr$#|ry*s!q<2vUS zKsY^|10_w~v5RCTb7=LC$Y3L_hQipG$jc?%%ukH%mUgfyX-AOTabH~SL6V)7jxNPk zZinxo;Dz%C9(;_pRz~c#ftOR!Uqf%kmVdi*VrW-n`}53|>5=lD{GIZ((1#a)`gu8V z`B}Y`o&9TD@8z}p=ap;UKf5^l_ua(x-a?a%HV|u-yZnt`lZy>wb4^I``(YfRQw=%LqPMWORVZTK8$(gf*;m&W(9Da z$yWm`+Z~m&R#niiR&BPmXW!{VmPdR%z6c{wPT6y`>;d)*mzCVP0`(6}@X@$s*>aD& zPLXT)2LMU~T*JwP?Rr$G0Fv1c;a%*z?w#y$XeXMonsU`JT8tFZI2D(fG)kA%6NbHClk``HB-e3PL za7$vNp=fYDqRRs^DIDc-TA>Q@3#QEuZfDAHxc`-nig+C_AhKV2c5{ULgRS`3+u`lO z7FKcgwC7(~8UKlupJEFt)%@S695&SZN&VKAl`dvRLS6K{!^R`81(VJB!+>?>MQ(uY z)Y4*3_oY)R!Un>siFKr5Er#?Fghtp*{~k$ZL;Z#X?2G>Ne4MwTxS$5I|AO?S#v5<5 z%;XDWvn_P_>iO^~{lT_LW&Vkc|!4v3$i%<$WB jD2NTh-*fhR1XN9oghwrxF1lo1HdIrS_wF5^o{;|m6uGHk diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.png index 134ac291dfcf3ce73fe17ebd9cccd98caefdfdfe..798c75d3e6b38f6f6af0842bd9ffe46916005d62 100644 GIT binary patch delta 668 zcmV;N0%QHG2f7E4Noib3L_t(|obBAPOVocH$MM&h3XTpExVTjyBql;iOPdYt(%>Kj z{RwUU3yy9M4T2C2x-?XaBn}M@N+BMKxyngxmtDgTT7rJ>$**yb$8^IDujzQ+=kw*; z>h*fP008`tfu;ul0RIM)0RbYC0V9$DBa#6Le`K)f0l>}o?%lhbo}T9O=g(PQUe3LH z_nMvrG(a=}f3?5ApLV;Q=g*(#;NT#SA3sjJ-Ok9!NYm4RYvy_a_^Yp9zh--TJ4rG* zIhm`gs~jC2HM|OFLaW#7^_m_5{2R{C&oetao0F513=a=CJqNgEP8xu+m6erjY-|Vy zf9O+A8i10uwY5x5O=WIwE>~AqxpnJS)02Q}=A;4oT&L5?>({SyczBp3IXF1T*49?K z-R|%2Y;A32ettf4b94Fl@ncR;Pn((xG{{K<^s#okoz2b7EG;eN#ful2o}SL#yLWSV zc$o9^^Q^D0XJ=<8Po6x<(9lqR{`{FtGs;qGUMap zxqttDK79C)XV0GH`}gm8`0!zp2z{=c_|p6PkB!R^s&Xo#owPl zefpHAPoE}9R##V>ngrZnt|x%}`0*p7qoaBM{(WX=XPce_+)%D3fb8z>rqya?e`aPT zNpf~}mXni{W=8=xj%a{B_4e)CjE#+@+wEq1dpmdT+{wVee?JN9>+2aGA8&XeaMO6E z0s7S7;9wp+c#w^ajZ9BZXK!yWZ{EDgmoHzku(03-PQV{L(*S+!;^HFRZa24Y-%gSo zA0KC8Vj_cs{!ajZ5)A-AiDw!BlT!mjlTZUf7JdOqeaE9I)y6yk0000Noh_=L_t(|obBAPOVocH$MM&d1&s}2xCjnr1&WD~qni%y(a;bG z{RwUT3yp0K4uXq=E)8c};n3hW5Yx?rM@8`p} zH5d#A0RZ@mTTKrD0RA77fdeCv?=+GD8h?_prUwASt=(?t+qZ8yIXTIzSFbWVJKOXm zpdq3G_@kqvqjWl*Y;0`g`1m+0D=X=AI=Of6UenWn1~{Go{^-Y#AKBmEPm(-&@+AF! zKWArW4X*;4(i#i~gQiCS!>`xtWoc857^ z4G;}5;w~>Q({8u(=+UD*e*8Gc$H(b(I$2#^&Eer;*4EZ?=gyt{{P{D3!628HmuaMUg!nU@y z^5)H(OioT_Zf-6gKYq-M7cX*kb(Lq&o;5uW7&1QY1S9PE^XLEm{_^EZ*4NjQB=6q6 zYibfO#2ilmxw*N?{rmTGaBz^NrKP6l07J_01dz|4Kd04dWpQyaN%H;s_kVP|-DXDt zLq{~gi2Cs1L&nF)bA5fC{r&yS%*^E0t$!W~o12@NoSbZUAuw#*X@C(mHa3>0PoHLc zdpipY3pqSI%y1MGikHBx-X@C)SadDCB>+4KROe9Ip&(AY8HI=b3|0jUo zi3R|m#GM8JphPqP041UU0F#;n3X$(Lk^v)<0TveW3nx6jQ!2l1*#H0l07*qoM6N<$ Ef{8y>bpQYW diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.svg index 9367f638b12e..8a1da949b481 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_15.svg @@ -5,128 +5,126 @@ - - + - - - - + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.pdf index 984ffaa141ebe5e90ad617488a36bb148c95f87a..0506c68545f6ad941a08dcdcd97c1ebdc093901f 100644 GIT binary patch delta 1659 zcma)7U1(cX95)$V)4R6zV@;-A*HdcRuHx=J_ug}pYF9`q(Kv=gAOPa@WoJvl3d`LX!z?FFl| za4Y=lj zZ?;$0e9|169y<5Uu}?kkN9tQ1Zn9RI&wu&*=I8IM-I`ds4)ErOx5JClrDwH2zxwR* zHT2J0_R)Jf?rz-q)P_ul#oLP3^R&Z*K3AO2LIo z9fDI^tU$=e5VSyq*mGW(m1}Q!*bkKtbUkHG(HR%OGFo#q$d6%{4$NQ&s0c~ywYt_i zj`-Xp%`q?d*Vr{*3;V9_P)$E}Nj_*G<*pW0P;lPMMoNtBW_$!k~_$2QuHy{MclY! zrm5{n@^P+FGaj)LNy5|1;=EX%t<|-4@VO{SJqZ+vt0$lEAr?HklCicoqg>OG=xPXe#g9_|al+MEv8w(6} zhk20r01HUD2L&03GqlYXQWSP4(AdOFZa>jgwiIaeXzcGmhc~RVwgbV8A$loygoeTw zZJSN!qTX(Uf|znY)zJCvRBlrYZAT3q89Bd9={&j?+EG|n!dx8X36UW-wA`i|VZN8; zHcdl2nn7W`q!~KsU^7V^@lPPf%tZoJ9mrAJrl3ICackNJYW}w8igYP<=)6OwCDhY{ Lq+oDpY*_jad#l^- delta 1602 zcma)+U2GIp6vwmM7Q@)qt>6~Z0(a>r8Z!6ZnY+_1brWFQ0@k){2_JosPPezagS#{B z%q_M&SZ!>mA2BvJAyMN4HYOT0(QIN&hz~%BFG3mn@-Fo10o-l#Xi*9J-=tTfE#@ z-|IS46F@dSFa*>DJ!7S4vUmUD{Vk0JS%rjnTzCZQ5h0!Npow<0k>80G&3*NDX&i;FKzs!Gd_tLfa#fNXZOIL5b z+51uE?_ZaWCTl;7{RNww!)=|9FPw9;KO46;{}}H&x6ps`(Klb`R&FnUxjes8apTB~ znnD{A`8)gUIM$OK4Rl`RLBpk7K2WDgd7c~@xHc1Cl@M1tCrHPar@u%ezgNUd~+ z0bSSlk-G59;++`RlN(9-ub9*R4FG}=D#C{ot3?Kk0`-t^rIp%er?XVH-d8wNyyC{D z^ZBu7Ukz3m1m>@8eIdY4Dm6Q209rNKG(ZJ|J~1)I{H;J+ekph<5X6v=R5pZSqH7YU zYm!|4U8r?fQHv?N#gOG5i2RKqV>#NSvH@g%uPP!KZ|4sxcfgG(OHFILRzx|^o@v z|4+Qc$9sG|USD?+U2Ob+y2V59;J?+qlfS;{{fdx(xix9*b%#F{-uVmy$X|1DItBtO z34aSL$4<!oZ%=e$hzLa3KswZrwg>8M5VrBH_00i=-wBfd;AVYdJSwIpKfnfx{{xb! zCP0+NI)uwhVg?kpERA6ysWhe&{`9uipnV%XP>squ-j1GqSFi(^Q|oVRz+cb}aMZP1+JIP0h<&_bAjsv`zQgRBUc;&NPvV++SCF zwHT;v38O~Y%S%gre0(_AUIh6`H7H$Q7kheN?QbI!lPOD=E?pD5d)q6|16;+I7-HAm z%z5_h?d_R!=lV`MbLLD+QIXNxvftmc)zsCCe|&hz!^`^==;E34=daJw3s6+&y>Rr^ z*Q&g`yQUhapL_D>=jWAIvuCGdROV|PoJNk2L`{% z?6Y6KdjB>-bVAuT1`=rl#@Gm zeSQ4q9Xn>EZJrsnT2*3!_s_X(FOt;#=l%KnDlri1;d#Ftw*XB%a<=tZf56K^R%n`GsA6h;9HG^tAe~2mcF~c zfBxF&?aS`wr31s(y8PXlS*H8%2^~9r{PO+#@gJQMwify`m#n;Z@1BfBfr7BGFwmQo zA0N5CyR&n0`TKiMUtCB6n2d}?g{Poq&Kt_`ue(d3~$I$Pv(-1y3yPI ze5?V6T)oZzKR=6s8teWqe){E0N!Hd|U2mDg#J`&`)SDU^O#=G#*_D;So|Aw9l2TH# z1(+H_U6?nl0UDT=lA_}I>Dk%YZ|?8k|H#!LG-e*dG*c_9S?&DtX?b~ix3}l7ui^tm zMq)rFZMz=ckXf6N~Zxi18rY0?H3Dh!^kelF{r G5}E+c-}8_F literal 1161 zcmeAS@N?(olHy`uVBq!ia0y~yVB!U`y*b!`r^yi(^Q|oVR!PW>1b~IQG!`mY9|vSJ2A@$AkVW+%z>Jx;U2d z&1G51r_}Ud{sV;_R#v-81vGb9Lgu)s;{p?XPr&ci`_Nl=g*&WEDDv*rWybJ`#02|`P$6a zoDbI9)&81t^X5&Jla0*mn|AG*)!N$H70wvCV(aabwpUXPf6gdvLJXvg}PnSa|s6!pFx}sWZOzF=6;$ z0(1)xFK=o^g~j>#_UFI7y}h~k`MFi;AXx|T=%^^K#TQTPtNp#H{{O!-=g%*{nUj{3 zq_lVMUe8JC=jT1WvNHJP+qY+dS}*5q-@IkZl&G~~AFC4fcCx()0(zwU-JO#^KR+-2 z`RVDE*I(b<+^n8|Z_mj`kCK)xU%q-CM~MW#lhgEFrLV)*#q6AP@Zdone*WhtC#zeQ zzl+&d_jlG}_x>@0lj7CO0s?|Bu|t~>qm_M1{q zPqV4}W1+099D1J7YQ}5M7e&Rz#VfC7Sr$F>Gw04d`|j@U&54KC&u@PD@+A)+pPJ{i>C->|{rz2QIg_jlFce?l}x>!HI^8xGFc z7f()3UU~g>WMt&Y0|y+IEnD{K-{0RpetyfAKfiwd(DU>2jZI9pe9NEK>!$p*YVWC= z4oByhI848_t2CR9jqTdL_qVoY>q<;YDJe18o`3(`&CThPRs84MoxO46#;*4)R_z%K z|6UyJ7MGNj^_{e*?yprlpX{m%!2s3k!UyDgdwZW=T_Y434 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.svg index a7328b8238f8..415e8ec04c9e 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_16.svg @@ -5,183 +5,181 @@ - - + + - - - - - - + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.pdf index 76f134482de40743d9635355782e9cf9860cfa42..0506c68545f6ad941a08dcdcd97c1ebdc093901f 100644 GIT binary patch delta 1657 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 G5}E+c-}8_F literal 1161 zcmeAS@N?(olHy`uVBq!ia0y~yVB!U`y*b!`r^yi(^Q|oVR!PW>1b~IQG!`mY9|vSJ2A@$AkVW+%z>Jx;U2d z&1G51r_}Ud{sV;_R#v-81vGb9Lgu)s;{p?XPr&ci`_Nl=g*&WEDDv*rWybJ`#02|`P$6a zoDbI9)&81t^X5&Jla0*mn|AG*)!N$H70wvCV(aabwpUXPf6gdvLJXvg}PnSa|s6!pFx}sWZOzF=6;$ z0(1)xFK=o^g~j>#_UFI7y}h~k`MFi;AXx|T=%^^K#TQTPtNp#H{{O!-=g%*{nUj{3 zq_lVMUe8JC=jT1WvNHJP+qY+dS}*5q-@IkZl&G~~AFC4fcCx()0(zwU-JO#^KR+-2 z`RVDE*I(b<+^n8|Z_mj`kCK)xU%q-CM~MW#lhgEFrLV)*#q6AP@Zdone*WhtC#zeQ zzl+&d_jlG}_x>@0lj7CO0s?|Bu|t~>qm_M1{q zPqV4}W1+099D1J7YQ}5M7e&Rz#VfC7Sr$F>Gw04d`|j@U&54KC&u@PD@+A)+pPJ{i>C->|{rz2QIg_jlFce?l}x>!HI^8xGFc z7f()3UU~g>WMt&Y0|y+IEnD{K-{0RpetyfAKfiwd(DU>2jZI9pe9NEK>!$p*YVWC= z4oByhI848_t2CR9jqTdL_qVoY>q<;YDJe18o`3(`&CThPRs84MoxO46#;*4)R_z%K z|6UyJ7MGNj^_{e*?yprlpX{m%!2s3k!UyDgdwZW=T_Y434 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.svg index 0c13cf218c03..958844043027 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_17.svg @@ -5,183 +5,181 @@ - - + + - - - - - - + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.pdf index 03df83e14681ac06aa0dff9eb79246e1a204cd61..869ea8c2675f33446dd146d889da693bc10b4a25 100644 GIT binary patch delta 2778 zcmai$e{2(F7{}9YvTOW$F3Wz zVg)#qUxvql#Q9*$pz>rqtb|stEF@{J$0^e5 zlt^4&sZHR0ApYY-3GjZhOqbPcq#4!Mi6vso^ zgQthi!G`Dmes-$2-xvKisZBjG{avC{yl|whdBb)^HJvB)gu5DGzU+DVd06e>U^plIB;34T-`r3tE z;jL)@+3noB^CzB>e~VliN`HLwQnaP9W^F?KE4!!mZR3ZOJJIkG)&1#%SDN%+Ui9>O z_T8BGXv^1!2V#k%Cn6s{6*>6lPiqdewD;aTx*P5N@ignbnSFKfr03<)4Uu2JIkM+> z`Sneku3tXqI(d1gdW}j~8O(4usb$8{6**O?D#KtINLg7HS~hgt*^}cNw>r_WIi0@E z@rW^&0Za)U`D)S+%Nb)}Ox6L*^A!5Bxubr3)X39A7~;_5&3y|gdZnCE%=H7Q%p?N= znrZT6gK^z*h7?UU8P>Hh4#S&e8j@24LerthAVUbUAf$syIhFw&OJGf}QR1;NOdAvd zy~X+h0o|Vole&sxpuh}CWl%wyyB1LNS`2wS+^@!x3f`C|?`)CL`R1M_6vocnq&Fbo zHS6Swyd+o=2+{u9!?~J8yBtnYM2~oOBdYZ=w6nD)mumGn(8+nORy7(|ut1q9=eZ3Qdj&a|-(Co7^eZ9cSk=~X8yRP>(OWR z^C4?ZBujJlj*xe_D zteUC-*5tUa4_#Tp3Ms|`XYng1(_=Dnb+vo^fVD2*APX2v z*dPO#f|Ucf2%)aG(2$o#o!)!9@%Y3Sf)Ur$L2`Zj2A8vt;i1I(89&c*%reM$A@p`r zXs35DN-9krpaLrY0R}{T*_PWREKY?@z&Vh|<||3KAKCJ7Sm>C$zQU&>aT zL}H{0TRbn-Kk9*IA#2!O*)7t%BXm@}SUt41}z bnS&HJZ^n>yV?tM=6ayJfqCB2e>x0yPEV2@= delta 2709 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 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.svg index d783a249518c..fe18ef8ed02a 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_18.svg @@ -5,260 +5,253 @@ - - - + - - - + + - - + + - - - - - - - - - + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.pdf index 8a91c37c98f57b82dc97e19bd65ee47d3dfbb551..d8bf0af338d02420fb16da04725ace3d4385ebd3 100644 GIT binary patch delta 2179 zcma)-Yitx%6vvru2r#9k1xp25dP}?Q&NeWwo!xCqiG5IB0<}eKArPj!vyWzXrk$Na zABHUkFr`KyS0Ujc@zqFBDUJbz57IzLRIq>u#TufCCLk(Ns4)oWy|V+|F3~vqVQ0?V zd;aI#^E+p{d|kdBSxk-Smm+`z45$V4iuPs+(3PSlh7>=TH;7|l4 zC{`$K$Pa^lyvq#)2X$qu!;sa*g`Cc?i^Tl znwfa^_C_+N^iAp2I|F6S<&C9z!^dZQMP^i1fRr}-%&uf*>t5gLw4r|W_u)GO>zi7} z^ps6bo!NwCasUUw^Pr+{;-0q=wFCBa9 zkoREOPd(P0J&}({n@AJuA|#NgV!y~VQT&_aN$@= ze>vMiz=`AR`u*IS1T30h*Bc6+Bj6d*rtboC3AjI*(pO}W1T0Ub^p9qqB;e$9O3$|@ z6R;yA-}XY#s|6x}9fhBP3;nDZ(JBL?3OGR^VZALU4Uy5>s2PM}PIMVwrIQy54+n2t1(6BOXkS@gmkZC{}LBq6^vj&4L3uC(PA zplmcLyb_=otE8Bx*&K^BmWpl0u>h9gTyT5lE`62#l_c0VBPA-ew2C2s78%WoQi^d* z%Yeh=qXss5CM5YZz?#q-7S%|BWAP%A);1`BGmkt7ShGu;L#=2I#M*SE^SQXzhdo5L zK09fK#ljUsw!o&VWA_knZ8oJhrM_o@-7_ipGkFAt0i_G${vhC`TuMKi+-ZS7=280R zQ~C(_S3aeeru!_AF0kv*Pf!TL317^Z&TwXJOddFMjyyh94J7bzd+Mx|L>RR6M13_R^45NTN#mczM?hajMm)!vuUnmK! zRb#5x&{#D7X{x2Bl}v5Z_@lA57)`5*4}K~A(WFgGZTeChYfSIVEOr-S)7c+;@44rk zd(QWL=kE3I^}pk&U*8*%0aYn!QYah%RHGD-V}Jn=G=cJRQdZl;+d4=$-W&gAWq@jF z*w!KYG$5KjI6%|ns0w&vOCDKEFZIT?nr2PXWWbp=syQgND{24;Rz!7J)c||sqGNtd zG~68lM$*b=Kvl^-icfB;S#{*MY=>2r9O%v|S z3NWkf!F=!4U3>OiUotRaAKhH=^Ml>q(UNJ*vD_1{JZ$qluF37VcbB+H$L;6RZY&$a zzZ++rbv)`PfWFNe&rhoLHaa6T`*RyX+X5YpA`6Jh=Ke;~~EN32# zUcSS9^~bu_`qP`Xk{iFib#2%AL6`QYw54S1>Ft(NNbDVU#!Je+5Dtxx!>$8+4%Cjy z_A6K4zg^n{Tb{l)ct-!>5_kRh%h`p!52YU;9pCKp7Oa0Va%f)vtvAG>4;IWg)$Wj& z)$Sg;{ma&yhaZcdY6Uan*UR1$&R@y7FqS>Ee(d{i`cFRD@a>Wz?_g_BB;(h##yYeR zjoTXZ;M~PFv}n3ZKRbVjK;9X}x+CWSfm-avdd<=>fo{$$LKTh?B$6(DMea@;>PUC# zk%eb$s6NA`f1dBR*%%J(Bb@qp-Z=vG&o0QQmpTnab#^K=B+-G)!cD8Bm~671umWnM z(yj$#fHwIgspjr&nyEvBb`}Q*rD$U`?86?Wt^j4}!AerCL}Qxa0^rdifMAhEuay!O zhUb%XOS4#V6T+>MV?IMer3_Arh@zKrG`VvFcA%<5QXmFchNN0*WhD^Q0LQT?FKgZ! ze1?UU+!3Jaq_|l=pdo}L9-T-cNQ45QR^vfZd=+XSBpazKtUK`$I+-=7w-vu`OA~ph zUtCs9pfBfS_#;6D(22>|0T`p;CP1|V+L$@K(g5wTR-4y(6!mQnD`vDD6{Q(W1%Q~ep1!xc}miFo2C+dLx1CDo4=IE-wnjblZOF@$|7#Y01$ zDULK0;pBug#%6LcG=^-7AC1R-Qa&g$G^X&`9r%9yiM%oM#`iChqT3kgRGXWH$-(BS zTi~a}dT95Qjy;?(C7(yMi99;N6t7sV`mwmMgYob*g~RymvDVGX4jHg+L&h;pifZww R>?di4p#`$A(A!W={sTufY)AkA diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.png index 7dc464bd34760b0ed9517fe2b2b22e5c1f0a2df4..827a04ff087465211be10b4c736ed1e2b4771bb8 100644 GIT binary patch literal 3983 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 ZBY=D{SN+;jG2lcEDa)%Pie*g${{x9jffs) z^!kusL?`0ge*FG}_dVA&bM~IS&zZgNd);fT{n9{BgPMYk0)ilFElpJ;2qLBiZ5?t_ z@VysP^9|gtcq?lm$iWpvZi@l^Ybed9-Vj8Cy!;RqD-=0_Mw^zZ62d=gYZm>;c!GqC z;L(LO=qA1~o0Yl5pv2c)B+cmSo$@Hl5QD}D$n%b>tzqqNtas+wu1Tq-!j=RYV8^6U zYC&NP2Az4TbR`iyR96e`cSfk)UOyt+?XJKutG?Pg)6)F1KDYPp<57=6nflvNw8X05 z8XPLjCsPECY!Vd`Iy$<(_MyvOwU`7g9bL*@Dr(TVN%>zjG*WxHVmBcej3_!fddN}Y zNdpST!O1BbsHwUy+BT%PFY0yj+iqoj-KOs!{@(B3yVLF%zskv>p`?sY;$ovar$hxr z{2h&pi$g7UCnj;JXWkJJQ8zc|fUJ67!NgdodItu!77S~%^omsM?d>&amZNEv70XTh z_Qfz}(RtwyYiFDMI_BrOhlhvDKX5ZJT!~iRZJ+k=;11rWv$nQ|pn8va^@$1#d~g7^ zqT>3|&b){3c`OaL^+1Ls%FFA%;Ka{^;*yepxy9P1xHt-1J3Fl&ifCfCL{dXTLr!Ty z><^@4uAbX5VQ~_NmICWEGdCpqX>DV3Wu<6PP|y$#?FT77eadQ5`8+W!4Dt^MXd54AG_8E@R=U`XdinBY zRZWeA;Il@bJ6J5%>|p10G2cB2gQ5pM{~DyFrz3x_^a)p>*S`J7;fKqI^XX}`Z*T9B z)Vt3*d**EMOG~rFGYLnOmI_gks>E-SUcCx8o%de<9$jDWSGu{jx|&x|(0SX(b+U>m zBqW5ex7U%vr?K$sS3-$#Q61XRWh?k|z@ETdz&dB@Z$=@L)`^LufLOJ$3Kq6vV_Ed! z-LkSWFneaH@$6`)rzj_6dg*X5M}a0?J9@Drw!UHTkd~c2es{U2qpR!c`uA)VBoZ0F znIq%9_W3jij(+gKb#mxK zJ^6PyKX2F(b+kRZ&dOxiv^08SY$NUUYhGbt>W&!dNVD?p0ab*uvlX6wQovV zTGzb1ymCi3#JtxYf!`NT4}P*pIy3y*+R~j)Oiu36S2(}P`OM7Bda3i}zvHEE5I@SF zNkNK_AEzT;?99O#n3<(yeuR^dwU3O@2jaMj^s?ItiyevEq* zQ&LkSv$8l+;cSpt$RGdC?ryfL{Ma|FDkQ#wFc{3BbR3XgYo1Ch>X?8G+U;T%e+^0y0(me20n+X5ZDHq@++1jCY6_E-)V

#ahl{B-gPX%dgO>BP{XyuDRWsH)*=eRp?} zvhwmoE}Gh!n$C^UqQp~uEiENb{`Z1UeW2C~i>8I09U2`S9mM0uZQb3ZAca+*K1C|$ zDOy?ayw}Z)0j2rv9h}{!JE3h0Uyro6C(YK24LLuB0Yn6!9lE8S86yx;zCV8;H^)i< zJrQIr zJXgOmZe)PyZwvyoGP+DuxK)?y%b%!@jg8eb1mm8IHu~*|h*&ny*fxN7gOox-LWY)>qEWO<$Ggi|z;OeICzGGH<7t&wR#&gxx^*ihCkKpL1I8bbk&=?4 zV`Q}R2@VSSg7WoEA6FRe4-=;zb1F0cOyB=T^v#QL%jO`~O57n^%ymvdi%(W<#8B&a zsj27BAHuHFHGKt~^jrd%fr&}E1i?1WE@lM*)!YS- zAirnHh>44nK*i(E4ULU;eZfRwYVl0SscJi25#0V3p1H5D@2#ZEYlOXv%h`xRw95WX z05^vF_wO4R81U$7ktlk3RriIE=I$o)NJ%jZnO3+~mxJ=L*`E1a?rd3Z!j3zsO}FcR z{hzeYjg6Nn0{j=QocHS8?c&Nx4QFS;2ktY+=D~st6#jvMY&aPT*sIsCFSncT!o9-> zK@JWMwzjrbpsFy*$r_4^P@Tto(rW)3Dg1n@n?%>l3`cEktv>vs<>H(sl8h!MIXM~e zqe!0{N<ySsbM?$-XssDKB`3$L%O{g3>ewY4?nLZdvtojIfI zm>AN#<_)yTTyW>Z19F&^n_D9IPxwKGeDG;&e?MhONs0O@C^&=L43``p)-5Fz*%k)4 zK@#s^%)!C&=<6l**h~K1XbmUv2f9*t5KwED2xL%BTtZG~@EsgDis6;d7!3LTuc;fL zP{@X)pE2CH!MAl)8npnaCvjZM_2erxDV20uUK_|9a;|-Q-;M&xegB@6m6i1v09Loc zZ6LVh!-ojqwHThf%j)Xw>kC)UZ(Gj^bw?Bd(E-95Sss z7Y^qH<)-rJ5tXZ}YpzM@N8g_&AaHX21V~0khH!AumFdxZXS{!4peu}st zGlS@p`D~0F&r3;2jM;LC8hLu&YwzeNv@ta`&EI)UtIVRic(Hfv1fqso{|;Qo@v*du5?Xh2Ij<0j;h~*9;&-HxI1BcHRWN&UdgH>a&f`07*m%o z0@0qsp;hvSA;^8EAspx>wz`^L=k;ABTib#@DosyM&(!%v#r^7~MUg?ah14a9$OdpqelE^raZ-$uVqo3>B6wNkEF~ zH|piT21K@?7KtMwBCI?-k_!rM1|7}%L17Aik4cD#h#Vaq!(wB}?7wHdTv)IIO7Sg2 zlJf80zmxSI+?O&6T%SK0%?I2bWaZ!x%LNb2ZD@F6_5x^PG}w@{vomU?moERFT!{AC zpu$CzNoh3D>-7jLsVoC2}Og_3Z5I#igZ)Y*{}n`e>V+ib`T?kRW$d2*xpSaqStB zE>-@!)(nh{NMOJkd^YHTu4QBuYHDc(tocRL;t&t5_V^7;)6>#4^;yVa1s0p*j{e9y~_}Yn=5E;YC@MzhZ=>1G}oN{RXg47;a0P^fA13n+>D`_nIPx->MAR4t!`;! zW9rw*hYx~4#2#i>4D?hvjSB4ci?-Ah>#3+jHu&wlGn@j}Ubh1M=g7?5{H~yoP&5vQ z!(cG4W(Pk3-$Q@nMpq0qJJ@CLrlha0uk~aV5?fbi@}fzVQx_JMkj$uhK@3dhrDv?4 z55W(sq;$>Ba)NWhh~CAa*Tx9HQ>Y@kw79snhdVSOEiLVVTYXs>6(GtU0H(#o#qjyi z3r^V=zZ3%l8;2huyv@8UuXD>MAUk3t&(ONZIG+p@nCG8kPoJ%6##?$>tv@SU=IpmFMiW@YGvGjX0$uTS- TMT%0u2_Mo@(^IWbwu<;aC^o56 diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.svg index 3ec8f352909c..6278d8bfec14 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_20.svg @@ -10,664 +10,664 @@ - - + - + + +" id="Cmr10-2b"/> - - - + +" id="Cmmi10-7a"/> - + + - - + - - - - - - +M 7.515625 32.71875 +Q 6.6875 32.71875 6.140625 33.296875 +Q 5.609375 33.890625 5.609375 34.71875 +Q 5.609375 35.453125 6.140625 36.078125 +Q 6.6875 36.71875 7.515625 36.71875 +L 70.3125 36.71875 +Q 71.046875 36.71875 71.578125 36.078125 +Q 72.125 35.453125 72.125 34.71875 +Q 72.125 33.890625 71.578125 33.296875 +Q 71.046875 32.71875 70.3125 32.71875 +z +" id="Cmr10-3d"/> + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_21.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_21.pdf index f6b319095e4f03f16bc42b3e183fafe8323d01fd..782007f381cd5a93156fae86d8d2994719dac077 100644 GIT binary patch delta 3566 zcmai1eRLGn6?Znlh9zG>G~lk}g%HW+Yu=lWof%CN^0kB$2$)cz5PBFklVmxYnPqnp zlBRSUZM7#D&^|4oc&J#kR;kb_ttFO zw{Pxy_uk+A{qCLpc$oTVn7Ypim&sj92rvMGRzNQw2q=KAmvz~%b%E+?yP|ez>(<*v z^4R=eRR!)}j~d##EK-JKfl?FKp9gT>)J5nw3k}tyjD{5Tai_nyLdfx?U#h zx)M|YfB#`;xK>p)Jp@*RHGp0i)OrJeIH21|96?zP1>~TjdIv~6WT!#t^Ldrlg>|tY zqxK|3dWq8Elk2p8at|bbtRMoOGq0>CeifBCkfOd@m5|mO^pbSVd|ClsMP+3yGrj15 z!5gUNaNE(Amtf{|ACv{l>s~+Ivh&%d_WM>IZ~A61t?$vZh3PZKU(ESrO4C<2sSoK# zZM$0^(3wX*6j4zPq-p*!=n8Bd30FXw0#z;e*kt(4VI)escsl)@TpjdanOl zCwFYwJJ5>uRh0brT*biPfY$Qw+mFATH}mZ)uRVS0VDoRsw|9m&t^M+F!{4aO@ANu6 zb)Rj2_r32u|Ch$g`8BWg2XecozMVNZf0k|V=XXAHYWaW0+4^?y%9Gdit?E?Hdmhi) zaq7wz`G)ZRnb$Yp zHU4I0`!mheHPxlL&W+ojI`$lV_|Oe=XBvSoK72Pca?p5kHNB^EudV;!tcnYp@*bCV z_04I!k@^$b_>-@%+yCX6Uk-jX_Up^XEorTq+Y{;OfbSxAZQ(#y7#I;a7>zJE_V#raIYp3hv zkP@}8?+Fdy)8Z{*643;x_Bc=(t5>whJ!Ur|_6Wvh7>Q|8gdqVnhA;u!!dDQaSo1I= z!DUW6NWz+gM4rU?#qT&uOYNllSkOyua^D2>3`__N8Y9kWHk%;ep;<%NQP577#y~+O zg`09Rr}X&L-VlCi_HDQkeQaZ)Nnc}mnT@is2%oT*7%Y9B!fT7N@d)KG+J)Q612$sx z1z$zhTx4BXYNv2}q089H*4XelvIv)tQurH1E@L$_jhKnVtOR#d?!k}Ubd~-L|Njct zE*0dG-kYd^L1}YFtaA9TVp+xiu9-!s7S^2BY*0%6u!06Wdw3QrSMeRWjv9VM`0&&8JFy16lNHgao~Ev zhC5l8F+BZY3LocP#+6Ks!mQxJKh55cFI8vZgJKTkEWKLtWvzsxWByw5eJC$kzJt=u zct+le>=+G9LH7727cgl^k>k=bg7sn5t$S)Q>b~!T(CuNH17w^b( z#VeRGub5CUOi(Z@;SuL%5U|pj!r&2dMuh}met-(>kp*%y z0=Y72k2Oh}yvLKQlJ`hUP2S@m!Mt{9m?V*4O=gKXJ`(qk1POjgdpw`A$08x+J}62l zdkC5WHb3F3DMEx&!i0!(6a3B3gdHoHnoZghxMav6%b5jEwBsZ(5wb9O&N3!z5)CDm zPsSTch);1W3SzPolAM%`H{_u?E)#w5EJWdyO*hFk$bU=SyfQIQxRVKpCf67zxF#4^z?3=!m0phgIqFF^?z zBgCg5L#S%@@O$Wrt94U*`P7Ro8MjJ>-mxFqLQ0cU1BDb4m?8U{6OFj1g0xcH@$p8QV delta 3545 zcmbVPZE#f88TM{IAUBW%LrjFloPlFe*(H@i0q z(XvEj7=jkVsS+n+1RbL=W6