From cb04ee618c821a633ce6f49c2d9d72f65ce40ea9 Mon Sep 17 00:00:00 2001 From: "Davide P. Cervone" Date: Mon, 21 Apr 2014 18:16:31 -0400 Subject: [PATCH] Fix problems with linebreaks in fractions (scaling of lineleading, proper detection of auto indentalign, etc.) --- .../jax/output/HTML-CSS/autoload/multiline.js | 5 ++-- unpacked/jax/output/SVG/autoload/multiline.js | 4 +-- unpacked/jax/output/SVG/jax.js | 27 ++++++++++--------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/unpacked/jax/output/HTML-CSS/autoload/multiline.js b/unpacked/jax/output/HTML-CSS/autoload/multiline.js index 2f7802542..2c8584a8c 100644 --- a/unpacked/jax/output/HTML-CSS/autoload/multiline.js +++ b/unpacked/jax/output/HTML-CSS/autoload/multiline.js @@ -90,6 +90,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { // this.HTMLremoveColor(span); var stack = HTMLCSS.createStack(span); + this.HTMLgetScale(); var state = { n: 0, Y: 0, scale: this.scale || 1, @@ -219,7 +220,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { // if (state.n > 0) { var LHD = HTMLCSS.FONTDATA.baselineskip * state.scale; - var leading = (state.values.lineleading == null ? state.VALUES : state.values).lineleading; + var leading = (state.values.lineleading == null ? state.VALUES : state.values).lineleading * state.scale; state.Y -= Math.max(LHD,state.d + line.bbox.h + leading); } // @@ -252,7 +253,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () { else if (state.isLast) {shift = prev.indentshiftlast || def.indentshiftlast} else {shift = prev.indentshift || def.indentshift} if (shift === MML.INDENTSHIFT.INDENTSHIFT) {shift = prev.indentshift || def.indentshift} - if (shift === MML.INDENTSHIFT.AUTO || shift === "") {shift = (state.isTSop ? this.displayIndent : "0")} + if (shift === "auto" || shift === "") {shift = (state.isTSop ? this.displayIndent : "0")} return HTMLCSS.length2em(shift,0); }, diff --git a/unpacked/jax/output/SVG/autoload/multiline.js b/unpacked/jax/output/SVG/autoload/multiline.js index f3b5c90b1..62e9f4c50 100644 --- a/unpacked/jax/output/SVG/autoload/multiline.js +++ b/unpacked/jax/output/SVG/autoload/multiline.js @@ -222,7 +222,7 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () { // if (state.n > 0) { var LHD = SVG.FONTDATA.baselineskip * state.scale; - var leading = (state.values.lineleading == null ? state.VALUES : state.values).lineleading; + var leading = (state.values.lineleading == null ? state.VALUES : state.values).lineleading * state.scale; state.Y -= Math.max(LHD,state.d + line.h + leading); } // @@ -255,7 +255,7 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () { else if (state.isLast) {shift = prev.indentshiftlast || def.indentshiftlast} else {shift = prev.indentshift || def.indentshift} if (shift === MML.INDENTSHIFT.INDENTSHIFT) {shift = prev.indentshift || def.indentshift} - if (shift === MML.INDENTSHIFT.AUTO || shift === "") {shift = (state.isTSop ? this.displayIndent : "0")} + if (shift === "auto" || shift === "") {shift = (state.isTSop ? this.displayIndent : "0")} return SVG.length2em(shift,0); }, diff --git a/unpacked/jax/output/SVG/jax.js b/unpacked/jax/output/SVG/jax.js index 7b760b0d1..ac3530d53 100644 --- a/unpacked/jax/output/SVG/jax.js +++ b/unpacked/jax/output/SVG/jax.js @@ -1286,18 +1286,21 @@ }, SVGgetScale: function (svg) { - if (this.mscale) {return this.scale * this.mscale} - var scale = 1, - values = this.getValues("mathsize","scriptlevel","fontsize"); - if ((this.styles||{}).fontSize && !values.fontsize) {values.fontsize = this.styles.fontSize} - if (values.fontsize && !this.mathsize) {values.mathsize = values.fontsize} - if (values.scriptlevel !== 0) { - if (values.scriptlevel > 2) {values.scriptlevel = 2} - scale = Math.pow(this.Get("scriptsizemultiplier"),values.scriptlevel); - values.scriptminsize = SVG.length2em(this.Get("scriptminsize"))/1000; - if (scale < values.scriptminsize) {scale = values.scriptminsize} - } - this.scale = scale; this.mscale = SVG.length2em(values.mathsize)/1000; + var scale = 1; + if (this.mscale) { + scale = this.scale; + } else { + var values = this.getValues("mathsize","scriptlevel","fontsize"); + if ((this.styles||{}).fontSize && !values.fontsize) {values.fontsize = this.styles.fontSize} + if (values.fontsize && !this.mathsize) {values.mathsize = values.fontsize} + if (values.scriptlevel !== 0) { + if (values.scriptlevel > 2) {values.scriptlevel = 2} + scale = Math.pow(this.Get("scriptsizemultiplier"),values.scriptlevel); + values.scriptminsize = SVG.length2em(this.Get("scriptminsize"))/1000; + if (scale < values.scriptminsize) {scale = values.scriptminsize} + } + this.scale = scale; this.mscale = SVG.length2em(values.mathsize)/1000; + } if (svg) {svg.scale = scale; if (this.isToken) {svg.scale *= this.mscale}} return scale * this.mscale; },