Intent to Ship: text-decoration-skip-ink: all

19 views
Skip to first unread message

Ragvesh Sharma

unread,
9:06 AM (2 hours ago) 9:06 AM
to blin...@chromium.org
Contact emails
Specification
Summary
Add support for the `all` value for the CSS text-decoration-skip-ink property, as specified in https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink-property. The `text-decoration-skip-ink` property already supports `auto` and `none`. The `all` value extends this by unconditionally applying ink-skipping to all glyphs - including CJK characters - whereas `auto` leaves CJK characters un-skipped because ink-skipping tends to produce undesirable visual results for ideographic scripts at typical underline positions. With `text-decoration-skip-ink: all`, authors who have adjusted `text-underline-position` or `text-underline-offset` to avoid clashing with CJK glyphs can explicitly opt in to ink-skipping for those characters as well.

Blink component
Web Feature ID
Motivation
The `text-decoration-skip-ink` property controls whether underlines and other text decorations skip over glyph ascenders and descenders to improve readability. The current `auto` value intentionally does not apply ink-skipping to CJK (Chinese, Japanese, Korean) scripts, as these characters typically sit above the baseline and rarely intersect with underlines. However, web developers working with mixed-script content or specific CJK layouts sometimes need underlines to skip around all glyphs uniformly, including CJK characters. Without the all value, developers have no way to request this behavior - they must either accept inconsistent decoration rendering across scripts or avoid using `text-decoration-skip-ink` entirely. The `all` value gives authors explicit control to request ink-skipping for all scripts, enabling consistent visual treatment of underlined text regardless of language. This is particularly useful for design systems that require uniform text decoration behavior across multilingual content. Firefox and Safari already support this value, making it an interoperability gap for Chrome.

Initial public proposal
No information provided

TAG review
No information provided

TAG review status
Not applicable

Risks


Interoperability and Compatibility
Very Low Risk. This feature adds a new keyword value (`all`) and does not change the behavior of existing values (`auto`, `none`). Pages that do not use `text-decoration-skip-ink: all` are completely unaffected. This feature is already shipping in Firefox and Safari. Chrome is the last major browser to implement this value. Shipping this feature improves interoperability and closes a compatibility gap. The https://drafts.csswg.org/css-text-decor-4/#text-decoration-skip-ink-property defines the `all` value, and there is consensus among browser vendors on its behavior.

Gecko: Shipped/Shipping (
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink#browser_compatibility) Fully Supported since v75. Link: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink#browser_compatibility

WebKit: Shipped/Shipping (
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink#browser_compatibility) Fully Supported since v15.4. Link: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink#browser_compatibility

Web developers: In the Chromium bug 9 people have upvoted for this feature.

Other signals:

WebView application risks
Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?
None. This is a new CSS property value (all) that existing content does not use. The behavior of existing values (auto and none) is unchanged. Sites must explicitly opt-in to the new behavior by specifying text-decoration-skip-ink: all. There are no backwards compatibility concerns.


Debuggability
Standard CSS DevTools support. The all value is already parseable behind the experimental flag and visible in the Styles pane. No additional DevTools work is needed.

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes
This feature is supported on all platforms where Chromium runs (Windows, macOS, Linux, ChromeOS, Android). The implementation uses platform-agnostic font APIs (GetTextIntercepts) to compute glyph outlines for ink-skipping, which are already used for the existing auto value. No platform-specific code paths are required.

Is this feature fully tested by web-platform-tests?
Yes

Existing WPT tests already cover parsing of all:
- external/wpt/css/css-text-decor/parsing/text-decoration-skip-ink-valid.html — validates all as a valid value
- external/wpt/css/css-text-decor/parsing/text-decoration-skip-ink-computed.html — validates computed value
- external/wpt/css/css-text-decor/parsing/text-decoration-skip-ink-invalid.html — validates rejection of invalid values

Visual rendering is covered by:
- fast/css3-text/css3-text-decoration/text-decoration-skip-ink-all.html (Blink pixel test)

Flag name on about://flags
No information provided

Finch feature name
CSSTextDecorationSkipInkAll

Rollout plan
Will ship enabled for all users

Requires code in //chrome?
False

Tracking bug
Estimated milestones
Shipping on desktop
148
Shipping on Android
148
Shipping on WebView
148
Shipping on iOS
148


Anticipated spec changes
Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).
No information provided

Link to entry on the Chrome Platform Status
This intent message was generated by Chrome Platform Status.

Reply all
Reply to author
Forward
0 new messages