On Mon, Nov 16, 2015 at 9:02 AM, Justin Novosad <ju...@google.com> wrote:
> Hi All, > > The text in the spec: > > <snip> > > The closePath() method must do nothing if the object's path has no > subpaths. Otherwise, it must mark the last subpath as closed, create a new > subpath whose first point is the same as the previous subpath's first > point, and finally add this new subpath to the path. > > Note: If the last subpath had more than one point in its list of points, > then this is equivalent to adding a straight line connecting the last point > back to the first point, thus "closing" the shape, and then repeating the > last (possibly implied) moveTo() call. > > </snip> > > Problematic use case: > > ctx.moveTo(9.8255,71.1829); > ctx.lineTo(103,25); > ctx.lineTo(118,25); > ctx.moveTo(9.8255,71.1829); > ctx.closePath(); > ctx.stroke(); > > Should this draw a closed triangle or two connected line segments? > According to the "Note" (or at least my interpretation of it), this should > draw a closed triangle. But it appears that this is not what many browsers > have implemented. Chrome recently became compliant (or what I think is > compliant), and the change in behavior was reported as a regression. > > Thoughts? > moveTo creates a new subpath. This means the closePath is going to do nothing because the subpath is empty. So according to the spec, this should create 2 connected lines.