LGTM3
(note Vlad's comment)
/Daniel
On 2026-05-06 17:30, Rick Byers wrote:
LGTM2
On Wed, May 6, 2026 at 11:27 AM Vladimir Levin <[email protected]>
wrote:
LGTM1, modulo the parsing WPTs: the result seem to be missing. I
assume they are there, but maybe the link is incorrect? Can you
clarify?
Thanks,
Vlad
On Wednesday, May 6, 2026 at 5:36:39 AM UTC-4 Virali Purbey wrote:
*Contact emails*
[email protected]_ <mailto:[email protected]>
*Specification*
_https://github.com/w3c/svgwg/pull/1073_
<https://github.com/w3c/svgwg/pull/1073>
*Summary*
This change introduces a new CSS property, 'path-length',
which maps to the existing SVG 'pathLength' presentation
attribute. It applies to SVG geometry elements that support
'pathLength' (including <path>, <circle>, <rect>, <line>,
<polyline>, <polygon>, and <ellipse>).
Exposing 'pathLength' as a CSS property allows authors to
specify it via stylesheets, inline styles, and animations,
enabling it to participate in normal CSS cascading,
specificity, transitions, and animations. The property affects
all computations that depend on the total path length,
including stroke dash rendering and text positioning along a
<textPath>.
CSS declarations override the presentation attribute following
standard CSS precedence rules. The initial value of
'path-length' is 'none', which represents the absence of an
author-supplied path length and is distinct from an explicit
numeric value such as '0'.
Existing attribute-only behavior is preserved when the feature
is disabled.
*Blink component*
_Blink>SVG_
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESVG%22>
*Web Feature ID*
_svg-path-length-css_
<https://webstatus.dev/features/svg-path-length-css>
*Motivation*
Today, 'pathLength' can only be specified as an SVG
presentation attribute. As a result, it cannot participate in
the CSS cascade, specificity, animations, or transitions,
unlike other SVG geometry properties such as 'r', 'cx', 'cy',
'x', 'y', and 'd', which are already exposed as CSS properties.
This limitation prevents authors from controlling total path
length using stylesheets, overriding presentation attributes
via CSS, or animating 'pathLength' using standard CSS
animation and transition mechanisms. Common authoring
patterns, such as CSS-driven stroke dash animations and
text-on-path effects that rely on scalable path length,
require workarounds or script today.
Promoting 'pathLength' to a CSS property aligns it with
existing SVG geometry properties, enables full participation
in CSS cascading and animation, and closes a long-standing
authoring gap identified by the SVG Working Group (
_https://github.com/w3c/svgwg/issues/773_
<https://github.com/w3c/svgwg/issues/773>). Existing attribute
behavior is preserved, with CSS declarations taking precedence
according to standard cascade rules.
*Initial public proposal*
/No information provided/
*TAG review*
Not requested. This property exposes existing SVG `pathLength`
attribute behavior through CSS with no new capabilities, no
new security surface, and no change to default rendering. It
follows the same pattern as other SVG presentation attributes
already shipped as CSS properties (`cx`, `cy`, `r`, `d`, etc.)
*TAG review status*
Not applicable
*Goals for experimentation*
None
*Risks*
*Interoperability and Compatibility
*
Behavior change risk:
Previously, pathLength was only accessible as an SVG
presentation attribute. This change introduces a
new path-length CSS property that maps to the existing SVG
behavior. Because this is a new CSS property and does not
alter default rendering when unused, the risk to existing
content is minimal. The presentation attribute mapping follows
standard SVG/CSS cascade rules, meaning CSS declarations take
precedence over the pathLength attribute, consistent with how
other SVG presentation attributes behave.
Mitigation:
The feature is guarded by a Finch flag
(SvgPathLengthCssProperty), which can be used as a kill switch
if unexpected compatibility issues arise.
Edge cases:
Blink treats `path-length: 0` as an infinite scaling factor:
any non-zero dash value in `stroke-dasharray` extends to
infinity, rendering the stroke as solid. This matches the SVG
2 spec text ("a value of zero is valid and must be treated as
a scaling factor of infinity"). Earlier WG discussions on
zero-value semantics (
_https://github.com/w3c/svgwg/issues/81_
<https://github.com/w3c/svgwg/issues/81>,
_https://github.com/w3c/svgwg/issues/383_
<https://github.com/w3c/svgwg/issues/383>) have been resolved
and closed. The spec PR (
_https://github.com/w3c/svgwg/pull/1073_
<https://github.com/w3c/svgwg/pull/1073>) has WG consensus and
codifies this behavior. This change preserves Blink's existing
attribute semantics for `pathLength = 0` while exposing the
same behavior through CSS, verified by
`path-length-css-zero.tentative.svg`.
/Gecko/:
No signal
_https://github.com/mozilla/standards-positions/issues/1363_
<https://github.com/mozilla/standards-positions/issues/1363>
/WebKit/:
No signal
_https://github.com/WebKit/standards-positions/issues/621_
<https://github.com/WebKit/standards-positions/issues/621>
/Web developers/:
Positive
8 users have upvoted for this CrBug.
/Other signals/:
*Security*
This feature introduces a new CSS property for an existing SVG
concept (`pathLength`). It does not add new capabilities
beyond what authors can already express via the `pathLength`
attribute, and it reuses existing `parsing/rendering` logic.
No new cross-origin access, network access, or privilege
changes are introduced.
*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?/
No. This change does not deprecate or modify existing APIs. It
introduces a new CSS property that maps to an existing SVG
presentation attribute and preserves existing attribute-only
behavior when the feature flag is disabled.
*Debuggability*
Issues related to this feature are debuggable using existing
CSS and SVG inspection tools. The computed value of
`path-length` is visible in DevTools’ Computed Style panel.
Invalid values are rejected at parse time, and the "none"
initial value is represented distinctly from authored numeric
values (including 0). No new debugging tooling is required.
*Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?*
Yes
*Is this feature fully tested by **_web-platform-tests_*
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>*?*
Yes
Parsing:
- Valid values:
_https://wpt.fyi/results/svg/geometry/parsing/path-length-valid.tentative.svg_
<https://wpt.fyi/results/svg/geometry/parsing/path-length-valid.tentative.svg>
- Invalid values:
_https://wpt.fyi/results/svg/geometry/parsing/path-length-invalid.tentative.svg_
<https://wpt.fyi/results/svg/geometry/parsing/path-length-invalid.tentative.svg>
- Computed values:
_https://wpt.fyi/results/svg/geometry/parsing/path-length-computed.tentative.svg_
<https://wpt.fyi/results/svg/geometry/parsing/path-length-computed.tentative.svg>
Property behavior:
- Inheritance:
_https://wpt.fyi/results/svg/path/property/inheritance.tentative.svg_
<https://wpt.fyi/results/svg/path/property/inheritance.tentative.svg>
Animations:
- SVG animate element:
_https://wpt.fyi/results/svg/animations/animate-pathLength.tentative.html_
<https://wpt.fyi/results/svg/animations/animate-pathLength.tentative.html>
- CSS interpolation:
_https://wpt.fyi/results/svg/path/animations/path-length-interpolation.tentative.html_
<https://wpt.fyi/results/svg/path/animations/path-length-interpolation.tentative.html>
Rendering / distance:
- CSS path-length rendering:
_https://wpt.fyi/results/svg/path/distance/path-length-css-property.tentative.svg_
<https://wpt.fyi/results/svg/path/distance/path-length-css-property.tentative.svg>
- CSS overrides presentation attribute:
_https://wpt.fyi/results/svg/path/distance/path-length-css-overrides-presentation-attribute.tentative.svg_
<https://wpt.fyi/results/svg/path/distance/path-length-css-overrides-presentation-attribute.tentative.svg>
- Zero value handling (path-length: 0):
_https://wpt.fyi/results/svg/path/distance/path-length-css-zero.tentative.svg_
<https://wpt.fyi/results/svg/path/distance/path-length-css-zero.tentative.svg>
Text on path:
- textPath with display:none:
_https://wpt.fyi/results/svg/text/reftests/textpath-pathlength-css-display-none.tentative.svg_
<https://wpt.fyi/results/svg/text/reftests/textpath-pathlength-css-display-none.tentative.svg>
*Flag name on about://flags*
/No information provided/
*Finch feature name*
SvgPathLengthCssProperty
*Rollout plan*
Will ship enabled for all users
*Requires code in //chrome?*
False
*Tracking bug*
_https://issues.chromium.org/issues/40670251_
<https://issues.chromium.org/issues/40670251>
*Estimated milestones*
Shipping on desktop
149
Shipping on Android
149
Shipping on WebView
149
*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)./
The spec PR ( _https://github.com/w3c/svgwg/pull/1073_
<https://github.com/w3c/svgwg/pull/1073>) has WG consensus and
is about to be merged. No anticipated spec changes that would
introduce web compat or interop risk.
*Link to entry on the Chrome Platform Status*
_https://chromestatus.com/feature/4861677550043136?gate=5806183338344448_
<https://chromestatus.com/feature/4861677550043136?gate=5806183338344448>
This intent message was generated by _Chrome Platform Status_
<https://chromestatus.com/>.
/From
<//_https://chromestatus.com/feature/4861677550043136/gate/5806183338344448/intent_/
<https://chromestatus.com/feature/4861677550043136/gate/5806183338344448/intent>/>/
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected].
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/43c88a25-5bcb-437f-bba8-15b7a5828ffcn%40chromium.org
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/43c88a25-5bcb-437f-bba8-15b7a5828ffcn%40chromium.org?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google
Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY_dbxDO9_ET_WxgmGYMtzK2pGhb7ykOkXZ05SsgJZaq7g%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY_dbxDO9_ET_WxgmGYMtzK2pGhb7ykOkXZ05SsgJZaq7g%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/d6f5e0b0-1035-4554-87b8-eb3881697d26%40gmail.com.