Fixes rendering of characters that only have the styles "fontWeight" and/or "fontStyle" set. Previously _hasStyleChanged() did not detect a change if only one of those two styles have been set.
As crazy as it looks like. Translate the ellipse just if it doesn't have a transformMatrix.
I have the feeling that the problem is somewhere else, but i cannot fix it different way.
This path positioning change renders correctly the svg 170 ( the many red triangles ) and change the visualization of issue #1363. Need extensive testing. Consider that viewbox has to be implemented better, so don't take too much negatively the errors on svgs that have viewbox with negative numbers.
if this is not a solution i hope at least it can inspire someone
Till this library won't use ctx.ellipse() this weird transformation will be a huge mess.
This little fix imroves position of not transformed ellipses.
You can see the fixes on the example i will post below.
It needs improvement to work with other transformMatrix.
Per the SVG spec,
> If a "closepath" is followed immediately by any other command, then
> the next subpath starts at the same initial point as the current
> subpath.
#1365 converted multiple M/m coordinates to L/l commands when importing paths. The `_render` function was already attempting to connect those coordinates, but that's no longer necessary as the only consecutive M/m commands in `_render` were explicitly defined as M/m commands.
Per the [SVG spec](http://www.w3.org/TR/SVG11/paths.html#PathDataMovetoCommands):
> If a moveto is followed by multiple pairs of coordinates, the
> subsequent pairs are treated as implicit lineto commands. Hence,
> implicit lineto commands will be relative if the moveto is relative,
> and absolute if the moveto is absolute."
According to the SVG spec these corners are supposed to be elliptical arcs. HTML canvas does not have methods for elliptical arcs, but a cubic approximation can get within 0.02%.
Using the "magic number" from http://itc.ktu.lt/itc354/Riskus354.pdf.
Prevent image 404s in Images from loadFromJSON from breaking everything
trying to get attributes of a source which is null, while passing it
upwards to allow dealing with images which failed to load outside of
Fabric.JS Issue #1079
Full support for the fabric.Object.fillRule option for any visual objects.
_setupFillRule(ctx) is used to set CanvasRenderingContext2D.globalCompositeOperation (from fillRule property).
_restorFillRule(ctx) restores previously saved globalCompositeOperation.
Both methods are called form the render() method, so individual blending settings for each object can be specified.