Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Use Stack* parameters from the OpenType MATH table
https://bugs.webkit.org/show_bug.cgi?id=155714 Patch by Frederic Wang <fwang@igalia.com> on 2016-07-11 Reviewed by Brent Fulgham. Source/WebCore: Test: mathml/mathml-in-html5/frac-parameters-2.html * rendering/mathml/RenderMathMLFraction.cpp: (WebCore::RenderMathMLFraction::updateFromElement): Set the stack parameters when the line thickness is zero. (WebCore::RenderMathMLFraction::layoutBlock): Correctly set the <mfrac> ascent and the denominator vertical offset when the line thickness is zero. (WebCore::RenderMathMLFraction::paint): Early return when we actually do not need to paint any fraction bar. * rendering/mathml/RenderMathMLFraction.h: Define an isStack helper function and define members corresponding to stack parameters. LayoutTests: We import a test from the MathML in HTML5 test suite to verify Stack* parameters. * imported/mathml-in-html5/fonts/math/stack-axisheight7000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-bottomdisplaystyleshiftdown5000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-bottomshiftdown6000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-displaystylegapmin4000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-gapmin8000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-topdisplaystyleshiftup3000.woff: Added. * imported/mathml-in-html5/fonts/math/stack-topshiftup9000.woff: Added. * imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-2-expected.txt: Added. * imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-2.html: Added. Canonical link: https://commits.webkit.org/177779@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@203073 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Showing
13 changed files
with
283 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,9 @@ | ||
|
||
PASS AxisHeight | ||
PASS BottomDisplayStyleShiftDown | ||
PASS BottomShiftDown | ||
PASS DisplayStyleGapMin | ||
PASS GapMin | ||
PASS TopDisplayStyleShiftUp | ||
PASS ToShiftUp | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@@ -0,0 +1,175 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="utf-8"> | ||
<title>Stack parameters</title> | ||
<link rel="help" href="http://www.mathml-association.org/MathMLinHTML5/S3.html#SS3.SSS2"> | ||
<meta name="assert" content="Element mfrac correctly uses the stack parameters from the MATH table."> | ||
<script src="../../../../../resources/testharness.js"></script> | ||
<script src="../../../../../resources/testharnessreport.js"></script> | ||
<style> | ||
math, mspace { | ||
font-size: 10px; | ||
} | ||
@font-face { | ||
font-family: axisheight7000; | ||
src: url("../../../fonts/math/stack-axisheight7000.woff"); | ||
} | ||
@font-face { | ||
font-family: bottomdisplaystyleshiftdown5000; | ||
src: url("../../../fonts/math/stack-bottomdisplaystyleshiftdown5000.woff"); | ||
} | ||
@font-face { | ||
font-family: bottomshiftdown6000; | ||
src: url("../../../fonts/math/stack-bottomshiftdown6000.woff"); | ||
} | ||
@font-face { | ||
font-family: displaystylegapmin4000; | ||
src: url("../../../fonts/math/stack-displaystylegapmin4000.woff"); | ||
} | ||
@font-face { | ||
font-family: gapmin8000; | ||
src: url("../../../fonts/math/stack-gapmin8000.woff"); | ||
} | ||
@font-face { | ||
font-family: topdisplaystyleshiftup3000; | ||
src: url("../../../fonts/math/stack-topdisplaystyleshiftup3000.woff"); | ||
} | ||
@font-face { | ||
font-family: topshiftup9000; | ||
src: url("../../../fonts/math/stack-topshiftup9000.woff"); | ||
} | ||
</style> | ||
<script> | ||
var emToPx = 10 / 1000; // font-size: 10px, font.em = 1000 | ||
var epsilon = 1; | ||
|
||
function getBox(aId) { | ||
return document.getElementById(aId).getBoundingClientRect(); | ||
} | ||
|
||
setup({ explicit_done: true }); | ||
window.addEventListener("load", function() { | ||
document.fonts.ready.then(function() { | ||
window.setTimeout(runTests, 250); | ||
}); | ||
}); | ||
|
||
function runTests() { | ||
test(function() { | ||
var v = 7000 * emToPx; | ||
assert_approx_equals(getBox("ref0001").top - getBox("num0001").bottom, | ||
v, epsilon, "mfrac: axis height"); | ||
}, "AxisHeight"); | ||
|
||
test(function() { | ||
var v = 5000 * emToPx; | ||
assert_approx_equals(getBox("den0002").top - getBox("ref0002").bottom, | ||
v, epsilon, "mfrac: denominator shift"); | ||
}, "BottomDisplayStyleShiftDown"); | ||
|
||
test(function() { | ||
var v = 6000 * emToPx; | ||
assert_approx_equals(getBox("den0003").top - getBox("ref0003").bottom, | ||
v, epsilon, "mfrac: denominator shift"); | ||
}, "BottomShiftDown"); | ||
|
||
test(function() { | ||
var v = 4000 * emToPx; | ||
assert_approx_equals(getBox("den0004").top - getBox("num0004").bottom, | ||
v, epsilon, "mfrac: gap"); | ||
}, "DisplayStyleGapMin"); | ||
|
||
test(function() { | ||
var v = 8000 * emToPx; | ||
assert_approx_equals(getBox("den0005").top - getBox("num0005").bottom, | ||
v, epsilon, "mfrac: gap"); | ||
}, "GapMin"); | ||
|
||
test(function() { | ||
var v = 3000 * emToPx; | ||
assert_approx_equals(getBox("ref0006").top - getBox("num0006").bottom, | ||
v, epsilon, "mfrac: numerator shift"); | ||
}, "TopDisplayStyleShiftUp"); | ||
|
||
test(function() { | ||
var v = 9000 * emToPx; | ||
assert_approx_equals(getBox("ref0007").top - getBox("num0007").bottom, | ||
v, epsilon, "mfrac: numerator shift"); | ||
}, "ToShiftUp"); | ||
|
||
done(); | ||
} | ||
</script> | ||
</head> | ||
<body> | ||
<p> | ||
<math style="font-family: axisheight7000;"> | ||
<mspace id="ref0001" depth="1em" width="3em" mathbackground="green"/> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em" height="1em" id="num0001" mathbackground="blue"/> | ||
<mspace width="3em"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math display="block" style="font-family: bottomdisplaystyleshiftdown5000;"> | ||
<mspace id="ref0002" width="3em" height="1em" mathbackground="green"/> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em"/> | ||
<mspace width="3em" depth="1em" id="den0002" mathbackground="blue"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math style="font-family: bottomshiftdown6000;"> | ||
<mspace id="ref0003" width="3em" height="1em" mathbackground="green"/> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em"/> | ||
<mspace width="3em" depth="1em" id="den0003" mathbackground="blue"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math display="block" style="font-family: displaystylegapmin4000;"> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em" height="1em" id="num0004" mathbackground="blue"/> | ||
<mspace width="3em" depth="1em" id="den0004" mathbackground="green"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math style="font-family: gapmin8000;"> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em" height="1em" id="num0005" mathbackground="blue"/> | ||
<mspace width="3em" depth="1em" id="den0005" mathbackground="green"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math display="block" style="font-family: topdisplaystyleshiftup3000;"> | ||
<mspace id="ref0006" width="3em" depth="1em" mathbackground="green"/> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em" height="1em" id="num0006" mathbackground="blue"/> | ||
<mspace width="3em"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
<p> | ||
<math style="font-family: topshiftup9000;"> | ||
<mspace id="ref0007" width="3em" depth="1em" mathbackground="green"/> | ||
<mfrac linethickness="0px"> | ||
<mspace width="3em" height="1em" id="num0007" mathbackground="blue"/> | ||
<mspace width="3em"/> | ||
</mfrac> | ||
</math> | ||
</p> | ||
<hr/> | ||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters