Fwd: reply to CSS WG comments on SVG 1.2

[Here is a copy of the response the SVG Working Group sent
to the CSS Working Group. I've posted it here so that there
is a public copy (since the comments were public). The
real response went directly to the CSS private list]

Hello Bert,

Thanks for the comments. This is the official response from
the SVG Working Group.


On 29 Nov 2004, at 09:45, Bert Bos wrote:

 > 1) SIZE
 >
 > The SVG 1.2 spec is more than 1000 pages. That's maybe too much. At
 > least it is hard to do a thorough review and we think this list of
 > issues is not complete...

Thank you. We're changing the way we package our specifications which
should make it easier to review. Also, we describe in detail each
feature, and provide many examples. This makes the specification
larger but better.

 > 2) UNITLESS LENGTHS
 >
 > (Inherited issue from SVG 1.1)

Aside: Any system that uses arbitrary transformations must necessarily
use a unitless coordinate system, and therefore cannot use units
everywhere. Also, we have a lot of legacy content that requires a
unitless coordinate system.

 > Lengths must have units in CSS; without units some properties in CSS
 > are ambiguous (e.g. 'font', 'line-height'). Unitless lengths are in
 > fact not catered for by the CSS core syntax; implementations are
 > unable to implement both SVG and CSS in the same cascade (as
 > required by multi-namespace documents).

We have feedback from a number of implementers who have not found
implementing SVG and CSS in the same cascade a problem.

 > Thus we request that unitless lengths be limited to attributes, and
 > not allowed in stylesheets.

We agree that this issue in general is a problem. We propose the
following resolution:

- disallow unitless lengths in the 'font' shorthand property.
- we don't (yet) have 'line-height'.
- limiting unitless lengths to attributes breaks backwards
   compatibility with existing implementations and a W3C Recommendation
   since 2001, and is also inconsistent with a future Compound Document
   architecture which unifies XHTML, SVG and CSS.
- we believe the appropriate time to resolve the issue on the conflict
   between SVG's unitless lengths and strict CSS2 parsing is when the
   issue comes up in the Compound Document Formats Working Group.

 > 3) HOVER PROCESSING
 >
 > (Inherited issue from SVG 1.1)

 > SVG 1.1 suggests that canceling a mouse event can affect which
 > elements match the :hover pseudo-class. This is incorrect, the
 > :hover pseudo-class must be unaffected by DOM events processing.

Reading http://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes
[[[
CSS doesn't define which elements may be in the above states, or how
the states are entered and left. Scripting may change whether elements
react to user events or not, and different devices and UAs may have
different ways of pointing to, or activating elements.
]]]

Our understanding is that according your wording our specification of
hover is acceptable (for interoperability we define how the state is
entered and left). We use the W3C Recommendation for event processing
(DOM Events). We've integrated our hover processing with that event
model. Perhaps if there was an extension to the DOM Event model for
the "hover" event we'd consider making a change.

 > 4) UNCLEAR SCOPE
 >
 > It is unclear what the scope of SVG 1.2 is, which makes it hard to
 > comment on other aspects of the specification.
 >
 > We request that a scope section be added and a new last call draft
 > submitted, so that the draft can be more adequately reviewed.

Yes, we'll make appropriate adjustments to our "Introduction" chapter
in case there are clarifications needed in regards to the scope of the
SVG language.

 > 5) PROPERTIES WITH BOOLEAN VALUES
 >
 > Several properties in SVG 1.2 (including 'clip-to-self', 'knock-out',
 > 'background-fill', 'overlay-host', 'cache', 'static', 'snap',
 > 'focusable', and 'tooltip') accept boolean values ('true'/'false',
 > 'enable'/'disable'). To ensure that new values can be added to
 > properties in the future, CSS avoids boolean values and instead used
 > keywords that are self-descriptive. We request that the value names be
 > changed to be clearer.

We agree.

 > 6) PROPERTIES WITH DANGEROUSLY GENERIC NAMES
 >
 > Several properties in SVG 1.2 (including 'enable-background',
 > 'overlay', 'cache', 'static', 'snap', 'focusable', 'tooltip') have
 > names that are likely to clash with future CSS extensions. Since the
 > SVG-introduced properties apply only to specific SVG cases, whereas
 > the CSS properties are generic, we request that the SVG property names
 > be made more specific to avoid future clashes.


Like CSS, we tended to go for shorter property names rather than the
verbose forms favoured by XSL. This helps readability and makes
authoring content easier.

Regarding the naming being too generic and the potential for future
clashes, the SVG Working Group supports the suggestion that the W3C
establish a process to coordinate the way property names are
assigned. This process should then be used by all Working Groups that
create new properties, such as XSL, CSS and SVG. We don't think that a
Working Group should restrict another Group from choosing a property
name, especially when no use for a name has been found in the past 7
years. We expect most Working Groups will want to choose the most
appropriate names for new properties and don't think that avoiding
generic names is the best solution for content authors. We also think
that a long-term solution for avoiding naming conflicts should be
investigated - such as using namespaces with formatting properties

More details on our position can be found in the following messages:

http://lists.w3.org/Archives/Public/www-svg/2004Nov/0316.html
http://lists.w3.org/Archives/Member/w3c-css-wg/2004OctDec/0226.html
      (Member Only)


 > 7) OVERLAP WITH CSS
 >
 > a) We are concerned that section 4, Flowing text and graphics, 
overlaps
 > directly with CSS. We feel that instead of adding line layout to SVG,
 > it would be wiser to add a way to specify a fill shape to CSS.

We have the requirement to provide a simple method for automatic line
breaking in an environment without CSS. This continues to be the most
commonly requested feature from the days before SVG 1.0 REC, and is a
standard feature in nearly all graphical authoring tools.

Our next draft of SVG will have an revised method for this feature. It
aligns more closely with the existing SVG 1.0+ text features - only
adding automatic line breaking (with an option to allow the User Agent
to choose the break points). The end result can be easily expressed
using the SVG 1.0+ text elements. We also believe it has less overlap
with CSS layout. As a graphical language, we're replicating standard
graphic features and avoiding many text-layout features.


 > b) Section 5, Multiple pages, seems to overlap with CSS3 Paged Media. 
We
 > feel that instead of adding a new paginated layout algorithm, SVG
 > should integrate with the CSS paginated layout mechanisms.


Although we agree there is a superficial similarity between CSS3 Paged
Media and SVG's paging features they are not closely
related. Similarly, SVG's paging features and XSL-FO master pages are
only superficially similar. The term 'page' does not mean the same
thing in all technologies. In SVG, we needed a term which would make
sense for streaming animation (e.g. "scene") as well as one that would
make sense for print streams. We chose "page".

There are many differences between SVG's paging features and CSS3
Paged Media. SVG does not have dynamic page separation at runtime;
Rather, it is part of the document structure. Also, one key aspect of
SVG's paging is the tight integration with SMIL and its timing module
(important when streaming an animation). Another important difference
is the way SVG provides a final-form document that facilitates
resource management (e.g discarding a page's content once it has been
rendered). CSS3 Paged Media does not share these goals.


 > c) The 'rendering-color-space' property appears to be redundant with
 > CSS3 Color's 'color-profile' property.

No, it is not the same thing at all. Color-profile is for specifying
colors. Rendering-color-space is how to do interpolation and
combination of specified colors.

This is important for gradients, color animations, filters and alpha
blending/compositing.


 > d) The 'overlay' property appears to be similar in intent to CSS's
 > 'z-index' property. It would be good to use 'z-index' (in a
 > compatible way of course) so that implementations do not have to
 > cascade both properties simultaneously, using one for one namespace
 > and the other for the rest.

We had a lot of discussion about adopting 'z-index' but unfortunately
it causes a lot of problems with SVG's rendering model (another
example of a generic property name not being as generically useful as
you'd like). I think we all wanted this as a solution, but it would be
something that would cause performance problems.

SVG needed something where the "layer" is put into a completely
separate compositing phase. Also, we wanted the user agent to be able
to leverage the Operating System's underlying windowing technology if
possible.

The 'z-index' property only creates a stacking context within the
nearest containing viewport. It also interferes with the Painter's
model for rendering, which makes it incompatible with SVG.

Therefore, given all the incompatibilities and problems, we think
calling this property 'z-index' would be misleading.

 > e) The 'audio-level' property overlaps with properties in the CSS3
 > Voice and CSS3 Audio drafts. We feel that it is inappropriate for
 > the Graphics activity to be introducing sound-related features.

The reason we have an 'audio-level' property is that we have taken our
audio features from the SMIL language (in particular <audio> and
<video> elements). In SMIL, the "volume" of these elements is
controlled by the 'volume' property on the container elements. Since
we don't have SMIL containers, we were required to add a property
directly to the element. We renamed it 'audio-level' to align with the
features defined by the Voice Browser Working Group ('voice-level').

Regarding the introduction of sound-related features, we're instead
adding more integration of SMIL into SVG. These features are extremely
common in multimedia animations - a target application for SVG
content.


 > 8) CONFLICTS WITH CSS
 > a) The algorithm described in section 4, Flowing text and graphics, is
 > different from the CSS line layout algorithm. We feel that having two
 > different layout algorithms will cause problems for implementors.

Our revision of this feature allows for the user agent to control
the line layout, and thus is aligned with CSS.

 > b) The 'text-align' property in SVG 1.2 is different than in CSS. This
 > makes it impossible for the property to be used in a mixed-namespace
 > environment. We request that the property be used unchanged.

It is being used unchanged. The 'text-align' property is taken from
XSL because it is stable (REC from 2001), internationalized and does
not have problematic values such as 'left' and 'right'.

For details: http://www.w3.org/TR/xsl/slice7.html#text-align

 > c) The 'page-orientation' properties conflicts with the paged media
 > mechanisms of CSS.

We don't agree. Our 'page-orientation' property is a hint for
displaying the content; It doesn't actually effect the
content. However, we do think that our explanation of this property
could be improved and that 'page-orientation' should be an
attribute. Thanks for the feedback that encouraged us to notice this.

By the way, we really think CSS shouldn't have a property named 'size'
for all the reasons that you have given about generic property
naming. Also, it's confusing that CSS has a property named 'size' that
specifies the orientation of a page.

 > 9) EXTRANEOUS FEATURES
 >
 > a) We feel that the ':edited' pseudo-class is unnecessary given that 
it
 > maps directly to a simpler, existing selector. Adding pseudo-classes
 > should be considered expensive, and adding pseudo-classes without
 > defining how they work in non-SVG contexts should be avoided.

We agree that we should remove the ":edited" pseudo-class. Thank you.


 > b) The 'solid-color' property seems to introduce too many levels of
 > indirection. Given that the introduction of this property requires
 > that its value be computed (or computable) for every element in the
 > DOM, its limited usefulness doesn't seem to outweigh its cost. In
 > particular, note that an element's fill colour can now take the 
following
 > stops to be determined: cascade for 'fill' property, look up paint
 > server, cascade for 'solid-color', cascade for 'color'. This seems
 > excessive.

Having this level of indirection is extremely valuable. It allows the
color to be defined once, named and reused multiple times. It also
allows for animation and styling. This is the reason why many of our
color servers are properties ('stop-color' and
'lighting-color'). Having 'solid-color' as a property is consistent
with the rest of the language. We understand that it creates extra
processing for user agents, but feel that this extra processing is
justified.

As an aside, we were noticing that people were creating this effect by
referencing a gradient with two stops of the same color. This hack
causes twice as much indirection.

 > c) SVG 1.2 claims to introduce the ':highlight' pseudo-class. We
 > request that this property be removed from SVG until such time that
 > the SVG group has explained the purpose of this pseudo-class and the
 > CSS group has had the opportunity to examine it in more detail. In
 > particular it is unclear how this pseudo-class differs from the
 > ':target' pseudo-class. (In case there are any other new
 > pseudo-classes that were missed during this review, the same applies
 > to them.)

This is a request from the technical graphics community who identified
this as a critical missing feature. The differences between
':highlight' and ':target' are due to the behaviour of the SVG
fragment identifier syntax, which allows an optional viewTarget
parameter. ':highlight' is only active when a viewTarget is given,
whereas ':target' is active every time you follow a link. The SVG WG
may consider adding support for ':target' in the future, but
':highlight' is a different feature.

Details on SVG Fragment Identifiers:
http://www.w3.org/TR/SVG11/linking.html#SVGFragmentIdentifiers

 > 10) OTHER ISSUES
 >
 > a) It is unclear how the margin and indent properties apply to the 
flowed
 > text feature. Both properties are mentioned in passing but the model
 > is never fully explained. In particular, it appears to be different to
 > the CSS model in important ways, although exactly how different is
 > unclear due to the ambiguity of the description.

We've modified the flowed text feature to align it closely with the
standard text features of graphics systems and in the process removed
the need for layout properties. Therefore margin and indent no longer
apply.

 > b) Whether an element is focusable or not should not be controlled by 
a
 > property, since the cascade can depend on this information (due to the
 > ':focus' pseudo-class).

We agree. We are changing 'focusable' to be an attribute.

 > c) Given the introduction of rgba() in CSS3 Color, we recommend the
 > deprecation of the '*-opacity' properties in SVG and the adoption of
 > CSS3 rgba() colour syntax instead.

As we said when you introduced rgba(), we think it is the wrong
solution. We allowed rgba() in SVG 1.2 (and SVG 1.2 Tiny) until we
concluded (again) that it wasn't useful.

Here's a simple example:

- Fill an object with 50% transparent green and stroke it with 100%
   opaque blue.

- Animate the green fill to red and back every 10 seconds, forever.

- Fade the fill in and out (ie. animate the fill transparency from 50%
   to 0%) every 7 seconds, but only 5 times in total.

Try implementing this example using rgba() without '*-opacity'.

Also, we believe that having opacity always tied to a color value is
short-sighted. It is possible to paint an object with gradients and
patterns, not just colors. It must be possible to control the opacity
of the paint in all situations.

In summary, it is essential that the opacity values of color
properties are separable.

Therefore, we suggest that you consider removing the rgba() color
syntax from CSS3. We believe it will impose some unwanted restrictions
in the long term and have provided technical arguments to this effect
for many years.


 > 11) CR EXIT CRITERIA
 >
 > We suggest that SVG 1.2 use a similar CR Exit Criteria as is being 
used
 > for CSS 2.1.

Thanks for the suggestion. We'll consider this feedback when we are
discussing our CR exit criteria.

Dean,
for the SVG Working Group

Received on Monday, 28 February 2005 23:20:06 UTC