Re: [svg2] transform on <svg>

On Tue, 09 Dec 2014 12:43:39 +0100, Dr. Olaf Hoffmann  
<> wrote:

> Amelia Bellamy-Royds:
>> On 8 December 2014 at 11:44, Robert Longson <> wrote:
>>> I did not mean using fragment identifiers to set a view, I mean  
>>> something
>>> like #svgView(transform(scale(2)))
>> Apologies, I was forgetting that option.
>> The SVG 1.1 specs don't have any implementation details about what is
>> *supposed* to happen.
> See:

This is an orthogonal and IMHO less important issue to the one about  
transform attributes on the <svg> itself.

I think we should clarify in SVG2 that the CSS Transforms spec is  
normative for how 'transform' works.

> Especially:
> 'in the case of transform(...), the same meaning as the corresponding
> attribute has on a 'g' element).'
> If we have for example:
> <svg width="6cm" height="4cm" viewBox="-3 -2 6 4" version="1.1"
>      xmlns="">
>   <title>Transform example</title>
>   <circle r="3" />
> </svg>
> #svgView(transform(rotate(20)))
> corresponds clearly to:
> <svg width="6cm" height="4cm" viewBox="-3 -2 6 4" version="1.1"
>      xmlns="">
>   <title>Transform example</title>
>   <g transform="rotate(20)">
>     <rect x="-2" y="-1" width="4" height="2" />
>   </g>
> </svg>
> (there is no meaningful other way to add a g element with the intended
> effect).

I agree that the spec implies that's how #svgView(transform(...)) works,  
but it's too hand-wavy IMHO.

Sidenote: the SVGViewAttributes grammar also allows  
How that should work is currently undefined.

> This ensures:
> 'This form of addressing specifies the desired view of the document  
> (e.g., the
> region of the document to view, the initial zoom level) completely  
> within the
> SVG fragment specification.'
> If we assume, that a transform applied to the root svg element should  
> have
> the same effect than such an SVG fragment identifier, clearly CSS has  
> nothing
> to to with this.

An svgView transform could very well differ in how it's applied compared  
to being as an attribute directly on the <svg> element, assuming that's  
how we want to define it.

We could keep the "as if the transform was applied on a <g> element" rule  
by saying that the svgView transform is applied as a supplemental  
transform on <svg>.

The alternative is to handle it just like #svgView(viewBox()) i.e it just  
overrides the given attribute on the <svg>, which means that it gets  
applied using the normal presentation attribute rules. Amelia seems to  
favor this approach.

Erik Dahlstrom, Web Technology Developer, Opera Software
Co-Chair, W3C SVG Working Group

Received on Wednesday, 10 December 2014 16:12:07 UTC