W3C home > Mailing lists > Public > www-svg@w3.org > November 2002

Re: SVG spec--lines

From: Chris Lilley <chris@w3.org>
Date: Sat, 16 Nov 2002 02:44:49 +0100
Message-ID: <4270603234.20021116024449@w3.org>
To: www-svg@w3.org, "Andy Skinner" <askinner@avs.com>

On Friday, November 15, 2002, 11:01:14 PM, Andy wrote:

AS> Hi.  I'm confused by a couple of parts of the SVG spec.

AS> The 'line' element spec says:
AS> "Because 'line' elements are single lines and thus are geometrically
AS> one-dimensional, they have no interior; thus, 'line' elements are never
AS> filled (see the 'fill' property)."

AS> But the 'fill' property says:
AS> "The zero-width geometric outline of a shape is included in the area to be
AS> painted."

AS> This would give a definition to 'fill' for a line.

AS> Are these statements contradictory?  If so, which is correct?

They are not contradictory, but I do see what you mean in that
limiting case.

Rather like the concept of 'transparent black' which is not itself
useful except by derivation.

Consider a line from 0,0 to 100,100 and a polyline (or path) that
makes a triangle from 0,100 to 100, 0 to 100,100 both with a stroke
width of 20 and a polyline or path from 10,0 to 10,100.

The first statement says that the line, even if you adjust its
attributes through anmation or script, will always enclose no area.

It could have been described as enclosing a filled area of zero; but
instead we chose to say that it was never filled. The only practicval
upshot of thatwill be when considering pointer events.

The second statement is talking about the geometric shape of the
fill area and saying it is equal to the pure geometric shape of the
triangle, without considering stroke width, markers, etc. This has a
practical upshot as soon as you set fill:red; stroke:yellow;
stroke-opacity:0.2 so you can see the exact area filled.

And in the limiting case, when by script you add a third
(non-colinear) point to the polyline or path, or animate one of the
points of the triangle so that it is briefly colinear with the other
two during the animation, then the distinction makes sense.

AS> There does seem to be a fill in the Adobe viewer, because there is
AS> a line down the middle of my line when I make my line dashed and
AS> wide.

Whichever of the two possible definitions of the fill of a line
element had been chosen, according to sampling theory, the
contribution of the black line to the color of any pixel along its
length would be zero.

In practice, some graphics libraries have the concept of the
'hairline' or 'minimum width line' - remember the infamous 'zero width
lines' that so complicated peoples lives in the era of 300 dpi
postscript printers, when a photo typesetter was 1200dpi or better?
so, there will be artefacts in that case.

I discovered this artefact some time ago and did consider using it,
because i discovered it right after the ability to say
stroke-width:0.5px had been removed from the spec and I was sorely
missing my zoom-indifferent hairlines. But it was an artefact and not
reproducible on other implementations so I did not yield to temptation

AS> <svg width="592" height="473" viewBox="0 0 592 473">
AS> <g>
AS> <line stroke="#ff0000" x1="50" y1="200" x2="500" y2="200"
AS> stroke-dasharray="20 10" />
AS> </g>
AS> </svg>

AS> That line goes away when I set 'fill' to "none".

Or when you leave the fill as is and view it on a different viewer,
such as CSV.

PS taking a wild guess from your email address, if you are adding an
SVG output module to the Advanced Visualization System then, please
tell me when it is done.

 Chris                            mailto:chris@w3.org
Received on Friday, 15 November 2002 20:44:49 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 8 March 2017 09:46:54 UTC