From 204270fa0db90b40decbd3daf97a793db9fc871f Mon Sep 17 00:00:00 2001 From: Emily Eisenberg Date: Thu, 20 Mar 2014 21:36:37 -0400 Subject: [PATCH] Somehow manage to fix the sizing bugs Summary: Remove a single `vertical-align: top`, and somewhow it now works. May the gods of CSS have mercy on us. Also added some tests. Test Plan: - See that the huxley tests don't have any changes - See that the new huxley screenshots look reasonable - Run the normal tests and see that they work Reviewers: alpert Reviewed By: alpert Differential Revision: http://phabricator.khanacademy.org/D7494 --- .gitignore | 1 + buildTree.js | 21 +++++-------- static/katex.less | 15 ++++++++-- test/huxley/Huxleyfile | 28 +++++++++++------- test/huxley/Sizing.huxley/record.json | 1 + test/huxley/Sizing.huxley/screenshot0.png | Bin 0 -> 12633 bytes test/huxley/SizingBaseline.huxley/record.json | 1 + .../SizingBaseline.huxley/screenshot0.png | Bin 0 -> 17508 bytes test/huxley/test.html | 18 ++++++++--- test/katex-tests.js | 24 +++++++++++++++ 10 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 test/huxley/Sizing.huxley/record.json create mode 100644 test/huxley/Sizing.huxley/screenshot0.png create mode 100644 test/huxley/SizingBaseline.huxley/record.json create mode 100644 test/huxley/SizingBaseline.huxley/screenshot0.png diff --git a/.gitignore b/.gitignore index cd9ad78..b63f252 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ build node_modules last.png +diff.png diff --git a/buildTree.js b/buildTree.js index 1b2e76a..ffe803d 100644 --- a/buildTree.js +++ b/buildTree.js @@ -130,6 +130,7 @@ var groupTypes = { } var supsub; + var fixIE = makeSpan(["fix-ie"], []); if (!group.value.sup) { v = Math.max(v, fontMetrics.metrics.sub1, @@ -140,7 +141,7 @@ var groupTypes = { subwrap.depth = subwrap.depth + v; subwrap.height = 0; - supsub = makeSpan(["msupsub"], [subwrap]); + supsub = makeSpan(["msupsub"], [subwrap, fixIE]); } else if (!group.value.sub) { u = Math.max(u, p, sup.depth + 0.25 * fontMetrics.metrics.xHeight); @@ -150,7 +151,7 @@ var groupTypes = { supwrap.height = supwrap.height + u; supwrap.depth = 0; - supsub = makeSpan(["msupsub"], [supwrap]); + supsub = makeSpan(["msupsub"], [supwrap, fixIE]); } else { u = Math.max(u, p, sup.depth + 0.25 * fontMetrics.metrics.xHeight); @@ -176,7 +177,7 @@ var groupTypes = { subwrap.height = 0; subwrap.depth = subwrap.depth + v; - supsub = makeSpan(["msupsub"], [supwrap, subwrap]); + supsub = makeSpan(["msupsub"], [supwrap, subwrap, fixIE]); } return makeSpan([getTypeOfGroup(group.value.base)], [base, supsub]); @@ -244,7 +245,9 @@ var groupTypes = { denomrow.height = 0; denomrow.depth = denomrow.depth + v; - var frac = makeSpan([], [numerrow, mid, denomrow]); + var fixIE = makeSpan(["fix-ie"], []); + + var frac = makeSpan([], [numerrow, mid, denomrow, fixIE]); frac.height *= fstyle.sizeMultiplier / options.style.sizeMultiplier; frac.depth *= fstyle.sizeMultiplier / options.style.sizeMultiplier; @@ -379,11 +382,6 @@ var buildGroup = function(group, options, prev) { var multiplier = options.style.sizeMultiplier / options.parentStyle.sizeMultiplier; - if (multiplier > 1) { - throw new ParseError( - "Error: Can't go from small to large style"); - } - groupNode.height *= multiplier; groupNode.depth *= multiplier; } @@ -392,11 +390,6 @@ var buildGroup = function(group, options, prev) { var multiplier = sizingMultiplier[options.size] / sizingMultiplier[options.parentSize]; - if (multiplier > 1) { - throw new ParseError( - "Error: Can't go from small to large size"); - } - if (options.depth > 1) { throw new ParseError( "Error: Can't use sizing outside of the root node"); diff --git a/static/katex.less b/static/katex.less index 2b462b6..34fb639 100644 --- a/static/katex.less +++ b/static/katex.less @@ -163,7 +163,6 @@ big parens .baseline-align-hack-outer() { display: inline-block; - vertical-align: top; } .baseline-align-hack-middle() { @@ -184,7 +183,8 @@ big parens margin-left: 0.05em; .msup, - .msub { + .msub, + .fix-ie { .baseline-align-hack-middle; position: relative; @@ -192,6 +192,10 @@ big parens .baseline-align-hack-inner; } } + + .fix-ie { + display: inline-block; + } } .mfrac { @@ -199,7 +203,8 @@ big parens .mfracnum, .mfracmid, - .mfracden { + .mfracden, + .fix-ie { .baseline-align-hack-middle; position: relative; text-align: center; @@ -209,6 +214,10 @@ big parens } } + .fix-ie { + display: inline-block; + } + .mfracmid > span { width: 100%; diff --git a/test/huxley/Huxleyfile b/test/huxley/Huxleyfile index 7ef5592..77c6ff6 100644 --- a/test/huxley/Huxleyfile +++ b/test/huxley/Huxleyfile @@ -1,32 +1,38 @@ [BasicTest] -url=http://localhost:7936/test/huxley/test.html#a +url=http://localhost:7936/test/huxley/test.html?m=a [FractionTest] -url=http://localhost:7936/test/huxley/test.html#\dfrac{a}{b}\frac{a}{b}\tfrac{a}{b} +url=http://localhost:7936/test/huxley/test.html?m=\dfrac{a}{b}\frac{a}{b}\tfrac{a}{b} [NestedFractions] -url=http://localhost:7936/test/huxley/test.html#\dfrac{\frac{a}{b}}{\frac{c}{d}}\dfrac{\dfrac{a}{b}}{\dfrac{c}{d}}\frac{\frac{a}{b}}{\frac{c}{d}} +url=http://localhost:7936/test/huxley/test.html?m=\dfrac{\frac{a}{b}}{\frac{c}{d}}\dfrac{\dfrac{a}{b}}{\dfrac{c}{d}}\frac{\frac{a}{b}}{\frac{c}{d}} [Exponents] -url=http://localhost:7936/test/huxley/test.html#a^{a^a_a}_{a^a_a} +url=http://localhost:7936/test/huxley/test.html?m=a^{a^a_a}_{a^a_a} [Colors] -url=http://localhost:7936/test/huxley/test.html#\blue{a}\green{b}\red{c} +url=http://localhost:7936/test/huxley/test.html?m=\blue{a}\green{b}\red{c} [GreekLetters] -url=http://localhost:7936/test/huxley/test.html#\alpha\beta\gamma\omega +url=http://localhost:7936/test/huxley/test.html?m=\alpha\beta\gamma\omega [Baseline] -url=http://localhost:7936/test/huxley/test.html#a+b-c\cdot d/e +url=http://localhost:7936/test/huxley/test.html?m=a+b-c\cdot d/e [Spacing] -url=http://localhost:7936/test/huxley/test.html#[-1][1-1]1=1(=1)\lvert a\rvert +url=http://localhost:7936/test/huxley/test.html?m=[-1][1-1]1%%3D1(%%3D1)\lvert a\rvert [Functions] -url=http://localhost:7936/test/huxley/test.html#\sin\cos\tan\ln\log +url=http://localhost:7936/test/huxley/test.html?m=\sin\cos\tan\ln\log [Lap] -url=http://localhost:7936/test/huxley/test.html#ab\llap{f}cd\rlap{g}h +url=http://localhost:7936/test/huxley/test.html?m=ab\llap{f}cd\rlap{g}h + +[Sizing] +url=http://localhost:7936/test/huxley/test.html?m=\Huge{x}\LARGE{y}\normalsize{z}\scriptsize{w} + +[SizingBaseline] +url=http://localhost:7936/test/huxley/test.html?m=\tiny{a+b}a+b\Huge{a+b}&pre=x&post=M [KaTeX] -url=http://localhost:7936/test/huxley/test.html#\KaTeX \ No newline at end of file +url=http://localhost:7936/test/huxley/test.html?m=\KaTeX \ No newline at end of file diff --git a/test/huxley/Sizing.huxley/record.json b/test/huxley/Sizing.huxley/record.json new file mode 100644 index 0000000..9369c51 --- /dev/null +++ b/test/huxley/Sizing.huxley/record.json @@ -0,0 +1 @@ +{"py/object": "huxley.run.Test", "screen_size": {"py/tuple": [1024, 768]}, "steps": [{"py/object": "huxley.steps.ScreenshotTestStep", "index": 0, "offset_time": 0}]} diff --git a/test/huxley/Sizing.huxley/screenshot0.png b/test/huxley/Sizing.huxley/screenshot0.png new file mode 100644 index 0000000000000000000000000000000000000000..447a9559c91d430ccaa3ab08fc2f470204345a85 GIT binary patch literal 12633 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 literal 0 HcmV?d00001 diff --git a/test/huxley/SizingBaseline.huxley/record.json b/test/huxley/SizingBaseline.huxley/record.json new file mode 100644 index 0000000..9369c51 --- /dev/null +++ b/test/huxley/SizingBaseline.huxley/record.json @@ -0,0 +1 @@ +{"py/object": "huxley.run.Test", "screen_size": {"py/tuple": [1024, 768]}, "steps": [{"py/object": "huxley.steps.ScreenshotTestStep", "index": 0, "offset_time": 0}]} diff --git a/test/huxley/SizingBaseline.huxley/screenshot0.png b/test/huxley/SizingBaseline.huxley/screenshot0.png new file mode 100644 index 0000000000000000000000000000000000000000..8982f50f58e6f800a0e161e0a998fd6dfa62f22e GIT binary patch literal 17508 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 literal 0 HcmV?d00001 diff --git a/test/huxley/test.html b/test/huxley/test.html index 3b992de..6817763 100644 --- a/test/huxley/test.html +++ b/test/huxley/test.html @@ -6,17 +6,27 @@ -
+ + + diff --git a/test/katex-tests.js b/test/katex-tests.js index f7343b2..f75ad72 100644 --- a/test/katex-tests.js +++ b/test/katex-tests.js @@ -423,3 +423,27 @@ describe("A frac parser", function() { expect(tfracParse.value.denom).toBeDefined(); }); }); + +describe("A sizing parser", function() { + var sizeExpression = "\\Huge{x}\\small{x}"; + var nestedSizeExpression = "\\Huge{\\small{x}}"; + + it("should not fail", function() { + expect(function() { + parseTree(sizeExpression); + }).not.toThrow(); + }); + + it("should produce a sizing node", function() { + var parse = parseTree(sizeExpression)[0]; + + expect(parse.type).toMatch("sizing"); + expect(parse.value).toBeDefined(); + }); + + it("should not parse a nested size expression", function() { + expect(function() { + parseExpression(nestedSizeExpression); + }).toThrow(); + }); +});