- From: Paul LeBeau <paul.lebeau@gmail.com>
- Date: Sun, 26 May 2013 22:04:39 +1200
- To: www-svg@w3.org
- Message-ID: <CACfsppARn_EpRE3=XAZ1pOPAMzJmMbT8ucz25t5jge40Pcb3hg@mail.gmail.com>
I've put up a document showing the current problems with orient=auto markers here: http://paullebeau.com/svg2/markers/ At the bottom of that page is a copy of my proposed clarifications to the SVG 2 spec. It is a slightly expanded version of what I had in my first email. Paul On 26 May 2013 15:57, Paul LeBeau <paul.lebeau@gmail.com> wrote: > Sure. I'll put together something to show what I mean. > > P > > > > On 26 May 2013 10:03, Dirk Schulze <dschulze@adobe.com> wrote: > >> Hi Paul, >> >> You said that the implementations are very quirky and inconsistent. It >> would be extremely helpful if you have tests that you can share with the >> community. Quite often there edge cases not respected by implementations >> and specifications because of a lack of tests. Do you have some test cases? >> >> I did not have the time to review your analysis but will do it before the >> next F2F meeting. >> >> Greetings, >> Dirk >> >> On May 25, 2013, at 10:25 AM, Paul LeBeau <paul.lebeau@gmail.com> wrote: >> >> > Hi all >> > >> > When I was implementing my SVG renderer, the Marker section was one of >> the head-scratchiest parts of the spec to try and understand and get right. >> It did not help that pretty much all SVG renderers have bugs (or "quirks") >> in their marker handling so there wasn't any consensus to go on. >> > >> > I notice the SVG 2 spec is a bit better, but I think the section on >> "auto" oriented markers is still a bit confusing. >> > >> > 'auto' >> > A value of 'auto' indicates that the marker is oriented such that its >> positive x-axis is pointing in the direction of the path at the point it is >> placed. >> > >> > If the marker is a segment marker, then the direction the marker is >> oriented is, if considering the incoming and outgoing directions as unit >> vectors, in the direction of the sum of these two vectors. If this sum is >> zero, then the marker is oriented in the incoming direction. >> > >> > Is this a typo? Seems like this should be referring to a vertex marker. >> > >> > If the marker is on the first or last vertex of a closed subpath, >> [..snip..] >> > >> > I think it is not obvious in all cases what the "first" and "last" >> vertex is. If the last point in the subpath does not coincide with the >> first point, we are told to draw a line to the start point. In this case, >> which point is the "last" point? Also should we be drawing a start marker, >> an end marker, or both? >> > >> > My feeling that in a closed subpath, there is conceptually no real >> start or end point. All vertexes should be considered mid points and only >> midpoint markers should be rendered. So my proposed replacement for this >> section would be as follows: >> > ------------------------------------------ >> > 'auto' >> > A value of 'auto' indicates that the marker is oriented such that its >> positive x-axis is pointing in the direction of the path at the point it is >> placed. >> > >> > If the marker is a vertex marker, then the direction the marker is >> oriented is, if considering the incoming and outgoing directions as unit >> vectors, in the direction of the sum of these two vectors. If this sum is >> zero, then the marker is oriented in the incoming direction. >> > >> > If there are two or more consecutive points in a path that coincide >> exactly (both their x and y values are the same) then all the consecutive >> coinciding points should be treated as if they were a single vertex. >> > >> > If the marker is on the first vertex of a closed subpath, then the >> outgoing direction is taken from the first path segment and the incoming >> direction is taken from: >> > • the last path segment of the subpath, if the last point >> coincides with the first point, or >> > • the line drawn from the last point to the start point, if they >> do not coincide. >> > For closed subpaths, the marker definition to be rendered for all >> vertexes is the marker specified by marker-mid. No start or end markers >> should be applied. >> > ------------------------------------------ >> > >> > That last paragraph might be a bit controversial, but for closed >> subpaths I think it makes sense. As I said, from my testing, renderers >> rarely agree on how markers are positioned at the start/end of closed >> subpaths, so I don't think making this change would affect too many people. >> > >> > I also have a suggestion for an enhancement: >> > ------------------------------------------ >> > 'auto-start' >> > A value of 'auto-start' behaves exactly the same as 'auto' except for >> the treatment of the start marker. If a subpath is not closed, then the >> start marker is positioned so that it points in the exact opposite >> direction (inverse vector) to the first path segment. >> > ------------------------------------------ >> > >> > The idea is that would allow for the easy creation of double-ended >> arrows, for example, without having to define two markers. >> > >> > This is my first contribution to this list, so if I am an idiot, go >> easy on me! :) >> > >> > Paul >> >> > > > -- > Phone: +64 3 9423700 / Mobile: +64 21 1666127 > Skype: paul.lebeau / XMPP: paul.lebeau@gmail.com > Twitter: @paullebeau > -- Phone: +64 3 9423700 / Mobile: +64 21 1666127 Skype: paul.lebeau / XMPP: paul.lebeau@gmail.com Twitter: @paullebeau
Received on Sunday, 26 May 2013 10:05:31 UTC