<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>mo axis height</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-fence-separator-or-accent-mo">
<meta name="assert" content="Element mo correctly uses the axis height parameter from the MATH table.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/fonts.js"></script>
<style>
  math, mspace {
    font-size: 10px;
  }
  @font-face {
    font-family: axisheight5000-verticalarrow14000;
    src: url("/fonts/math/axisheight5000-verticalarrow14000.woff");
  }
</style>
<script>
  var emToPx = 10 / 1000; // font-size: 10px, font.em = 1000
  var epsilon = 5;

  function getBox(aId) {
    return document.getElementById(aId).getBoundingClientRect();
  }

  setup({ explicit_done: true });
  window.addEventListener("load", () => { loadAllFonts().then(runTests); });

  function runTests() {
    test(function() {
      var v1 = 5000 * emToPx;
      var moMiddle = (getBox("mo1").bottom + getBox("mo1").top) / 2;
      assert_approx_equals(getBox("mo1").height,
                           14000 * emToPx, epsilon, "mo: size");
      assert_approx_equals(getBox("baseline1").bottom - moMiddle,
                           v1, epsilon, "mo: axis height");
    }, "AxisHeight (size variant)");

    test(function() {
      var v1 = 5000 * emToPx;
      var moMiddle = (getBox("mo2").bottom + getBox("mo2").top) / 2;
      assert_approx_equals(getBox("mo2").height,
                           2 * (getBox("target2").height - v1),
                           epsilon, "mo: size");
      assert_approx_equals(getBox("baseline2").bottom - moMiddle,
                           v1, epsilon, "mo: axis height");
    }, "AxisHeight (glyph assembly)");

    done();
  }
</script>
</head>
<body>
  <div id="log"></div>
  <p>
    <math style="font-family: axisheight5000-verticalarrow14000;">
      <mrow>
        <mspace id="baseline1" style="background: blue" width="50px" height="1px"/>
        <mpadded voffset="50px"><mspace style="background: cyan" width="50px" height="1px"/></mpadded>
        <mo id="mo1" symmetric="true" style="color: green">&#x21A8;</mo>
        <mspace style="background: gray" width="10px" height="50px"/>
      </mrow>
    </math>
    <math style="font-family: axisheight5000-verticalarrow14000;">
      <mrow>
        <mspace id="baseline2" style="background: blue" width="50px" height="1px"/>
        <mpadded voffset="50px"><mspace style="background: cyan" width="50px" height="1px"/></mpadded>
        <mo id="mo2" symmetric="true" style="color: green">&#x21A8;</mo>
        <mspace id="target2" style="background: gray" width="10px" height="200px"/>
      </mrow>
    </math>
</body>
</html>
