Contact emails

[email protected]<mailto:[email protected]>



Explainer

https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/SVG/SVGPathDataAPI/explainer.md



Specification

https://svgwg.org/specs/paths/#DOMInterfaces



Design docs

https://docs.google.com/document/d/1uCVUqYGKgsCCu7LEtEdO3Yuea-MT-I2XsU6Eoe3mlQI/edit?usp=sharing



Summary

Implement `getPathData()`, `setPathData()`, and `getPathSegmentAtLength()` on 
`SVGPathElement`, three methods that give developers structured, segment-level 
access to <path> data as simple ` {type, values} ` dictionaries. A 
`getPathData({normalize: true}) ` option reduces all commands to the absolute 
M, L, C, Z subset.



```

dictionary SVGPathSegment {

  required DOMString type;

  required sequence<unrestricted float> values;

};



dictionary SVGPathDataSettings {

  boolean normalize = false;

};



partial interface SVGPathElement {

  sequence<SVGPathSegment> getPathData(optional SVGPathDataSettings settings = 
{});

  undefined setPathData(sequence<SVGPathSegment> pathData);

  SVGPathSegment? getPathSegmentAtLength(unrestricted float distance);

};



```



Blink component

Blink>SVG<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESVG%22>



Web Feature ID

No information provided



Motivation

Web developers working with SVG paths currently have no programmatic way to 
inspect or manipulate individual path segments in Chrome. The only available 
interface is the `d` attribute string (e.g., "M 0 0 C 30 90 25 10 50 10"), 
which requires manual string parsing with regex or third-party libraries to 
extract segment data. This makes common tasks like path animation, hit-testing, 
bounding-box calculation, and programmatic path construction unnecessarily 
complex and error-prone.



The `SVGPathSegList` interface that previously provided structured access was 
removed from Chromium in M48 (January 2016) due to its complexity - live 
mutation semantics, 20+ factory methods, and poorly specified edge cases. Since 
then, developers have relied on polyfills, most notably path-data-polyfill 
(https://github.com/jarek-foksa/path-data-polyfill), to fill the gap.



The SVG Working Group has since specified a cleaner replacement API in the SVG 
Paths specification which is what we are looking to implement now. See the 
explainer for additional details on the improvements made to the API shape.



Initial public proposal

Re: PathSeg interface from Erik Dahlström on 2015-02-16 ([email protected] from 
February 2015)<https://lists.w3.org/Archives/Public/www-svg/2015Feb/0036.html>



Goals for experimentation

No information provided



Requires code in //chrome?

False



Tracking bug

https://issues.chromium.org/issues/40441025



Estimated milestones

No milestones specified



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).

A few spec issues have already been agreed upon but are not yet reflected in 
the spec text (e.g., using `dictionary` instead of `interface`, `unrestricted 
float`, `required` keywords). We plan to address those as part of the 
prototyping phase.



Additionally, there are a few open areas, such as CSS `d` property vs. 
attribute resolution, animated vs. base value semantics, and 
`getPathSegmentAtLength()` edge-case behavior, where we need to file spec 
issues and drive consensus in the SVG Working Group before I2S.



Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/4787972240179200?gate=5478126676213760



This intent message was generated by Chrome Platform 
Status<https://chromestatus.com/>.



>From 
><https://chromestatus.com/feature/4787972240179200/gate/5478126676213760/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/KUXP153MB161031AEB43220B1ADB9B41AC1112%40KUXP153MB1610.APCP153.PROD.OUTLOOK.COM.

Reply via email to