Comment 4 for bug 820425

Revision history for this message
Alvin Penner (apenner) wrote :

three separate problems were encountered at narrow linewidths. Two of them have been fixed, the third cannot be fixed within the scope of the current algorithm.

1. there was a lower limit of 0.1px on the allowable stroke width to be used when converting a stroke to an outline path. This has been reduced from 0.1 to 0.01, similar to what was done in Bug 1094802.

2. the algorithm that is used to convert a stroke to an outline path is a multi-stage method. The first stage draws an outline path that contains some redundant nodes and perhaps some unwanted crossings of paths. The second stage converts this path to a Shape object by putting the outline nodes on a grid which has a spacing of 1/32 px. = 0.03125 px. Then the redundant nodes are eliminated. The grid can be seen by inspecting the resulting outline path in the XML editor, where all the points will be in steps of 0.03125. (The three stages of production can be seen in the file 'crossover.svg' at http://article.gmane.org/gmane.comp.graphics.inkscape.devel/38180).
    While doing the quantization of the path coordinates, it is possible that two points that were originally very close together may get separated by 0.03125 by chance. This is the origin of the horizontal glitches, and also some vertical glitches, in the figure 'stroke_to_path_bug.png'. These glitches have been removed by removing the redundant points in the original outline path.

3. the resulting outline shape should now be smooth, but at small stroke widths it will still be noticeable that the outline path width is not always constant because there is always an ambiguity of about .03125 in the width. This cannot be fixed within the scope of the algorithm that is being used to produce the final shape.

committed to rev 12069.

I would propose that the bug report be changed to either "Fix Committed" or "Will Not Fix", not sure which is better.