wpt / css / css-inline / alignment-baseline / alignment-baseline-horizontal-002.html

Status: FAIL | Duration: 18ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi

/css/css-inline/alignment-baseline/alignment-baseline-horizontal-002.html

<!DOCTYPE html>
<html>
<head>
  <link rel="help" href="https://drafts.csswg.org/css-inline-3/#alignment-baseline-property">
  <link rel="match" href="alignment-baseline-horizontal-002-ref.html">
  <link rel="stylesheet" href="/fonts/baseline-diagnostic/baseline-diagnostic-font.css">
  <script src="support/variant-class.js"></script>
  <meta name="assert" content="alignment-baseline affects the vertical position of horizontal text with a different baseline set than its parent" />
  <meta name="flags" content="image" />
  <meta charset="utf-8">
  <meta name="variant" content="?class=baseline">
  <meta name="variant" content="?class=text-bottom">
  <meta name="variant" content="?class=alphabetic">
  <meta name="variant" content="?class=ideographic">
  <meta name="variant" content="?class=middle">
  <meta name="variant" content="?class=central">
  <meta name="variant" content="?class=mathematical">
  <meta name="variant" content="?class=hanging">
  <meta name="variant" content="?class=text-top">
  <style>
    :root {
      font: 200px/1 'BaselineDiagnostic';
    }

    #target {
      font-size: 0.5rem;
    }

    img {
      width: 64px;
      height: 64px;
    }

    .baseline     :is(#target, img) { alignment-baseline: baseline; }
    .text-bottom  :is(#target, img) { alignment-baseline: text-bottom; }
    .alphabetic   :is(#target, img) { alignment-baseline: alphabetic; }
    .ideographic  :is(#target, img) { alignment-baseline: ideographic; }
    .middle       :is(#target, img) { alignment-baseline: middle; }
    .central      :is(#target, img) { alignment-baseline: central; }
    .mathematical :is(#target, img) { alignment-baseline: mathematical; }
    .hanging      :is(#target, img) { alignment-baseline: hanging; }
    .text-top     :is(#target, img) { alignment-baseline: text-top; }
  </style>
</head>
<body>
  <span id="container">X<span id="target">X</span><img src="/images/grgr-256x256.png"></span>
</body>
</html>

/css/css-inline/alignment-baseline/alignment-baseline-horizontal-002-ref.html

<!DOCTYPE html>
<html>
<head>
  <link rel="help" href="https://drafts.csswg.org/css-inline-3/#alignment-baseline-property">
  <link rel="stylesheet" href="/fonts/baseline-diagnostic/baseline-diagnostic-font.css">
  <script src="support/variant-class.js"></script>
  <meta name="flags" content="image" />
  <meta charset="utf-8">
  <meta name="variant" content="?class=baseline">
  <meta name="variant" content="?class=text-bottom">
  <meta name="variant" content="?class=alphabetic">
  <meta name="variant" content="?class=ideographic">
  <meta name="variant" content="?class=middle">
  <meta name="variant" content="?class=central">
  <meta name="variant" content="?class=mathematical">
  <meta name="variant" content="?class=hanging">
  <meta name="variant" content="?class=text-top">
  <style>
    :root {
      font: 200px/1 'BaselineDiagnostic';
    }

    #container {
      position: relative;
    }

    #target {
      position: absolute;
      inset-inline-start: 1rem;
      font-size: 0.5rem;
    }

    img {
      position: absolute;
      inset-inline-start: calc(1rem + 0.5rem);
      width: 64px;
      height: 64px;

      --offset-synthesized-under: 64px;
      --offset-synthesized-middle: 32px;
      --offset-synthesized-over: 0px;
    }

    /* Position the target text span using its font metrics to match baselines */
    .baseline     #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-alphabetic)); }
    .text-bottom  #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-descent)); }
    .alphabetic   #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-alphabetic)); }
    .ideographic  #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-ideographic-under)); }
    .middle       #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-x-middle)); }
    .central      #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-central)); }
    .mathematical #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-math)); }
    .hanging      #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-hanging)); }
    .text-top     #target { inset-block-start: calc((1rem - 0.5rem) * var(--baseline-diagnostic-ascent)); }

    /**
     * Position the image (atomic inline) using its synthesized baselines:
     * - Line-under: text-bottom, alphabetic, ideographic, baseline (in horizontal writing modes)
     * - Midpoint: central, mathematical
     * - Line-over: text-top, hanging
     */
    .baseline     img { inset-block-start: calc(1rem * var(--baseline-diagnostic-alphabetic) - var(--offset-synthesized-under)); }
    .text-bottom  img { inset-block-start: calc(1rem * var(--baseline-diagnostic-descent) - var(--offset-synthesized-under)); }
    .alphabetic   img { inset-block-start: calc(1rem * var(--baseline-diagnostic-alphabetic) - var(--offset-synthesized-under)); }
    .ideographic  img { inset-block-start: calc(1rem * var(--baseline-diagnostic-ideographic-under) - var(--offset-synthesized-under)); }
    .middle       img { inset-block-start: calc(1rem * var(--baseline-diagnostic-x-middle) - var(--offset-synthesized-middle)); }
    .central      img { inset-block-start: calc(1rem * var(--baseline-diagnostic-central) - var(--offset-synthesized-middle)); }
    .mathematical img { inset-block-start: calc(1rem * var(--baseline-diagnostic-math) - var(--offset-synthesized-middle)); }
    .hanging      img { inset-block-start: calc(1rem * var(--baseline-diagnostic-hanging) - var(--offset-synthesized-over)); }
    .text-top     img { inset-block-start: calc(1rem * var(--baseline-diagnostic-ascent) - var(--offset-synthesized-over)); }
  </style>
</head>
<body>
  <span id="container">X<span id="target">X</span><img src="/images/grgr-256x256.png"></span>
</body>
</html>