| <!DOCTYPE html> | |
| <html class="reftest-wait"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>Stack parameters (display gap between numerator and denominator)</title> | |
| <link rel="help" href="https://w3c.github.io/mathml-core/#fractions-mfrac"> | |
| <link rel="match" href="frac-parameters-gap-005-ref.html"/> | |
| <meta name="assert" content="Element mfrac with zero linethickness correctly uses the StackDisplayStyleGapMin parameter from the MATH table when denominator contains text."> | |
| <style> | |
| math, mspace, mtext { | |
| font-size: 20px; | |
| } | |
| mtext { | |
| font-family: math-text; | |
| color: blue; | |
| } | |
| @font-face { | |
| font-family: displaystylegapmin4000; | |
| src: url("/fonts/math/stack-displaystylegapmin4000.woff"); | |
| } | |
| @font-face { | |
| /* | |
| math-text has the following properties: | |
| - typo/hhea/win metrics: 2.5em ascent and 2.5em descent. | |
| - glyph A: .5em ascent and .5em descent. | |
| - glyph B: 1em ascent and 0em descent. | |
| - glyph C: 0em ascent and 1em descent. | |
| */ | |
| font-family: math-text; | |
| src: url("/fonts/math/math-text.woff"); | |
| } | |
| #reference { | |
| background: green; | |
| } | |
| #frame { | |
| position: absolute; | |
| border-top: 4px solid black; | |
| border-bottom: 4px solid black; | |
| width: 100%; | |
| } | |
| </style> | |
| <script src="/mathml/support/fonts.js"></script> | |
| <script> | |
| function runTests() { | |
| var div = document.getElementById("frame"); | |
| var refBox = document.getElementById("reference").getBoundingClientRect(); | |
| div.style.top = `${refBox.top-2}px`; | |
| div.style.height = `${refBox.height-4}px`; | |
| document.documentElement.classList.remove('reftest-wait'); | |
| } | |
| window.addEventListener("load", () => { loadAllFonts().then(runTests); }); | |
| </script> | |
| </head> | |
| <body> | |
| <p> | |
| This test passes if the blue squares are aligned: | |
| </p> | |
| <p> | |
| <math display="block" style="font-family: displaystylegapmin4000"> | |
| <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. --> | |
| <mspace height="10em" depth="10em"/> | |
| <!-- | |
| The gap between the numerators/denominators and the math axis must StackDisplayStyleGapMin / 2. | |
| The gap should be calculated using the exact bounding box of the glyphs. | |
| The numerator descent is .5em + the denominator ascent. | |
| Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent. | |
| --> | |
| <mfrac linethickness="0px"> | |
| <mspace width="3em" depth="1em"/> | |
| <mspace id="reference" width="3em" height=".5em" depth=".5em"/> | |
| </mfrac> | |
| <mfrac linethickness="0px"> | |
| <mspace width="3em" depth="1em"/> | |
| <mtext>A</mtext> | |
| </mfrac> | |
| <mfrac linethickness="0px"> | |
| <mspace width="3em" depth="1.5em"/> | |
| <mtext>B</mtext> | |
| </mfrac> | |
| <mfrac linethickness="0px"> | |
| <mspace width="3em" depth=".5em"/> | |
| <mtext>C</mtext> | |
| </mfrac> | |
| </math> | |
| </p> | |
| <div id="frame"></div> | |
| <script src="/mathml/support/feature-detection.js"></script> | |
| <script>MathMLFeatureDetection.ensure_for_match_reftest("has_mfrac");</script> | |
| </body> | |
| </html> |