wpt / css / css-inline / text-box-trim / text-box-trim-inline-box-text-decoration-002.html?class=cap

Open test on wpt.live | Open ref on wpt.live | wpt.fyi

Runs: Chrome 157.0.8081.0 (wpt@4527d579a, 2026-10-02) | Firefox 159.0a1 (wpt@4527d579a, 2026-10-02) | Safari 253 preview (wpt@c5e80ef1d, 2026-10-02) | Ladybird 1.0-44d79 (wpt@1b81534c4, 2026-09-30) | Servo Servo 0.7 (wpt@336cfcec7, 2026-10-01) | Blitz 89e5e615a (wpt@375cf2548, 2026-10-01)

ChromeFirefoxSafariLadybirdServoBlitz
Total1/11/10/10/10/1NOT RUN

/css/css-inline/text-box-trim/text-box-trim-inline-box-text-decoration-002.html

<!DOCTYPE html>
<title>Test of text-decoration position on nested inline boxes with text-box-trim</title>
<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-line-property">
<link rel="match" href="text-box-trim-inline-box-text-decoration-002-ref.html">
<meta name="assert" content="Applying text-box-trim to an inline box also appropriately positions text-decoration provided by an ancestor">
<script src="support/variant-class.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="variant" content="?class=cap">
<meta name="variant" content="?class=ex">
<meta name="variant" content="?class=text">
<meta name="variant" content="?class=ideographic">
<meta name="variant" content="?class=ideographic-ink">
<meta name="variant" content="?class=vrl,cap">
<meta name="variant" content="?class=vrl,ideographic">
<meta name="variant" content="?class=vlr,alphabetic">
<meta name="variant" content="?class=vlr,ideographic">
<meta name="variant" content="?class=vlr,ideographic-ink">
<link rel="stylesheet" href="/fonts/baseline-diagnostic/baseline-diagnostic-font.css">
<style>
.container {
  font: 100px/1.5 BaselineDiagnosticAlphabeticZero;
}

.target {
  text-box-trim: trim-start;
  background: yellow;
}

.decorated {
  text-decoration-line: underline;
  text-decoration-color: green;
}

:root.vrl { writing-mode: vertical-rl; }
:root.vlr { writing-mode: vertical-lr; }

.cap  .target { text-box-edge: cap alphabetic; }
.ex   .target { text-box-edge: ex alphabetic; }
.text .target { text-box-edge: text; }

:root:not(.vlr).ideographic     .target { text-box-edge: ideographic alphabetic; }
:root:not(.vlr).ideographic-ink .target { text-box-edge: ideographic-ink alphabetic; }

:root.vlr.alphabetic      .target { text-box-edge: text alphabetic; }
:root.vlr.ideographic     .target { text-box-edge: text ideographic; }
:root.vlr.ideographic-ink .target { text-box-edge: text ideographic-ink; }
</style>
<div class="container">
  <div><span class="decorated"><span class="target">█BxIF</span></span></div>
  <div><span class="target decorated"><span>█BxIF</span></span></div>
  <div><span class="decorated">█<span class="target">BxIF</span></span></div>
</div>

/css/css-inline/text-box-trim/text-box-trim-inline-box-text-decoration-002-ref.html

<!DOCTYPE html>
<title>Test of text-decoration position on nested inline boxes with text-box-trim</title>
<link rel="help" href="https://drafts.csswg.org/css-inline-3/#text-box-trim">
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-line-property">
<script src="support/variant-class.js"></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="variant" content="?class=cap">
<meta name="variant" content="?class=ex">
<meta name="variant" content="?class=text">
<meta name="variant" content="?class=ideographic">
<meta name="variant" content="?class=ideographic-ink">
<meta name="variant" content="?class=vrl,cap">
<meta name="variant" content="?class=vrl,ideographic">
<meta name="variant" content="?class=vlr,alphabetic">
<meta name="variant" content="?class=vlr,ideographic">
<meta name="variant" content="?class=vlr,ideographic-ink">
<link rel="stylesheet" href="/fonts/baseline-diagnostic/baseline-diagnostic-font.css">
<style>
.container {
  font: 100px/1.5 BaselineDiagnosticAlphabeticZero;
  position: relative;
  z-index: 0;
}

.target { position: relative; }

.target::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: yellow;
}

.decorated {
  text-decoration-line: underline;
  text-decoration-color: green;
}

:root.vrl { writing-mode: vertical-rl; }
:root.vlr { writing-mode: vertical-lr; }

:root:not(.vrl, .vlr) .target::before { top: var(--block-start-inset, 0); }
:root.vrl .target::before { right: var(--block-start-inset, 0); }
:root.vlr .target::before { left: var(--block-start-inset, 0); }

.cap .target::before { --block-start-inset: calc(var(--baseline-diagnostic-alphabetic-zero-cap-height) * 1em); }
.ex  .target::before { --block-start-inset: calc(var(--baseline-diagnostic-alphabetic-zero-x-height) * 1em); }

:root:not(.vlr).ideographic     .target::before { --block-start-inset: calc(var(--baseline-diagnostic-alphabetic-zero-ideographic-over) * 1em); }
:root:not(.vlr).ideographic-ink .target::before { --block-start-inset: calc(var(--baseline-diagnostic-alphabetic-zero-ideographic-face-over) * 1em); }

:root.vlr.alphabetic      .target::before { --block-start-inset: calc((1 - var(--baseline-diagnostic-alphabetic-zero-alphabetic)) * 1em); }
:root.vlr.ideographic     .target::before { --block-start-inset: calc((1 - var(--baseline-diagnostic-alphabetic-zero-ideographic-under)) * 1em); }
:root.vlr.ideographic-ink .target::before { --block-start-inset: calc((1 - var(--baseline-diagnostic-alphabetic-zero-ideographic-face-under)) * 1em); }
</style>
<div class="container">
  <div><span class="decorated"><span class="target">█BxIF</span></span></div>
  <div><span class="target decorated"><span>█BxIF</span></span></div>
  <div><span class="decorated">█<span class="target">BxIF</span></span></div>
</div>