Re: [css3-transforms] scale 0 on non-scaling strokes

Rik Cabanier:

> However, if the non-scaling stroke follows the steps listed in the spec, it
> will still disappear:
>
> The resulting outline is transformed back to the user coordinate
> system<http://www.w3.org/TR/SVGTiny12/intro.html#TermUserCoordinateSystem>
>

The essential sentence is:
"Sometimes it is of interest to let the outline of an object keep its original 
width no matter which transforms are applied to it."
Obviously for specific situations, you cannot get the correct result with
an inversion of a matrix. This is the same as for contrained transformation.
Therefore after a hint this was mentioned there explicitly:
http://www.w3.org/TR/SVGTiny12/coords.html#transform-ref
You simply have to use another method to get the right result
(what might be in general a good idea to avoid numerically 
sometimes risky method to calculate an inverse matrix ;o)

non-scaling-stroke does not mention that one has to use the inverse
matrix, therefore it is not defined, how to transform back to get the
intended effect "Sometimes it is of interest to let the outline of an object 
keep its original width no matter which transforms are applied to it."
and "The resulting visual effect of this modification is that stroke width is 
not dependent on the transformations of the element (including 
non-uniform scaling and shear transformations) and zoom level.".
http://www.w3.org/TR/SVGTiny12/painting.html#NonScalingStroke

The first sentence of 11.5 and the lasts for non-scaling-stroke
clearly indicate, what the intended effect is. Shear transformations
are explictly noted as well as scaling (this includes scaling to 0) -
therefore SVG tiny 1.2 clearly already defines, that the stroke-width
remains the same for all these cases.
It does not mention in detail, how to get this effect for such
problematic cases, but it pronounces the essential thing, that the
stroke will always have the same width as the visual effect one
has to expect. There is no exception.


> The spec is unclear here. 

It is only left to the implementation to get an effective method.
Obviously one can do similar things as for constraint transformations.
But of course, it would have been better to add a similar comment
as for constraint transformations.
Because no inversion was mentioned here, I did not ask for
clarification here as I did for constraint transformations.
Presumably it could have avoided such discussions, if I had
assumed, that here a similar interpretation problem  can 
occur as well, but in these days I assumed, that the intended
effect is explained sufficiently, different from the situation of
constraint transformations, where I asked for clarification.


> I *think* it implies that the shape transformed 
> back by applying the inverse of the CTM and attaching the CTM hence still
> disappearing.

An inversion is not mentioned and not a precise method with CTMs 
to get the effect...

...
>
> This is one of the reasons I don't like skew. Spec that have
> discontinuities (flickering/going to infinity) are broken.

Could have been defined more clever without an angle 
in SVG 1.0 to avoid such effects, but now too late ...
Skewing with a number could have been more meanigful
as well for paced animation of skewing.
On the other hand, if you define it not with tan(angle) but
with a number, authors may get trouble with the limited
number range in the tiny profiles - therefore maybe it
is still better to use the angle than a number for some
use cases.



Olaf

Received on Sunday, 13 May 2012 18:51:56 UTC