diff --git a/buildTree.js b/buildTree.js index e7a73d2fe..40c0e6be2 100644 --- a/buildTree.js +++ b/buildTree.js @@ -75,6 +75,24 @@ var getTypeOfGroup = function(group) { } }; +var isCharacterBox = function(group) { + if (group == null) { + return false; + } else if (group.type === "mathord" || + group.type === "textord" || + group.type === "bin" || + group.type === "rel" || + group.type === "open" || + group.type === "close" || + group.type === "punct") { + return true; + } else if (group.type === "ordgroup") { + return group.value.length === 1 && isCharacterBox(group.value[0]); + } else { + return false; + } +}; + var groupTypes = { mathord: function(group, options, prev) { return makeSpan( @@ -144,8 +162,13 @@ var groupTypes = { var subwrap = makeSpan(["msub"], [submid]); } - var u = base.height - fontMetrics.metrics.supDrop; - var v = base.depth + fontMetrics.metrics.subDrop; + if (isCharacterBox(group.value.base)) { + var u = 0; + var v = 0; + } else { + var u = base.height - fontMetrics.metrics.supDrop; + var v = base.depth + fontMetrics.metrics.subDrop; + } var p; if (options.style === Style.DISPLAY) { diff --git a/test/huxley/Huxleyfile b/test/huxley/Huxleyfile index b456a693d..71bd8e627 100644 --- a/test/huxley/Huxleyfile +++ b/test/huxley/Huxleyfile @@ -42,3 +42,6 @@ url=http://localhost:7936/test/huxley/test.html?m=\KaTeX [RlapBug] url=http://localhost:7936/test/huxley/test.html?m=\frac{\rlap{x}}{2} + +[SupSubCharacterBox] +url=http://localhost:7936/test/huxley/test.html?m=a_2f_2{f}_2{aa}_2{af}_2 diff --git a/test/huxley/SupSubCharacterBox.huxley/record.json b/test/huxley/SupSubCharacterBox.huxley/record.json new file mode 100644 index 000000000..9369c51e8 --- /dev/null +++ b/test/huxley/SupSubCharacterBox.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/SupSubCharacterBox.huxley/screenshot0.png b/test/huxley/SupSubCharacterBox.huxley/screenshot0.png new file mode 100644 index 000000000..d52158ff6 Binary files /dev/null and b/test/huxley/SupSubCharacterBox.huxley/screenshot0.png differ