From b7bf3be64eded1233bfc8ea36d73191b320dfd0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Wang?= Date: Wed, 26 Dec 2012 12:23:21 +0100 Subject: [PATCH 1/2] workaround for issue366: limit the number of repetition to build stretchy chars in HTML-CSS --- unpacked/jax/output/HTML-CSS/jax.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unpacked/jax/output/HTML-CSS/jax.js b/unpacked/jax/output/HTML-CSS/jax.js index 4517dc3f2..ed575ed3c 100644 --- a/unpacked/jax/output/HTML-CSS/jax.js +++ b/unpacked/jax/output/HTML-CSS/jax.js @@ -1130,7 +1130,7 @@ if (H > h) { ext = this.Element("span"); this.createChar(ext,delim.ext,scale,font); var eH = ext.bbox.h + ext.bbox.d, eh = eH - .05, n, N, k = (delim.mid ? 2 : 1); - N = n = Math.ceil((H-h)/(k*eh)); + N = n = Math.min(Math.ceil((H-h)/(k*eh)), 1000); if (!delim.fullExtenders) {eh = (H-h)/(k*n)} var dy = (n/(n+1))*(eH - eh); eh = eH - dy; y += dy + eh - ext.bbox.h; while (k-- > 0) { @@ -1180,7 +1180,7 @@ if (delim.min && W < w*delim.min) {W = w*delim.min} if (W > w) { var rW = rep.bbox.rw-rep.bbox.lw, rw = rW - .05, n, N, k = (delim.mid ? 2 : 1); - N = n = Math.ceil((W-w)/(k*rw)); + N = n = Math.min(Math.ceil((W-w)/(k*rw)), 1000); if (!delim.fillExtenders) {rw = (W-w)/(k*n)} dx = (n/(n+1))*(rW - rw); rw = rW - dx; x -= rep.bbox.lw + dx; while (k-- > 0) { From b9e919499bb7eb5e8e0532fb9e23fcf4778ea347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Wang?= Date: Wed, 6 Feb 2013 14:29:26 +0100 Subject: [PATCH 2/2] Add a HTMLCSS.maxStretchyParts property. --- unpacked/jax/output/HTML-CSS/jax.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/unpacked/jax/output/HTML-CSS/jax.js b/unpacked/jax/output/HTML-CSS/jax.js index ed575ed3c..738e00c7e 100644 --- a/unpacked/jax/output/HTML-CSS/jax.js +++ b/unpacked/jax/output/HTML-CSS/jax.js @@ -1,3 +1,5 @@ +/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ /************************************************************* * * MathJax/jax/output/HTML-CSS/jax.js @@ -296,6 +298,9 @@ webFontDefault: "MathJax_Blank", allowWebFonts: "otf", // assume browser can use OTF web fonts + maxStretchyParts: 1000, // limit the number of parts allowed for + // stretchy operators. See issue 366. + Config: function () { if (!this.require) {this.require = []} this.Font = FONTTEST(); @@ -1130,7 +1135,7 @@ if (H > h) { ext = this.Element("span"); this.createChar(ext,delim.ext,scale,font); var eH = ext.bbox.h + ext.bbox.d, eh = eH - .05, n, N, k = (delim.mid ? 2 : 1); - N = n = Math.min(Math.ceil((H-h)/(k*eh)), 1000); + N = n = Math.min(Math.ceil((H-h)/(k*eh)), this.maxStretchyParts); if (!delim.fullExtenders) {eh = (H-h)/(k*n)} var dy = (n/(n+1))*(eH - eh); eh = eH - dy; y += dy + eh - ext.bbox.h; while (k-- > 0) { @@ -1180,7 +1185,7 @@ if (delim.min && W < w*delim.min) {W = w*delim.min} if (W > w) { var rW = rep.bbox.rw-rep.bbox.lw, rw = rW - .05, n, N, k = (delim.mid ? 2 : 1); - N = n = Math.min(Math.ceil((W-w)/(k*rw)), 1000); + N = n = Math.min(Math.ceil((W-w)/(k*rw)), this.maxStretchyParts); if (!delim.fillExtenders) {rw = (W-w)/(k*n)} dx = (n/(n+1))*(rW - rw); rw = rW - dx; x -= rep.bbox.lw + dx; while (k-- > 0) {