- From: <alex@bellandwhistle.net>
- Date: Fri, 15 Nov 2013 10:56:14 -0800
- To: www-svg@w3.org
- Cc: Dr.O.Hoffmann@gmx.de
On 2013-11-15 03:36, Dr. Olaf Hoffmann wrote:
> If you have stroke-linecap="round' for paths of zero length, the
> result will be invisible, if this is removed by styling.
> If you have spiked curves with specific requirements for
> stroke-miterlimit, the result will be nonsense, if this is
> removed by styling.
This is all summarized in your (and also my example). Understood and
agreed that there are multiple stroke-* attributes. I did read your
original post :)
> And if different stroke presentation attributes are noted, because the
> order is not important for attributes, one has to define for SVG 2,
> what applies, if someone notes
> <path d="M0 0 100 0" stroke-width="10" stroke="red"
> stroke-linecap="round" />
It might be best to define CSS ‘stroke’ as a shorthand, but leave the
presentation attribute ‘stroke’ as a longhand (essentially an alias for
stroke-color), and mark ‘stroke’ as deprecated. So the width and linecap
in your example would be retained in all versions. Alternatively, the
interpretion of the presentation attribute ‘stroke’ as a shorthand could
be conditional upon a 2.0 document version, as Paul suggested. My
overall sense is that shorthands are very useful specifically in a CSS
context, with most major bugs finally resolved, but a real source of
parsing, inheritance, and override issues in other contexts, getting the
author lots of compatibility issues for very little convenience. I agree
that attempting SMIL animation of a shorthand is in practice likely to
always work out miserably for everyone on all sides: the WG,
implementers, and authors.
My suggestion is that the ‘stroke’ attribute in SVG2 be treated exactly
the same as the 'stroke' attribute in 1.1, except that ‘stroke-color’
attribute, when supplied, will always override the ‘stroke’ attribute so
that:
<path stroke=“red” stroke-color=“green”/>
will be stroked green. This is an edge case though, to deal with sloppy
authoring. More commonly authors could desiring maximum compatibility
would write:
<path stroke=“green” stroke-color=“green”/>
if they wanted compatibility with 1.1 viewers, which will ignore
“stroke-color”. Given the current pace of the browser release cycle, I
think it's possible to overestimate breakage in a web context.
> As mentioned above, the order is not relevant, therefore I never cared
> about this - especially for the large amount of hand-coded documents
> or those done by author scripts (PHP for example), there will be no
> specific order.
Yes, but obviously, order does matter for the CSS cascade. You've
asserted that defining CSS ‘stroke’ to be a shorthand *IN A CSS CONTEXT*
(which is the point Dirk was originally raising) would break “most” (!)
existing content. For this assertion to be true, it would have to be
true that:
1) The vast majority of existing SVG content uses external stylesheets.
2) The vast majority of those stylesheets use the ‘stroke’ property.
3) The vast majority of the referenced content has stroke-*
presentation attributes that would be reset by defining CSS ‘stroke’ to
a shorthand, and those presentation attributes are not restated later as
in the applied stylesheet as CSS properties that fully preserve the
desired appearance, including any animations.
I find every one of these points dubious. If you’re going to make this
argument, I think we need to see some numbers. Does the WG have a way to
assess breakage arguments, other than this “finger-in-the-air” back and
forth? Does anyone have a large database of existing content that can be
browsed headlessly to check usage patterns in the wild? What’s needed is
metrics. I know the CSS WG occasionally does PhantomJS testing. I hope
we can all agree there’s a threshold below which some breakage is
acceptable.
As Rik pointed out, CSS stylesheets generated by Illustrator always puts
the stroke first in stylesheets. Re-pasting his example:
<style type="text/css">
.st{fill:#00FF00;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:12;}
</style>
<rect x="246" y="59" class="st" width="374" height="266"/>
Similarly, script-generated content (e.g. D3 and Raphael) basically
doesn’t use CSS (with a very few unrelated exceptions). So there’s no
breakage issue there. For my part, I've never authored a single file
that would be broken by this change.
Cheers,
Alex
Received on Friday, 15 November 2013 18:56:44 UTC