Comment 24 for bug 448286

Revision history for this message
Lenge (spampot) wrote :

@Hachmann:
The original report was about hairlines, not about non-scaling lines, which is why zooming was mentioned. Non-scaling lines were added later, and the bug title was changed along with that. However, there are differences:

1.) A "hairline" is a line that is visible, but has a thickness of EXACTLY zero in all calculations. Objects with a "hairline" border have a visible border, but the border has absolutely NO influence on the objects' width or height (both are exactly the same as if the object had no border at all).
That's the important difference to "normal" lines (both scaling and non-scaling), which are either invisible (if their width is zero) or influence the objects width/height with their own thickness.
Hairlines are typically drawn with the smallest possible width (such as 1 device pixel) at whatever zoom, and their thickness remains zero when scaling operations are performed on the object.

Example: When I align an object to either the top or the bottom of a horizontal hairline, the object must end up in the exact same position in either case. The same holds for aligning to the left/right edges of vertical hairlines.

2.) A "non-scaling" line has a thickness that remains constant when any scaling operations (such as resizing) are performed on the object. If the border of an object is 2 mm and non-scaling, then it will stay 2 mm when the object is enlarged or shrunk. However, it will also remain "2 mm" when zooming, so in effect it DOES change its thickness when zooming (as do the entire page, the rulers, and the scale of what "2 mm" are).

The video you posted shows a line that doesn't change thickness when zooming, which is NOT what is expected from a "non-scaling" line. Instead, it should change thickness when zooming (just as "normal" lines), but NOT when the object is resized.

@Rick-firefang:
As far as I know, you are right that SVG doesn't have support for true hairlines. IMHO this is one of its most important shortcomings compared to other vector formats, and hairlines are so important that Inkscape should definitely have them. If that is not possible with "standard" SVG, they should be added as a custom feature.

A simple approach would be an option to treat lines with a width of exactly zero as hairlines. This means that they should be visible (unlike the SVG standard demands and unlike Inkscape currently draws them), but still remain ZERO (not "1 px" whatsoever) in all calculations such as positioning, width/height calculations etc.. To my knowlegde, a couple of other vector formats define and handle hairlines in this way.