Accumulating a big path with 'rlineto', a too big error is accumulated due to current point is represented in 'fixed' with 1/256 pixel precision in device space. It should be more precise. A precise result can be riched with representing current point in user space. I don't like hacks here. I would prefer to fix it at once forever. Therefore the right solution is to add the current point to gs_imager_state and maintain it properly in : - currentpoint; - moveto, lineto, curveto, closepath; - rmoveto, rlineto, rcurveto; - arc, arcn, arct, arcto; - gsave, grestore; - save, restore; - show, ashow, widthshow, awidthshow, xshow, xyshow, yshow, glyphshow, cshow, kshow; - strokepath (?); - charpath, uappend; What do I miss ?
Created attachment 549 [details] A big path Attaching a test file (same as for the bug 687264).
See also 687215 and 687215.
*** Bug 687173 has been marked as a duplicate of this bug. ***
One more related operator : - reversepath
Created attachment 552 [details] patch.txt Attaching a preliminary edition of a patch for this problem. It passed a testing with PRECISE_CURRENTPOINT 0 (see log message), but has some differences with pdfwrite, which to be analyzed. With PRECISE_CURRENTPOINT 1 the rendering difference is massive and was not analyzed yet.
Patch http://www.ghostscript.com/pipermail/gs-cvs/2004-March/004333.html