Break CHTMLhandleStyle() into two parts, one that sets the styles and removes the unwanted ones, and CHTMLhandleBBox() that adjustst the BBOX based on the styles. Use this to handle inheritance of font-family, font-weight, and font-style from mstyle with style attributes.
This commit is contained in:
parent
3d371041a6
commit
f570364139
|
@ -1055,6 +1055,7 @@
|
||||||
CHTMLdefaultNode: function (node,options) {
|
CHTMLdefaultNode: function (node,options) {
|
||||||
if (!options) options = {};
|
if (!options) options = {};
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
|
this.CHTMLhandleStyle(node);
|
||||||
if (this.isToken) this.CHTMLgetVariant();
|
if (this.isToken) this.CHTMLgetVariant();
|
||||||
var m = Math.max((options.minChildren||0),this.data.length);
|
var m = Math.max((options.minChildren||0),this.data.length);
|
||||||
for (var i = 0; i < m; i++) this.CHTMLaddChild(node,i,options);
|
for (var i = 0; i < m; i++) this.CHTMLaddChild(node,i,options);
|
||||||
|
@ -1062,7 +1063,7 @@
|
||||||
this.CHTML.clean();
|
this.CHTML.clean();
|
||||||
this.CHTMLhandleSpace(node);
|
this.CHTMLhandleSpace(node);
|
||||||
}
|
}
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleBBox(node);
|
||||||
this.CHTMLhandleColor(node);
|
this.CHTMLhandleColor(node);
|
||||||
return node;
|
return node;
|
||||||
},
|
},
|
||||||
|
@ -1162,15 +1163,9 @@
|
||||||
|
|
||||||
CHTMLhandleStyle: function (node) {
|
CHTMLhandleStyle: function (node) {
|
||||||
if (!this.style) return;
|
if (!this.style) return;
|
||||||
var BBOX = this.CHTML, style = node.style, i, m;
|
var BBOX = this.CHTML, style = node.style;
|
||||||
style.cssText = this.style;
|
style.cssText = this.style; this.removedStyles = {};
|
||||||
// ### FIXME: adjust for width, height, vertical-align?
|
for (var i = 0, m = CHTML.removeStyles.length; i < m; i++) {
|
||||||
for (i = 0, m = CHTML.BBOX.styleAdjust.length; i < m; i++) {
|
|
||||||
var data = CHTML.BBOX.styleAdjust[i];
|
|
||||||
if (style[data[0]]) BBOX.adjust(style[data[0]],data[1],data[2],data[3]);
|
|
||||||
}
|
|
||||||
this.removedStyles = {};
|
|
||||||
for (i = 0, m = CHTML.removeStyles.length; i < m; i++) {
|
|
||||||
var id = CHTML.removeStyles[i];
|
var id = CHTML.removeStyles[i];
|
||||||
if (style[id]) {
|
if (style[id]) {
|
||||||
this.removedStyles[id] = style[id];
|
this.removedStyles[id] = style[id];
|
||||||
|
@ -1179,6 +1174,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
CHTMLhandleBBox: function (node) {
|
||||||
|
if (!this.style) return;
|
||||||
|
var BBOX = this.CHTML, style = node.style;
|
||||||
|
// ### FIXME: adjust for width, height, vertical-align?
|
||||||
|
for (var i = 0, m = CHTML.BBOX.styleAdjust.length; i < m; i++) {
|
||||||
|
var data = CHTML.BBOX.styleAdjust[i];
|
||||||
|
if (style[data[0]]) BBOX.adjust(style[data[0]],data[1],data[2],data[3]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
CHTMLhandleColor: function (node) {
|
CHTMLhandleColor: function (node) {
|
||||||
if (this.mathcolor) {node.style.color = this.mathcolor}
|
if (this.mathcolor) {node.style.color = this.mathcolor}
|
||||||
else if (this.color) {node.style.color = this.color}
|
else if (this.color) {node.style.color = this.color}
|
||||||
|
@ -1352,9 +1357,12 @@
|
||||||
MML.mo.Augment({
|
MML.mo.Augment({
|
||||||
toCommonHTML: function (node) {
|
toCommonHTML: function (node) {
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
|
this.CHTMLhandleStyle(node);
|
||||||
|
this.CHTMLgetVariant();
|
||||||
this.CHTML = CHTML.BBOX.empty();
|
this.CHTML = CHTML.BBOX.empty();
|
||||||
|
|
||||||
var values = this.getValues("displaystyle","largeop","mathvariant");
|
var values = this.getValues("displaystyle","largeop");
|
||||||
|
values.variant = this.CHTMLvariant;
|
||||||
values.text = this.data.join("");
|
values.text = this.data.join("");
|
||||||
if (values.text == "") {
|
if (values.text == "") {
|
||||||
if (this.fence) node.style.width = CHTML.Em(CHTML.TEX.nulldelimiterspace);
|
if (this.fence) node.style.width = CHTML.Em(CHTML.TEX.nulldelimiterspace);
|
||||||
|
@ -1375,7 +1383,7 @@
|
||||||
|
|
||||||
this.CHTML.clean();
|
this.CHTML.clean();
|
||||||
this.CHTMLhandleSpace(node);
|
this.CHTMLhandleSpace(node);
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleBBox(node);
|
||||||
this.CHTMLhandleColor(node);
|
this.CHTMLhandleColor(node);
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
|
@ -1504,6 +1512,7 @@
|
||||||
MML.mspace.Augment({
|
MML.mspace.Augment({
|
||||||
toCommonHTML: function (node) {
|
toCommonHTML: function (node) {
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
|
this.CHTMLhandleStyle(node);
|
||||||
var values = this.getValues("height","depth","width");
|
var values = this.getValues("height","depth","width");
|
||||||
var w = CHTML.length2em(values.width),
|
var w = CHTML.length2em(values.width),
|
||||||
h = CHTML.length2em(values.height),
|
h = CHTML.length2em(values.height),
|
||||||
|
@ -1514,11 +1523,10 @@
|
||||||
node.style.width = CHTML.Em(w);
|
node.style.width = CHTML.Em(w);
|
||||||
node.style.height = CHTML.Em(h+d);
|
node.style.height = CHTML.Em(h+d);
|
||||||
if (d) node.style.verticalAlign = CHTML.Em(-d);
|
if (d) node.style.verticalAlign = CHTML.Em(-d);
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleBBox(node);
|
||||||
this.CHTMLhandleColor(node);
|
this.CHTMLhandleColor(node);
|
||||||
return node;
|
return node;
|
||||||
},
|
}
|
||||||
CHTMLgetVariant: function () {}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
|
@ -2036,6 +2044,7 @@
|
||||||
MML.mfenced.Augment({
|
MML.mfenced.Augment({
|
||||||
toCommonHTML: function (node) {
|
toCommonHTML: function (node) {
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
|
this.CHTMLhandleStyle(node);
|
||||||
//
|
//
|
||||||
// Make row of open, data, sep, ... data, close
|
// Make row of open, data, sep, ... data, close
|
||||||
//
|
//
|
||||||
|
@ -2056,7 +2065,7 @@
|
||||||
}
|
}
|
||||||
this.CHTMLstretchChildV("close",H,D);
|
this.CHTMLstretchChildV("close",H,D);
|
||||||
this.CHTMLhandleSpace(node);
|
this.CHTMLhandleSpace(node);
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleBBox(node);
|
||||||
this.CHTMLhandleColor(node);
|
this.CHTMLhandleColor(node);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
@ -2157,9 +2166,10 @@
|
||||||
CHTMLdefaultNode: function (node,options) {
|
CHTMLdefaultNode: function (node,options) {
|
||||||
if (!options) options = {};
|
if (!options) options = {};
|
||||||
node = this.CHTMLcreateNode(node);
|
node = this.CHTMLcreateNode(node);
|
||||||
|
this.CHTMLhandleStyle(node);
|
||||||
// skip label for now
|
// skip label for now
|
||||||
for (var i = 1, m = this.data.length; i < m; i++) this.CHTMLaddChild(node,i,options);
|
for (var i = 1, m = this.data.length; i < m; i++) this.CHTMLaddChild(node,i,options);
|
||||||
this.CHTMLhandleStyle(node);
|
this.CHTMLhandleBBox(node);
|
||||||
this.CHTMLhandleColor(node);
|
this.CHTMLhandleColor(node);
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user