Skip to content

Commit 1ca8a3a

Browse files
authored
Merge pull request #2028 from dpvc/issue1923
[STIX] Use Plane1 alphabets when possible. #1923
2 parents 2fe8c70 + cbb1fe2 commit 1ca8a3a

File tree

9 files changed

+182
-82
lines changed

9 files changed

+182
-82
lines changed

unpacked/jax/output/CommonHTML/autoload/mmultiscripts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ MathJax.Hub.Register.StartupHook("CommonHTML Jax Ready",function () {
7676
var u = bbox.h - q, v = bbox.d + r, delta = 0, p;
7777
var bmml = this.data[this.base];
7878
if (bmml && (bmml.type === "mi" || bmml.type === "mo")) {
79-
if (bmml.data.join("").length === 1 && bbox.rscale === 1 && !bbox.sH &&
79+
if (CHTML.isChar(bmml.data.join("")) && bbox.rscale === 1 && !bbox.sH &&
8080
!bmml.Get("largeop")) {u = v = 0}
8181
}
8282
values = this.getValues("displaystyle","subscriptshift","superscriptshift","texprimestyle");

unpacked/jax/output/CommonHTML/jax.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,15 @@
766766

767767
/********************************************************/
768768

769+
//
770+
// True if text holds a single (unicode) glyph
771+
//
772+
isChar: function (text) {
773+
if (text.length === 1) return true;
774+
if (text.length !== 2) return false;
775+
var n = text.charCodeAt(0);
776+
return (n >= 0xD800 && n < 0xDBFF);
777+
},
769778
//
770779
// Get a unicode character by number (even when it takes two character)
771780
//
@@ -1874,8 +1883,8 @@
18741883
toCommonHTML: function (node) {
18751884
node = this.CHTMLdefaultNode(node);
18761885
var bbox = this.CHTML, text = this.data.join("");
1877-
if (bbox.skew != null && text.length !== 1) delete bbox.skew;
1878-
if (bbox.r > bbox.w && text.length === 1 && !this.CHTMLvariant.noIC) {
1886+
if (bbox.skew != null && !CHTML.isChar(text)) delete bbox.skew;
1887+
if (bbox.r > bbox.w && CHTML.isChar(text) && !this.CHTMLvariant.noIC) {
18791888
bbox.ic = bbox.r - bbox.w; bbox.w = bbox.r;
18801889
node.lastChild.style.paddingRight = CHTML.Em(bbox.ic);
18811890
}
@@ -1890,8 +1899,8 @@
18901899
toCommonHTML: function (node) {
18911900
node = this.CHTMLdefaultNode(node,{childOptions:{remap:this.CHTMLremapMinus}});
18921901
var bbox = this.CHTML, text = this.data.join("");
1893-
if (bbox.skew != null && text.length !== 1) delete bbox.skew;
1894-
if (bbox.r > bbox.w && text.length === 1 && !this.CHTMLvariant.noIC) {
1902+
if (bbox.skew != null && !CHTML.isChar(text)) delete bbox.skew;
1903+
if (bbox.r > bbox.w && CHTML.isChar(text) && !this.CHTMLvariant.noIC) {
18951904
bbox.ic = bbox.r - bbox.w; bbox.w = bbox.r;
18961905
node.lastChild.style.paddingRight = CHTML.Em(bbox.ic);
18971906
}
@@ -1925,7 +1934,7 @@
19251934
remapchars: values.remapchars
19261935
}});
19271936
}
1928-
if (values.text.length !== 1) delete this.CHTML.skew;
1937+
if (!CHTML.isChar(values.text)) delete this.CHTML.skew;
19291938
else if (this.CHTML.w === 0 && this.CHTML.l < 0) this.CHTMLfixCombiningChar(node);
19301939
if (values.largeop) this.CHTMLcenterOp(node);
19311940
}
@@ -1958,7 +1967,7 @@
19581967
},
19591968
CHTMLadjustAccent: function (data) {
19601969
var parent = this.CoreParent(); data.parent = parent;
1961-
if (data.text.length === 1 && parent && parent.isa(MML.munderover)) {
1970+
if (CHTML.isChar(data.text) && parent && parent.isa(MML.munderover)) {
19621971
var over = parent.data[parent.over], under = parent.data[parent.under];
19631972
if (over && this === over.CoreMO() && parent.Get("accent")) {
19641973
data.remapchars = CHTML.FONTDATA.REMAPACCENT;
@@ -1998,7 +2007,7 @@
19982007
},
19992008
CHTMLcanStretch: function (direction,H,D) {
20002009
if (!this.Get("stretchy")) return false;
2001-
var c = this.data.join(""); if (c.length !== 1) return false;
2010+
var c = this.data.join(""); if (!CHTML.isChar(c)) return false;
20022011
var values = {text: c};
20032012
this.CHTMLadjustAccent(values);
20042013
if (values.remapchars) c = values.remapchars[c]||c;
@@ -2469,7 +2478,7 @@
24692478
if (bmml) {
24702479
if ((bmml.type === "mrow" || bmml.type === "mstyle") && bmml.data.length === 1) bmml = bmml.data[0];
24712480
if (bmml.type === "mi" || bmml.type === "mo") {
2472-
if (bmml.data.join("").length === 1 && bbox.rscale === 1 && !bbox.sH &&
2481+
if (CHTML.isChar(bmml.data.join("")) && bbox.rscale === 1 && !bbox.sH &&
24732482
!bmml.Get("largeop")) {u = v = 0}
24742483
}
24752484
}

unpacked/jax/output/HTML-CSS/autoload/mmultiscripts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
6464
if (base.bbox.ic) {delta = base.bbox.ic}
6565
if (this.data[this.base] &&
6666
(this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
67-
if (this.data[this.base].data.join("").length === 1 && base.bbox.scale === 1 &&
67+
if (HTMLCSS.isChar(this.data[this.base].data.join("")) && base.bbox.scale === 1 &&
6868
!this.data[this.base].Get("largeop")) {u = v = 0}
6969
}
7070
var min = this.getValues("subscriptshift","superscriptshift"), mu = this.HTMLgetMu(span);

unpacked/jax/output/HTML-CSS/fonts/STIX-Web/fontdata.js

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -152,10 +152,29 @@
152152
},
153153

154154
VARIANT: {
155-
"normal": {remap: {0x007C: [0x007C, "-STIX-Web-variant"]}, fonts: [MAIN,MONOSPACE,LATIN,ALPHABETS,MARKS,ARROWS,OPERATORS,SYMBOLS,SHAPES,MISC,VARIANTS,SIZE1]},
156-
"bold": {fonts: [MAINBOLD,NORMALBOLD,FRAKTURBOLD,DOUBLESTRUCKBOLD,SANSSERIFBOLD,LATINBOLD,ALPHABETSBOLD,MARKSBOLD,ARROWSBOLD,OPERATORSBOLD,SYMBOLSBOLD,SHAPESBOLD,MISCBOLD,VARIANTSBOLD,SIZE1], bold:true},
157-
"italic": {fonts: [MAINITALIC,NORMALITALIC,SCRIPTITALIC,DOUBLESTRUCKITALIC,SANSSERIFITALIC,LATINITALIC,ALPHABETSITALIC,MARKSITALIC,MISCITALIC,VARIANTSITALIC,SIZE1], italic:true},
158-
"bold-italic": {fonts: [MAINBOLDITALIC,NORMALBOLDITALIC,SCRIPTBOLDITALIC,DOUBLESTRUCKBOLDITALIC,SANSSERIFBOLDITALIC,LATINBOLDITALIC,ALPHABETSBOLDITALIC,MARKSBOLDITALIC,SHAPESBOLDITALIC,MISCBOLDITALIC,VARIANTSBOLDITALIC,SIZE1], bold: true, italic:true},
155+
"normal": {
156+
fonts: [MAIN,MONOSPACE,LATIN,ALPHABETS,MARKS,ARROWS,OPERATORS,SYMBOLS,SHAPES,MISC,VARIANTS,SIZE1],
157+
remap: {0x007C: [0x007C, "-STIX-Web-variant"]}
158+
},
159+
"bold": {
160+
fonts: [MAINBOLD,NORMALBOLD,FRAKTURBOLD,DOUBLESTRUCKBOLD,SANSSERIFBOLD,LATINBOLD,ALPHABETSBOLD,MARKSBOLD,ARROWSBOLD,OPERATORSBOLD,SYMBOLSBOLD,SHAPESBOLD,MISCBOLD,VARIANTSBOLD,SIZE1],
161+
offsetA: 0x1D400,
162+
offsetG: 0x1D6A8,
163+
bold: true,
164+
remap: {0x2202: 0x1D6DB, 0x2207: 0x1D6C1}
165+
},
166+
"italic": {
167+
fonts: [MAINITALIC,NORMALITALIC,SCRIPTITALIC,DOUBLESTRUCKITALIC,SANSSERIFITALIC,LATINITALIC,ALPHABETSITALIC,MARKSITALIC,MISCITALIC,VARIANTSITALIC,SIZE1],
168+
offsetA: 0x1D434, offsetG: 0x1D6E2,
169+
remap: {0x1D455: 0x210E, 0x2202: 0x1D715, 0x2207: 0x1D6FB},
170+
italic: true
171+
},
172+
"bold-italic": {
173+
fonts: [MAINBOLDITALIC,NORMALBOLDITALIC,SCRIPTBOLDITALIC,DOUBLESTRUCKBOLDITALIC,SANSSERIFBOLDITALIC,LATINBOLDITALIC,ALPHABETSBOLDITALIC,MARKSBOLDITALIC,SHAPESBOLDITALIC,MISCBOLDITALIC,VARIANTSBOLDITALIC,SIZE1],
174+
offsetA: 0x1D434, offsetG: 0x1D71C,
175+
remap: {0x1D455: 0x210E, 0x2202: 0x1D74F, 0x2207: 0x1D735},
176+
bold: true, italic: true
177+
},
159178
"double-struck": {
160179
fonts: [DOUBLESTRUCK],
161180
offsetA: 0x1D538,
@@ -168,43 +187,50 @@
168187
remap: {0x1D506: 0x212D, 0x1D50B: 0x210C, 0x1D50C: 0x2111, 0x1D515: 0x211C, 0x1D51D: 0x2128}
169188
},
170189
"bold-fraktur": {
171-
fonts: [FRAKTURBOLD], bold:true,
172-
offsetA: 0x1D56C
190+
fonts: [FRAKTURBOLD],
191+
offsetA: 0x1D56C,
192+
bold: true
173193
},
174194
"script": {
175-
fonts: [SCRIPTITALIC], italic:true,
195+
fonts: [SCRIPTITALIC],
176196
offsetA: 0x1D49C,
197+
italic: true,
177198
remap: {0x1D49D: 0x212C, 0x1D4A0: 0x2130, 0x1D4A1: 0x2131, 0x1D4A3: 0x210B, 0x1D4A4: 0x2110, 0x1D4A7: 0x2112, 0x1D4A8: 0x2133, 0x1D4AD: 0x211B, 0x1D4BA: 0x212F, 0x1D4BC: 0x210A, 0x1D4C4: 0x2134}
178199
},
179200
"bold-script": {
180-
fonts: [SCRIPTBOLDITALIC], bold:true, italic:true,
181-
offsetA: 0x1D4D0
201+
fonts: [SCRIPTBOLDITALIC],
202+
offsetA: 0x1D4D0,
203+
bold:true, italic: true
182204
},
183205
"sans-serif": {
184206
fonts: [SANSSERIF],
185207
offsetA: 0x1D5A0,
186208
offsetN: 0x1D7E2,
187-
offsetG: 0xE17D,
188-
offsetE: 0xE17D
209+
offsetP: 0xE17D,
210+
remap: {0x2202: 0xE17C}
189211
},
190212
"bold-sans-serif": {
191-
fonts: [SANSSERIFBOLD], bold:true,
213+
fonts: [SANSSERIFBOLD],
192214
offsetA: 0x1D5D4,
193215
offsetN: 0x1D7EC,
194-
offsetG: 0x1D756
216+
offsetG: 0x1D756,
217+
remap: {0x2202: 0x1D789, 0x2207: 0x1D76F}
195218
},
196219
"sans-serif-italic": {
197220
fonts: [SANSSERIFITALIC], italic: true,
198221
offsetA: 0x1D608,
199222
offsetN: 0xE1B4,
200-
offsetG: 0xE1BF,
201-
offsetE: 0xE1BF
223+
offsetP: 0xE1BF,
224+
remap: {0x2202: 0xE1BE},
225+
bold: true
202226
},
203227
"sans-serif-bold-italic": {
204-
fonts: [SANSSERIFBOLDITALIC], bold:true, italic: true,
228+
fonts: [SANSSERIFBOLDITALIC],
205229
offsetA: 0x1D63C,
206230
offsetN: 0xE1F6,
207-
offsetG: 0x1D790
231+
offsetG: 0x1D790,
232+
remap: {0x2202: 0x1D7C3, 0x2207: 0x1D7A9},
233+
bold: true, italic: true
208234
},
209235
"monospace": {
210236
fonts: [MONOSPACE],
@@ -225,10 +251,14 @@
225251
{name: "alpha", low: 0x61, high: 0x7A, offset: "A", add: 26},
226252
{name: "Alpha", low: 0x41, high: 0x5A, offset: "A"},
227253
{name: "number", low: 0x30, high: 0x39, offset: "N"},
228-
{name: "greek-non-unicode", low: 0x03B1, high: 0x03C9, offset: "E", add: 25},
229254
{name: "greek", low: 0x03B1, high: 0x03C9, offset: "G", add: 26},
230-
{name: "Greek", low: 0x0391, high: 0x03F6, offset: "G",
231-
remap: {0x03F5: 52, 0x03D1: 53, 0x03F0: 54, 0x03D5: 55, 0x03F1: 56, 0x03D6: 57, 0x03F4: 17}}
255+
{name: "Greek", low: 0x0391, high: 0x03A9, offset: "G"},
256+
{name: "vargreek", low: 0x03D1, high: 0x03F6, offset: "G", remapOnly: true,
257+
remap: {0x03F5: 52, 0x03D1: 53, 0x03F0: 54, 0x03D5: 55, 0x03F1: 56, 0x03D6: 57, 0x03F4: 17}},
258+
{name: "PUAgreek", low: 0x03B1, high: 0x03C9, offset: "P", add: 25},
259+
{name: "PUAGreek", low: 0x0391, high: 0x03A9, offset: "P"},
260+
{name: "varPUAgreek", low: 0x03D1, high: 0x03F6, offset: "P", remapOnly: true,
261+
remap: {0x03F5: 50, 0x03D1: 51, 0x03D5: 52, 0x03F1: 53, 0x03D6: 54, 0x03F4: 17}}
232262
],
233263

234264
RULECHAR: 0x23AF,

unpacked/jax/output/HTML-CSS/fonts/STIX/fontdata.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,12 @@
7575
"normal": {fonts: [GENERAL,NONUNI,SIZE1],
7676
remap: {0x2205: [0x2205,"-STIX-variant"], // \emptyset
7777
0x7C: [0x7C,"-STIX-variant"]}}, // absolute value
78-
"bold": {fonts: [BOLD,"STIXNonUnicode-bold","STIXSizeOneSym-bold"], bold:true},
79-
"italic": {fonts: [ITALIC,NONUNII,GENERAL,NONUNI,SIZE1], italic:true},
80-
"bold-italic": {fonts: [BITALIC,"STIXNonUnicode-bold-italic"], bold:true, italic:true},
78+
"bold": {fonts: [BOLD,"STIXNonUnicode-bold","STIXSizeOneSym-bold"], offsetA: 0x1D400, offsetG: 0x1D6A8, bold:true,
79+
remap: {0x2202: 0x1D6DB, 0x2207: 0x1D6C1}},
80+
"italic": {fonts: [ITALIC,NONUNII,GENERAL,NONUNI,SIZE1], offsetA: 0x1D434, offsetG: 0x1D6E2, italic:true,
81+
remap: {0x1D455: 0x210E, 0x2202: 0x1D715, 0x2207: 0x1D6FB}},
82+
"bold-italic": {fonts: [BITALIC,"STIXNonUnicode-bold-italic"], offsetA: 0x1D434, offsetG: 0x1D71C, bold:true, italic:true,
83+
remap: {0x1D455: 0x210E, 0x2202: 0x1D74F, 0x2207: 0x1D735}},
8184
"double-struck": {offsetA: 0x1D538, offsetN: 0x1D7D8,
8285
remap: {0x1D53A: 0x2102, 0x1D53F: 0x210D, 0x1D545: 0x2115, 0x1D547: 0x2119,
8386
0x1D548: 0x211A, 0x1D549: 0x211D, 0x1D551: 0x2124}},
@@ -89,10 +92,14 @@
8992
0x1D4A4: 0x2110, 0x1D4A7: 0x2112, 0x1D4A8: 0x2133, 0x1D4AD: 0x211B,
9093
0x1D4BA: 0x212F, 0x1D4BC: 0x210A, 0x1D4C4: 0x2134}},
9194
"bold-script": {fonts: [BITALIC], offsetA: 0x1D4D0, bold:true, italic:true},
92-
"sans-serif": {offsetA: 0x1D5A0, offsetN: 0x1D7E2, offsetG: 0xE17D, offsetE: 0xE17D},
93-
"bold-sans-serif": {offsetA: 0x1D5D4, offsetG: 0x1D756, offsetN: 0x1D7EC, bold:true},
94-
"sans-serif-italic": {fonts: [ITALIC,NONUNII], offsetA: 0x1D608, offsetN: 0xE1B4, offsetG: 0xE1BF, offsetE: 0xE1BF, italic:true},
95-
"sans-serif-bold-italic": {fonts: [BITALIC,"STIXNonUnicode-bold-italic"], offsetA: 0x1D63C, offsetN: 0xE1F6, offsetG: 0x1D790, bold:true, italic:true},
95+
"sans-serif": {offsetA: 0x1D5A0, offsetN: 0x1D7E2, offsetP: 0xE17D,
96+
remap: {0x2202: 0xE17C}},
97+
"bold-sans-serif": {offsetA: 0x1D5D4, offsetG: 0x1D756, offsetN: 0x1D7EC, bold:true,
98+
remap: {0x2202: 0x1D789, 0x2207: 0x1D76F}},
99+
"sans-serif-italic": {fonts: [ITALIC,NONUNII], offsetA: 0x1D608, offsetN: 0xE1B4, offsetP: 0xE1BF, italic:true,
100+
remap: {0x2202: 0xE1BE}},
101+
"sans-serif-bold-italic": {fonts: [BITALIC,"STIXNonUnicode-bold-italic"], offsetA: 0x1D63C, offsetN: 0xE1F6, offsetG: 0x1D790, bold:true, italic:true,
102+
remap: {0x2202: 0x1D7C3, 0x2207: 0x1D7A9}},
96103
"monospace": {offsetA: 0x1D670, offsetN: 0x1D7F6,
97104
remap: {0x20: [0x20,"-STIX-variant"], 0xA0: [0xA0,"-STIX-variant"]}}, // use a special space for monospace (see below)
98105
"-STIX-variant": {fonts:["STIXVariants",NONUNI,GENERAL],
@@ -125,10 +132,14 @@
125132
{name: "alpha", low: 0x61, high: 0x7A, offset: "A", add: 26},
126133
{name: "Alpha", low: 0x41, high: 0x5A, offset: "A"},
127134
{name: "number", low: 0x30, high: 0x39, offset: "N"},
128-
{name: "greek-non-unicode", low: 0x03B1, high: 0x03C9, offset: "E", add: 25},
129135
{name: "greek", low: 0x03B1, high: 0x03C9, offset: "G", add: 26},
130-
{name: "Greek", low: 0x0391, high: 0x03F6, offset: "G",
131-
remap: {0x03F5: 53, 0x03D1: 54, 0x03F0: 55, 0x03D5: 56, 0x03F1: 57, 0x03D6: 58, 0x03F4: 17}}
136+
{name: "Greek", low: 0x0391, high: 0x03A9, offset: "G"},
137+
{name: "vargreek", low: 0x03D1, high: 0x03F6, offset: "G", remapOnly: true,
138+
remap: {0x03F5: 52, 0x03D1: 53, 0x03F0: 54, 0x03D5: 55, 0x03F1: 56, 0x03D6: 57, 0x03F4: 17}},
139+
{name: "PUAgreek", low: 0x03B1, high: 0x03C9, offset: "P", add: 25},
140+
{name: "PUAGreek", low: 0x0391, high: 0x03A9, offset: "P"},
141+
{name: "varPUAgreek", low: 0x03D1, high: 0x03F6, offset: "P", remapOnly: true,
142+
remap: {0x03F5: 50, 0x03D1: 51, 0x03D5: 52, 0x03F1: 53, 0x03D6: 54, 0x03F4: 17}}
132143
],
133144

134145
RULECHAR: 0x203E,

unpacked/jax/output/HTML-CSS/jax.js

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,6 +1577,7 @@
15771577
if (RANGES[id].remap && RANGES[id].remap[n]) {
15781578
n = N + RANGES[id].remap[n];
15791579
} else {
1580+
if (RANGES[id].remapOnly) break;
15801581
n = n - RANGES[id].low + N;
15811582
if (RANGES[id].add) {n += RANGES[id].add}
15821583
}
@@ -1622,7 +1623,7 @@
16221623
span.bbox.h *= span.scale; span.bbox.d *= span.scale;
16231624
span.bbox.w *= span.scale; span.bbox.lw *= span.scale; span.bbox.rw *= span.scale;
16241625
}
1625-
if (text.length == 1 && font.skew && font.skew[n]) {span.bbox.skew = font.skew[n]}
1626+
if (HTMLCSS.isChar(text) && font.skew && font.skew[n]) {span.bbox.skew = font.skew[n]}
16261627
},
16271628
checkFont: function (font,style) {
16281629
var weight = (style.fontWeight||"normal");
@@ -1725,6 +1726,13 @@
17251726
HUB.signal.Post(["HTML-CSS Jax - unknown char",n,variant]);
17261727
return unknown;
17271728
},
1729+
1730+
isChar: function (text) {
1731+
if (text.length === 1) return true;
1732+
if (text.length !== 2) return false;
1733+
var n = text.charCodeAt(0);
1734+
return (n >= 0xD800 && n < 0xDBFF);
1735+
},
17281736

17291737
findBlock: function (font,c) {
17301738
if (font.Ranges) {
@@ -2292,8 +2300,8 @@
22922300
{if (this.data[i]) {this.data[i].toHTML(span,variant)}}
22932301
if (!span.bbox) {span.bbox = this.HTMLzeroBBox()}
22942302
var text = this.data.join(""), bbox = span.bbox;
2295-
if (bbox.skew && text.length !== 1) {delete bbox.skew}
2296-
if (bbox.rw > bbox.w && text.length === 1 && !variant.noIC) {
2303+
if (bbox.skew && !HTMLCSS.isChar(text)) {delete bbox.skew}
2304+
if (bbox.rw > bbox.w && HTMLCSS.isChar(text) && !variant.noIC) {
22972305
bbox.ic = bbox.rw - bbox.w;
22982306
HTMLCSS.createBlank(span,bbox.ic/this.mscale);
22992307
bbox.w = bbox.rw;
@@ -2318,7 +2326,7 @@
23182326
}
23192327
}
23202328
if (!span.bbox) {span.bbox = this.HTMLzeroBBox()}
2321-
if (this.data.join("").length !== 1) {delete span.bbox.skew}
2329+
if (!HTMLCSS.isChar(this.data.join(""))) {delete span.bbox.skew}
23222330
this.HTMLhandleSpace(span);
23232331
this.HTMLhandleColor(span);
23242332
this.HTMLhandleDir(span);
@@ -2344,8 +2352,8 @@
23442352
var parent = this.CoreParent(),
23452353
isScript = (parent && parent.isa(MML.msubsup) && this !== parent.data[parent.base]),
23462354
mapchars = (isScript?this.remapChars:null);
2347-
if (text.length === 1 && parent && parent.isa(MML.munderover) &&
2348-
this.CoreText(parent.data[parent.base]).length === 1) {
2355+
if (HTMLCSS.isChar(text) && parent && parent.isa(MML.munderover) &&
2356+
HTMLCSS.isChar(his.CoreText(parent.data[parent.base]))) {
23492357
var over = parent.data[parent.over], under = parent.data[parent.under];
23502358
if (over && this === over.CoreMO() && parent.Get("accent")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENT}
23512359
else if (under && this === under.CoreMO() && parent.Get("accentunder")) {mapchars = HTMLCSS.FONTDATA.REMAPACCENTUNDER}
@@ -2361,12 +2369,12 @@
23612369
for (var i = 0, m = this.data.length; i < m; i++)
23622370
{if (this.data[i]) {this.data[i].toHTML(span,variant,this.remap,mapchars)}}
23632371
if (!span.bbox) {span.bbox = this.HTMLzeroBBox()}
2364-
if (text.length !== 1) {delete span.bbox.skew}
2372+
if (!HTMLCSS.isChar(text)) {delete span.bbox.skew}
23652373

23662374
//
23672375
// Handle combining character bugs
23682376
//
2369-
if (HTMLCSS.AccentBug && span.bbox.w === 0 && text.length === 1 && span.firstChild) {
2377+
if (HTMLCSS.AccentBug && span.bbox.w === 0 && HTMLCSS.isChar(text) && span.firstChild) {
23702378
//
23712379
// adding a non-breaking space and removing that width
23722380
//
@@ -2410,7 +2418,7 @@
24102418
if (c.length > 1) {return false}
24112419
var parent = this.CoreParent();
24122420
if (parent && parent.isa(MML.munderover) &&
2413-
this.CoreText(parent.data[parent.base]).length === 1) {
2421+
HTMLCSS.isChar(this.CoreText(parent.data[parent.base]))) {
24142422
var over = parent.data[parent.over], under = parent.data[parent.under];
24152423
if (over && this === over.CoreMO() && parent.Get("accent")) {c = HTMLCSS.FONTDATA.REMAPACCENT[c]||c}
24162424
else if (under && this === under.CoreMO() && parent.Get("accentunder")) {c = HTMLCSS.FONTDATA.REMAPACCENTUNDER[c]||c}
@@ -2472,7 +2480,7 @@
24722480
for (var i = 0, m = this.data.length; i < m; i++)
24732481
{if (this.data[i]) {this.data[i].toHTML(span,variant)}}
24742482
if (!span.bbox) {span.bbox = this.HTMLzeroBBox()}
2475-
if (this.data.join("").length !== 1) {delete span.bbox.skew}
2483+
if (!HTMLCSS.isChar(this.data.join(""))) {delete span.bbox.skew}
24762484
this.HTMLhandleSpace(span);
24772485
this.HTMLhandleColor(span);
24782486
this.HTMLhandleDir(span);
@@ -2938,7 +2946,7 @@
29382946
}
29392947
if (this.data[this.base] && HW == null && D == null &&
29402948
(this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
2941-
if (this.data[this.base].data.join("").length === 1 && children[0].scale === 1 &&
2949+
if (HTMLCSS.isChar(this.data[this.base].data.join("")) && children[0].scale === 1 &&
29422950
!this.data[this.base].Get("largeop")) {u = v = 0}
29432951
}
29442952
var min = this.getValues("subscriptshift","superscriptshift");

unpacked/jax/output/SVG/autoload/mmultiscripts.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () {
4646
if (base.ic) {delta = base.ic}
4747
if (this.data[this.base] &&
4848
(this.data[this.base].type === "mi" || this.data[this.base].type === "mo")) {
49-
if (this.data[this.base].data.join("").length === 1 && base.scale === 1 &&
49+
if (SVG.isChar(this.data[this.base].data.join("")) && base.scale === 1 &&
5050
!base.stretched && !this.data[this.base].Get("largeop")) {u = v = 0}
5151
}
5252
var min = this.getValues("subscriptshift","superscriptshift"), mu = this.SVGgetMu(svg);

0 commit comments

Comments
 (0)