Checking...Running feature detection.
If OFF: chrome://flags/#enable-experimental-web-platform-features
or --enable-blink-features=CSSTextDecorationInset.
Length and auto insets on a single underlined word. Each card: rendered vs expected PNG from a patched content_shell.
Percentages resolve against the decoration width; with box-decoration-break: slice against the whole decorated run (see next section).
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).
SVG fragments (tspans) form one decorated run, like HTML fragments.
inset: 2ch -2ch on a wrapped inline; slice trims only run edges, clone trims every line box. RTL uses bidi-override.
# 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
auto keeps adjacent underlines distinct: clamp(thickness/2, 1px, 2px).slice resolve against the whole run:
AB<span>CD</span> == ABCD.<br> keep one run: start trim on the
first line, end trim on the last, percentages of the total.clone vs slice changes per-line edge behavior.