Merge pull request #527 from fred-wang/issue482
This resolves issue #482.
This commit is contained in:
commit
4263db98d3
|
@ -444,7 +444,14 @@
|
|||
negativemediummathspace: "-.2222em",
|
||||
negativethickmathspace: "-.2778em",
|
||||
negativeverythickmathspace: "-.3333em",
|
||||
negativeveryverythickmathspace: "-.3889em"
|
||||
negativeveryverythickmathspace: "-.3889em",
|
||||
veryverythinmathspace: ".0556em",
|
||||
verythinmathspace: ".1111em",
|
||||
thinmathspace: ".1667em",
|
||||
mediummathspace: ".2222em",
|
||||
thickmathspace: ".2778em",
|
||||
verythickmathspace: ".3333em",
|
||||
veryverythickmathspace: ".3889em"
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1088,6 +1095,138 @@
|
|||
}
|
||||
});
|
||||
|
||||
MML.mi.Augment({
|
||||
toNativeMML: function (parent) {
|
||||
this.SUPER(arguments).toNativeMML.call(this,parent);
|
||||
if (nMML.miItalicBug) {
|
||||
if (this.Get("mathvariant") === MML.VARIANT.NORMAL) {
|
||||
//
|
||||
// When not explicitly specified, mathvariant is set to "italic"
|
||||
// with single char mi and to "normal" with multiple char mi.
|
||||
// Some browsers always set the default to "italic", so let's
|
||||
// attach an explicit mathvariant="normal" attribute.
|
||||
//
|
||||
var mi = parent.lastChild;
|
||||
mi.setAttribute("mathvariant",MML.VARIANT.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MML.mo.Augment({
|
||||
toNativeMML: function (parent) {
|
||||
this.SUPER(arguments).toNativeMML.call(this,parent);
|
||||
if (nMML.webkitMoSpacingBug) {
|
||||
//
|
||||
// WebKit does not support lspace/rspace values around operators
|
||||
// (neither explicit nor given by the operator dictionary) and uses
|
||||
// constant values instead. So let's modify the CSS properties here.
|
||||
//
|
||||
|
||||
var lspace = 0, rspace = 0, p = this.parent;
|
||||
if (p && p.type === "mrow" && (p.inferred || !p.isEmbellished())) {
|
||||
//
|
||||
// Retrieve the values of lspace/rspace and convert named spaces.
|
||||
// Other values (except unitless) will be parsed by the CSS engine.
|
||||
//
|
||||
var values = this.getValues("lspace", "rspace");
|
||||
lspace = values.lspace, rspace = values.rspace;
|
||||
if (nMML.NAMEDSPACE[lspace]) {lspace = nMML.NAMEDSPACE[lspace]}
|
||||
if (nMML.NAMEDSPACE[rspace]) {rspace = nMML.NAMEDSPACE[rspace]}
|
||||
}
|
||||
|
||||
//
|
||||
// Now update -webkit-margin-start and -webkit-margin-end.
|
||||
//
|
||||
var mo = parent.lastChild;
|
||||
var span = HTML.Element("span");
|
||||
span.style.cssText = (mo.getAttribute("style")||"");
|
||||
span.style.setProperty("-webkit-margin-start", lspace);
|
||||
span.style.setProperty("-webkit-margin-end", rspace);
|
||||
mo.setAttribute("style",span.style.cssText);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MML.mmultiscripts.Augment({
|
||||
toNativeMML: function (parent) {
|
||||
//
|
||||
// Some browsers do not implement the mmultiscripts element.
|
||||
// Try to emulate the support using basic script elements.
|
||||
//
|
||||
if (!nMML.mmultiscriptsBug || this.data.length === 0 ) {
|
||||
this.SUPER(arguments).toNativeMML.call(this,parent);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// The children of the mmultiscripts will be wrapped in an mrow so that
|
||||
// attributes and properties set on the original mmultiscripts will
|
||||
// be reflected on this mrow element.
|
||||
//
|
||||
var tag = this.NativeMMLelement("mrow");
|
||||
this.NativeMMLattributes(tag);
|
||||
|
||||
//
|
||||
// Create the base
|
||||
//
|
||||
if (this.data[0]) {this.data[0].toNativeMML(tag)}
|
||||
else {tag.appendChild(this.NativeMMLelement("mrow"))}
|
||||
base = tag.removeChild(tag.lastChild);
|
||||
|
||||
//
|
||||
// Process the postscript pairs
|
||||
//
|
||||
var m = this.data.length, i;
|
||||
for (i = 1; i < m; i+=2) {
|
||||
if (this.data[i].type === "mprescripts") break;
|
||||
|
||||
var msubsup = this.NativeMMLelement("msubsup");
|
||||
msubsup.appendChild(base);
|
||||
|
||||
//
|
||||
// append the subscript
|
||||
//
|
||||
if (this.data[i]) {this.data[i].toNativeMML(msubsup)}
|
||||
else {msubsup.appendChild(this.NativeMMLelement("mrow"))}
|
||||
|
||||
//
|
||||
// append the supscript
|
||||
//
|
||||
if (i+1 < m && this.data[i+1]) {this.data[i+1].toNativeMML(msubsup)}
|
||||
else {msubsup.appendChild(this.NativeMMLelement("mrow"))}
|
||||
|
||||
base = msubsup;
|
||||
}
|
||||
|
||||
tag.appendChild(base);
|
||||
|
||||
//
|
||||
// Process the prescript pairs
|
||||
//
|
||||
for (i++; i < m; i+=2) {
|
||||
var msubsup = this.NativeMMLelement("msubsup");
|
||||
msubsup.appendChild(this.NativeMMLelement("mrow"));
|
||||
|
||||
//
|
||||
// append the presubscript
|
||||
//
|
||||
if (this.data[i]) {this.data[i].toNativeMML(msubsup)}
|
||||
else {msubsup.appendChild(this.NativeMMLelement("mrow"))}
|
||||
|
||||
//
|
||||
// append the presupscript
|
||||
//
|
||||
if (i+1 < m && this.data[i+1]) {this.data[i+1].toNativeMML(msubsup)}
|
||||
else {msubsup.appendChild(this.NativeMMLelement("mrow"))}
|
||||
|
||||
tag.insertBefore(msubsup, base);
|
||||
}
|
||||
|
||||
parent.appendChild(tag);
|
||||
}
|
||||
});
|
||||
|
||||
HUB.Register.StartupHook("TeX mathchoice Ready",function () {
|
||||
MML.TeXmathchoice.Augment({
|
||||
//
|
||||
|
@ -1120,6 +1259,8 @@
|
|||
nMML.stretchyMoBug = true;
|
||||
nMML.tableLabelBug = true;
|
||||
nMML.mfencedBug = true;
|
||||
nMML.miBug = true;
|
||||
nMML.mmultiscriptsBug = true;
|
||||
},
|
||||
Firefox: function (browser) {
|
||||
nMML.ffTableWidthBug = !browser.versionAtLeast("13.0"); // <mtable width="xx"> not implemented
|
||||
|
@ -1144,6 +1285,10 @@
|
|||
nMML.tableSpacingBug = true;
|
||||
nMML.tableLabelBug = true;
|
||||
nMML.mfencedBug = true;
|
||||
nMML.miItalicBug = true;
|
||||
nMML.webkitMoSpacingBug = true;
|
||||
nMML.spaceWidthBug = true;
|
||||
nMML.mmultiscriptsBug = true;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user