Fix problem with linebreaking where the incorrect width was being used to determine breakpoint penalties, so some long lines were not being broken

This commit is contained in:
Davide P. Cervone 2012-03-06 10:04:09 -05:00
parent b08db7d93e
commit 93e68cc254
4 changed files with 12 additions and 12 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,7 @@
*/
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
var VERSION = "2.0";
var VERSION = "2.0.1";
var MML = MathJax.ElementJax.mml,
HTMLCSS = MathJax.OutputJax["HTML-CSS"];
@ -149,12 +149,12 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
m = this.data.length, W, scanW = info.W,
broken = (info.index.length > 0), better = false;
if (i == null) {i = -1}; if (!broken) {i++; info.W += info.w};
info.w = 0; info.nest++;
info.w = 0; info.nest++; info.scanW = scanW;
//
// Look through the line for breakpoints,
// (as long as we are not too far past the breaking width)
//
while (i < m && info.W < 1.33*HTMLCSS.linebreakWidth) {
while (i < m && info.scanW < 1.33*HTMLCSS.linebreakWidth) {
if (this.data[i]) {
if (this.data[i].HTMLbetterBreak(info,state)) {
better = true; index = [i].concat(info.index); W = info.W;
@ -392,7 +392,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
//
// Get the default penalty for this location
//
var W = info.W, mo = (info.embellished||this); delete info.embellished;
var W = info.scanW, mo = (info.embellished||this); delete info.embellished;
var span = mo.HTMLspanElement(), w = span.bbox.w;
if (span.style.paddingLeft) {w += parseFloat(span.style.paddingLeft)}
if (values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER) {W += w; w = 0}
@ -444,7 +444,7 @@ MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
//
// Get the default penalty for this location
//
var W = info.W, span = this.HTMLspanElement(), w = span.bbox.w;
var W = info.scanW, span = this.HTMLspanElement(), w = span.bbox.w;
if (span.style.paddingLeft) {w += parseFloat(span.style.paddingLeft)}
if (values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER) {W += w; w = 0}
if (W - info.shift === 0) {return false} // don't break at zero width (FIXME?)

View File

@ -22,7 +22,7 @@
*/
MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () {
var VERSION = "2.0";
var VERSION = "2.0.1";
var MML = MathJax.ElementJax.mml,
SVG = MathJax.OutputJax.SVG,
BBOX = SVG.BBOX;
@ -152,12 +152,12 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () {
m = this.data.length, W, scanW = info.W,
broken = (info.index.length > 0), better = false;
if (i == null) {i = -1}; if (!broken) {i++; info.W += info.w};
info.w = 0; info.nest++;
info.w = 0; info.nest++; info.scanW = scanW;
//
// Look through the line for breakpoints,
// (as long as we are not too far past the breaking width)
//
while (i < m && info.W < 1.33*SVG.linebreakWidth) {
while (i < m && info.scanW < 1.33*SVG.linebreakWidth) {
if (this.data[i]) {
if (this.data[i].SVGbetterBreak(info,state)) {
better = true; index = [i].concat(info.index); W = info.W;
@ -350,7 +350,7 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () {
//
// Get the default penalty for this location
//
var W = info.W, mo = (info.embellished||this); delete info.embellished;
var W = info.scanW, mo = (info.embellished||this); delete info.embellished;
var svg = mo.SVGdata, w = svg.w + svg.x;
if (values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER) {W += w; w = 0}
if (W - info.shift === 0) {return false} // don't break at zero width (FIXME?)
@ -401,7 +401,7 @@ MathJax.Hub.Register.StartupHook("SVG Jax Ready",function () {
//
// Get the default penalty for this location
//
var W = info.W, svg = this.SVGdata, w = svg.w + svg.x;
var W = info.scanW, svg = this.SVGdata, w = svg.w + svg.x;
if (values.linebreakstyle === MML.LINEBREAKSTYLE.AFTER) {W += w; w = 0}
if (W - info.shift === 0) {return false} // don't break at zero width (FIXME?)
var offset = SVG.linebreakWidth - W;