<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align" />
<link rel="author" href="mailto:kojii@chromium.org">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
section.test {
  display: inline-block;
  font-size: 20px;
  line-height: 1.5;
  font-family: Arial;
  font-family: Ahem;
}
section.test > div {
  background: blue;
  margin-bottom: 1em;
}
.filler {
  display: inline-block;
  background: cyan;
  height: 3em;
  width: 1em;
}
.target {
  display: inline-block;
  background: orange;
  width: 1em;
  height: 1em;
}
div.top, section.top .target { vertical-align: top; }
div.text-top, section.text-top .target { vertical-align: text-top; }
div.text-bottom, section.text-bottom .target { vertical-align: text-bottom; }
div.bottom, section.bottom .target { vertical-align: bottom; }
.test .fail {
  outline: red solid 5px;
}
</style>
<body>
<section class="test top">
  <div><div class="filler"></div><div class="target" data-y="0"></div></div>
  <div><div class="filler top"></div><div class="target" data-y="0"></div></div>
  <div><div class="filler text-top"></div><div class="target" data-y="0"></div></div>
  <div><div class="filler bottom"></div><div class="target" data-y="0"></div></div>
  <div><div class="filler text-bottom"></div><div class="target" data-y="0"></div></div>
</section>
<section class="test text-top">
  <div><div class="filler"></div><div class="target" data-y="44"></div></div>
  <div><div class="filler top"></div><div class="target" data-y="5"></div></div>
  <div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
  <div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
  <div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
</section>
<section class="test text-bottom">
  <div><div class="filler"></div><div class="target" data-y="44"></div></div>
  <div><div class="filler top"></div><div class="target" data-y="5"></div></div>
  <div><div class="filler text-top"></div><div class="target" data-y="5"></div></div>
  <div><div class="filler bottom"></div><div class="target" data-y="35"></div></div>
  <div><div class="filler text-bottom"></div><div class="target" data-y="40"></div></div>
</section>
<section class="test bottom">
  <div><div class="filler"></div><div class="target" data-y="49"></div></div>
  <div><div class="filler top"></div><div class="target" data-y="40"></div></div>
  <div><div class="filler text-top"></div><div class="target" data-y="45"></div></div>
  <div><div class="filler bottom"></div><div class="target" data-y="40"></div></div>
  <div><div class="filler text-bottom"></div><div class="target" data-y="45"></div></div>
</section>
<script>
setup({explicit_done: true});
document.fonts.ready.then(()=> {
  for (let target of document.getElementsByClassName('target')) {
    let container = target.parentElement;
    let filler = container.firstElementChild;
    let section = container.parentElement;
    let pass = false;
    test(() => {
        let y = target.offsetTop - container.offsetTop;
        assert_approx_equals(y, target.dataset.y, 0);
        pass = true;
    }, `${section.className.substr(5)}+${filler.className.substr(7)}`);
    if (!pass)
      container.classList.add('fail');
  }
  done();
});
</script>
</body>
