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 @@