Proposals/Text to path API
From SVG
This is a proposal for an API that allows authors to convert text into a path.
dictionary SVGTextComponentPath { // Can be one of the following: "text", "underline", "overline", "line-through", "emphasis" DOMString type; // The path for the specified component of the text. SVGPathSegList path; }; partial interface SVGTextContentElement { // Return an SVGPathSegList representing the entire geometry of the text content element, // including glyphs and decorations. SVGPathSegList toPath(); // Return an SVGPathSegList for the glyphs and decorations for the given substring. SVGPathSegList toPath(unsigned long charnum, unsigned long nchars); // Returns separate SVGPathSegLists for the glyphs and decorations of the entire text // content element. sequence<SVGTextComponentPath> toComponentPaths(); // Returns separate SVGPathSegLists for the glyphs and decorations for the given substring. sequence<SVGTextComponentPath> toComponentPaths(unsigned long charnum, unsigned long nchars); };
Issues
- Should the methods return anything if called on an SVG text content element that is not in the tree or is not being rendered?
- Need to define the order that the text/decoration/emphasis paths are returned in.
- Should we also be able to get the paths representing the text stroking?
- (Dirk) It's possible there is no way to guarantee identical results across implementations, even for a given font. Does this matter?
- (Dirk) Should the resulting path data include transformations (scaling, rotation, etc.)?
- (Dirk) Is returning decorations really necessary?
- (Rik) Should return each glyph's path separately, since if they overlap you will get different rendering results.
- (Rik) An alternative design to consider is to get a list of glyph positions out of the API, and then be able to get the path for each individual glyph.
- (Rik) It should be stated that the paths returned should be able to be painted either as nonzero or evenodd and get the same result.
- (Rik) There needs to be an API for permission checking.
- Should we have a DOM API instead that is not tied to a DOM <text> object? At least <text> gives you font properties, but maybe you don't want to have to insert an element into the document just to do a text-to-outline call.