Two ietestcenter cases in WebKit that play with dashing patterns start failing after b66065537cec5 " stroke: Compute bounds for fallback stroker (typically dashing)":
Actually, one commit earlier: 99593538a9d054aa1bb9fa620f.
Created attachment 69225 [details]
Correct rendering for the first test case
Created attachment 69226 [details]
Regression rendering for this test case
Observe how the dashed line has rounded little extra pieces everywhere.
Created attachment 69232 [details]
Cairoscript trace file to reproduce
Using this same trace file for both cases, the correct image is generated before the offending commit, the regressed image is generated afterwards.
Created attachment 69234 [details]
Simpler test case, dashed black (correct)
Created attachment 69235 [details]
Dashed black, incorrect
Created attachment 69236 [details]
Dashed black, tracefile
Thanks for the trace, much easier than tracking down border-radius-style-001.htm. :)
So "git revert 99593538a9d054aa1bb9fa620f" fixes things for me, which indeed is odd as we shouldn't be applying CAIRO_LINE_CAP_ROUND at all...
It's not the capping, but the joins around the curve...
(In reply to comment #9)
> It's not the capping, but the joins around the curve...
I tried sprinkling fixed joins in webKit's cairo backend, that didn't seem to help (or i missed a few places).
This form of the stroker uses implicit ROUND joins along the splines. It just answers the mystery of how we end up generate fans but not the root cause.
Author: Chris Wilson <email@example.com>
Date: Wed Oct 31 09:27:52 2012 +0000
pen: First check whether the in/out edges lie within the single pen vertex
In order to prevent underflow when searching for the closing pen vertex,
we first need to be sure that it does not simply lie next to the opening
pen vertex. As a result we were missing many cases that should have been
a bevel (in == out) and generating almost complete round caps instead.
Reported-by: Dominik Röttsches <firstname.lastname@example.org>
Signed-off-by: Chris Wilson <email@example.com>