text-decoration-inset sampler

#468928416 style + painting #498974811 percentages #539095434 overflow + repaint Status: 3-CL chain, validated locally

Feature state on this browser

Checking...Running feature detection.

If OFF: chrome://flags/#enable-experimental-web-platform-features or --enable-blink-features=CSSTextDecorationInset.

Core samples (#468928416)

Length and auto insets on a single underlined word. Each card: rendered vs expected PNG from a patched content_shell.

Percentage samples (#498974811)

Percentages resolve against the decoration width; with box-decoration-break: slice against the whole decorated run (see next section).

Decorated run + repaint (#539095434)

Run-based percentage resolution (WPT 028/030 analogues), exact ink overflow, and repaint on runtime inset changes.

repaint case: line 1 starts with inset: 30px and loses it after the first frame (must repaint to full width, no leftover trim); line 2 gains inset: -20px (must extend past the text without clipping).

state: initial

SVG samples

SVG fragments (tspans) form one decorated run, like HTML fragments.

Fragmentation and writing-mode matrix

inset: 2ch -2ch on a wrapped inline; slice trims only run edges, clone trims every line box. RTL uses bidi-override.

Debug commands

# rendering + parsing
third_party/blink/tools/run_web_tests.py -t Default --no-show-results \
  external/wpt/css/css-text-decor/ | grep text-decoration-inset

# CL3 (crbug.com/539095434): run percentages, forced breaks, invalidation
third_party/blink/tools/run_web_tests.py -t Default --no-show-results \
  external/wpt/css/css-text-decor/text-decoration-inset-028.html \
  external/wpt/css/css-text-decor/text-decoration-inset-030.html \
  external/wpt/css/css-text-decor/text-decoration-inset-percentage-slice.html \
  external/wpt/css/css-text-decor/invalidation/text-decoration-inset-invalidation.html

out/Default/blink_unittests --gtest_filter="InlinePaintContextTest.*"

# regenerate expected images (forces --enable-blink-features=CSSTextDecorationInset)
DISPLAY=:21 python3 capture_screenshots.py

Expected behavior checklist