Appendix L: Changes from SVG 1.1
Contents
This appendix is informative, not normative.
This appendix summarizes the changes that have been made since the
SVG 1.1 Second Edition Recommendation.
Changes made since the last SVG 2 Working Draft are highlighted.
L.1. Editorial changes
A number of stylistic changes have been made to the specification to make it more readable. These include the following:
- A change towards using styling similar to contemporary CSS specifications.
- Annotations have been added to the specification to reflect features that the Working Group
has resolved on including and for which a member of the group has committed to drive that feature.
- Define comma-wsp and wsp in the types chapter and reference these from all other grammars that need it.
- Changes to highlight that SVG can be used in HTML as well as in XML.
- Merged the metadata chapter with the document structure chapter.
- Updated IDL for SVGSVGElement marking the referenceElement argument in getIntersectionList and getEnclosureList as nullable.
L.2. Substantial changes
In additional to the editorial changes listed above, the following substantial additions, changes and removals
have been made.
L.2.1. Across the whole document
- References to the SVG DTD have been removed.
- IDL has been updated to use Web IDL syntax.
- Added "length" attribute and indexed property access to all list interfaces.
- Remove definition of <angle> type and reference CSS3-values.
- Change all coordinate types to <length> in preparation for referencing css3-values..
- Add the ‘script’ element to the content model of all elements.
- Changed the initialize, appendItem, replaceItem and insertItemBefore methods
on list objects to make a copy of any list item being inserted that is already
in another list.
- The ‘image’ and ‘script’ elements have gained a crossorigin attribute,
for use with the CORS-enabled fetch algorithm.
L.2.2. Concepts
L.2.3. Rendering Model chapter
- Update rendering model to refer to Compositing and Blending Specification.
- Moved z-index to this chapter. Removed non-normative text, keeping examples.
- Resolve issue 2 - removed reference to knock-out.
- Resolve issue 3 - rewrote description of how elements and groups are rendered.
- Resolve issue 4 - Don't mention each paint server type explicity.
- Resolve issue 6 - No changes required.
- Merge Clipping, Masking and Compositing chapter into this chapter (resolved issue 7 in process).
- Update 'Parent Compositing' section to
explicitly mention how each referencing mode composites.
- SVG root and foreignObject are no longer overflow:hidden in UA style sheet.
- overflow:auto may clip and show scroll bars in some cases.
- overflow:scroll may show scroll bars on svg elements.
- Removed definition of initial clipping path.
L.2.4. Basic Data Types and Interfaces chapter
- All appearance of SVGMatrix were replaced by DOMMatrix or DOMMatrixReadOnly.
- All appearance of SVGRect were replaced by DOMRect or DOMRectReadOnly.
- All appearance of SVGPoint were replaced by DOMPoint or DOMPointReadOnly.
- Removed the SVGStylable and SVGLangSpace interfaces and moved all of their members on to SVGElement.
- Turned SVGLocatable and SVGTransformable into SVGGraphicsElement,
which directly inherits from SVGElement.
- Added an SVGGraphicsElement interface.
- Added an SVGGeometryElement interface with isPointInFill and isPointInStroke methods.
- Removed the SVGExternalResourcesRequired interface.
- Added getStrokeBBox on SVGGraphicsElement to get the tight stroke bounding box.
- Make viewportElement and ownerSVGElement on SVGElement nullable.
- Removed the getPresentationAttribute operation on SVGElement and the SVGColor and SVGICCColor interfaces.
- Added focus and blur operations and tabIndex attribute to SVGElement.
- Added activeElement attribute to Document.
- Made SVGElement implement the GlobalEventHandlers interface from HTML.
- Removed getStrokeBBox from SVGGraphicsElement and extended getBBox with a dictionary argument that controls which parts of the element are included in the returned bounding box.
- Allow leading and trailing whitespace in <length>, <angle>, <number> and <integer>.
- Make whitespace include form feed (U+000C) to align with CSS and HTML.
- Remove basic data types already defined by CSS Values and Units.
- Remove list of color keywords. The list is part of CSS Colors 3 which is referenced normatively and a REC.
- Allow a single trailing comma-wsp in various list-typed attributes.
- Removed the xmlbase, xmllang and xmlspace attributes from the SVGElement interface.
- Removed the SVGViewSpec interface.
- Removed the style IDL attribute from SVGElement,
since CSSOM defines that for us.
- Removed the getTransformToElement method on
SVGGraphicsElement.
- Defined that getCTM on an outermost svg element
should work, and listed which transforms it should include.
- Defined attribute reflection in more depth,
including the effect it has on SVG DOM object liveness.
L.2.5. Document Structure chapter
- Deprecated the
suspendRedraw
, unsuspendRedraw
and unsuspendRedrawAll
methods on the SVGSVGElement interface.
- Removed the ‘externalResourcesRequired’ attribute.
- Added the ability to use 'auto' for the ‘width’ and ‘height’ attributes on ‘image’.
- Lifted the restriction on ‘use’ not being able to reference an entire document.
- Added ‘lang’ attribute on ‘desc’ and ‘title’ elements.
- Added section on WAI-ARIA attributes.
- Clarified that CSS transforms on an outermost svg element do not affect currentScale or currentTranslate. Defined the returned values on ‘svg’ elements that are not outermost svg element.
- Deprecated the rootElement attribute.
- Defined event handler content attributes and IDL attributes on the root ‘svg’ element to be for events fired at the Window, like HTML's event handler content attributes and IDL attribute on
body
.
- Moved the ‘image’ element to the Embedded Content chapter.
- Removed the
SVGElementInstance
and SVGElementInstanceList
interfaces, and the corresponding attributes on the SVGUseElement interface.
- Changed the ‘use’ element event flow to follow the Shadow DOM spec.
- Clarified that the ‘switch’ element does not affect processing of ‘script’ elements.
- Made the ‘width’ and ‘height’ attributes on the ‘svg’ element presentation attributes, and changed the initial value to
auto.
- Removed the baseProfile and version attributes from the ‘svg’ element.
- Deprecated the forceRedraw method on the SVGSVGElement interface and defined it to have no effect when called.
- Defined the
deselectAll method
on the SVGSVGElement interface in terms of the Selection API
and simultaneously deprecated it.
- Clarified that the ‘switch’ element does not affect the processing of ‘style’ elements.
- Clarified that the getIntersectionList and getEnclosureList methods on the SVGSVGElement interface do not return shadow tree elements.
- Removed the requiredFeatures attribute.
- Removed the currentView and useCurrentView properties on SVGSVGElement.
- Added SVGUnknownElement for handling unknown elements in the svg namespace.
- Added the ‘lang’ attribute in no namespace.
- Removed the
viewport
attribute from the SVGSVGElement interface.
- Removed the xml:base attribute.
- Moved the ‘discard’ element to
the split-out SVG Animations module.
L.2.6. Styling chapter
- Removed the ‘contentStyleType’ attribute.
- SVGStyleElement now implements LinkStyle.
- Updated user agent style sheet - inner svg elements and foreignObject elements are no longer set as overflow:hidden.
- Added hatch to list of elements with overflow:hidden in UA style sheet.
- Set the default value of transform-origin to '0 0' for all elements except root svg elements and svg elements that are the child of a foreignObject element.
- Substantially rewrote the chapter to be more concise.
- Defined that HTML ‘link’ elements
must load external style sheets.
- Specified the exact set of properties
that have presentation attributes, their names (when the presentation
attribute name does not match the property name), and on which elements
they are allowed.
- Added a list of properties defined in other
specifications that conforming SVG 2 user agents must support.
- Added UA style sheet rule to map the
deprecated ‘xml:space’ attribute to the
‘
white-space
’ property.
- Required that @font-face rules and
::first-letter & ::first-line pseudo-elements on ‘text’
elements must be supported.
- Required that all SVG and HTML
style sheets in an HTML document with inline SVG content must
apply to all content in the document.
L.2.7. Geometry Properties chapter
- Removed ‘pattern’ and ‘filter’ from the set of elements that the ‘
x
’ and ‘y
’ properties
apply to.
- Defined that ‘
width
’ and
‘height
’ property values of auto
are computed to 0 for SVG elements that
the properties apply to.
L.2.8. Coordinate Systems, Transformations and Units chapter
- Make SVGMatrix.skew{X,Y} throw an exception on bad values.
- Added improved wording on bounding box
from SVG Tiny 1.2, and an algorithm which can compute a bounding box for an element.
- Define bounding box for element with no position to be at (0,0).
- Removed the defer keyword from ‘preserveAspectRatio’.
- Add definition for 'current viewport'. Change SVG viewport to mean all viewports created by SVG elements.
L.2.9. Paths chapter
- Added new B and
b "bearing" path commands.
- Allow Z or z to fill in
missing path coordinate data in the previous command with the
coordinate of the initial point in the subpath.
- Define ‘path’, ‘polygon’ and ‘polyline’ elements with no data set (empty or zero valid commands) to not render.
- Removed the
SVGPathSeg*
and SVGAnimatedPathData
interfaces and the related methods on SVGPathElement.
L.2.10. Text chapter
- Added a number of missing attributes to the element summary boxes of the
‘text’ and ‘textPath’ elements.
- Added ‘
inline-size
’ presentation attribute to ‘text’, and a
section about ‘text-overflow
’ processing.
- Added ‘
white-space
’ property and deprecated ‘xml:space’ attribute.
- Removed the ‘kerning’ property.
- Added ‘d’ attribute to ‘textPath’.
- Added ability to reference basic shapes to ‘textPath’.
- Removed the 'tref' element.
- Removed the 'altGlyph', 'altGlyphDef',
'altGlyphItem' and 'glyphRef' elements.
- Defined the
selectSubString
method on the SVGTextContentElement interface in terms of the
Selection API and simultaneously deprecated it.
- Changed getComputedTextLength() to not include
‘dx’ and ‘dy’ values.
- Moved the discussion of ‘
width
’
and ‘height
’ properties to the Geometry Properties chapter.
L.2.11. Embedded Content chapter
- Added this chapter, which includes new
‘video’, ‘audio’, ‘iframe’, ‘canvas’,
‘source’ and ‘track’
elements that behave almost identically
to the equivalent HTML elements.
- Removed the SVG copies of
HTML's embedded content elements and instead allowed those
elements to be used in the HTML namespace within SVG
container elements.
- Removed the requirement to
ignore ‘
clip
’ and ‘overflow
’ on an SVG document
when referenced by an ‘image’ element.
L.2.12. Painting chapter
- Added more detail to the descriptions of the stroke properties and added algorithms
defining the exact shape a stroke must have.
- Added the ‘
paint-order
’ property.
- Moved the color-interpolation-filters property
to the Filter Effects specification.
- Added the ‘
buffered-rendering
’ property.
- Added the context-fill and context-stroke
paint values.
- Allowed <paint> values and marker properties to take the
child keyword and
<child-selector> values to support ID-less referencing.
- Added ‘
vector-effect
’ property to support non-scaling stroke.
- Added arcs value on ‘
stroke-linejoin
’.
- Added the 'auto-start-reverse'
attribute to the ‘orient’ attribute on ‘marker’.
- Removed the SVGPaint interface.
- Extended the definitions of ‘
fill
’ and
‘stroke
’ <paint> so that they can take multiple paints.
- Added the ‘
z-index
’ property.
- Split out some new marker and stroke related
features into the SVG Markers
and SVG Strokes
specifications.
- Removed <child-selector> paint values.
L.2.13. Color chapter
- Added requirements for images to be color managed.
- Added new color syntaxes from the SVG Color specification: RGBA colors, HSL colors,
LAB colors, ICC named colors and device colors.
- Removed the ‘color-profile’ property.
- Removed the ‘color-profile’ element.
L.2.14. Paint Servers chapter
- Added the ‘solidcolor’ element and its two properties ‘
solid-color
’
and ‘solid-opacity
’, ported over from SVG Tiny 1.2. (Renamed 'solidColor' to
'solidcolor'.)
- Added an ‘fr’ attribute to the ‘radialGradient’ element,
which allows specifying the radius of the focal circle.
- Added a section for mesh gradients, defining the ‘mesh’, ‘meshrow’
and ‘meshpatch’ elements. (Renamed 'meshGradient' to 'mesh', 'meshRow' to 'meshrow',
and 'meshPatch' to 'meshpatch'.)
- Added a section for hatches, defining the ‘hatch’ and ‘hatchpath’ elements.
(Renamed 'hatchPath' to 'hatchpath'.)
- Renamed ‘gradientTransform’ on the ‘mesh’ element
and ‘hatchTransform’ on the ‘hatch’ element to ‘transform’.
L.2.15. Clipping, Masking and Compositing chapter
- SVG now references CSS Masking [CSS-MASKING] specification.
- Removed definition of clipping/masking properties and elements.
- Keep short introduction to clipping/masking and add reference to CSS Masking
- Added reference to Compositing and Blending spec. Simple alpha compositing it mandatory.
- The ‘
overflow
’ property should be respected on the outermost svg elements inline in html.
- Merge Clipping, Masking and Compositing chapter into Rendering Model chapter.
L.2.16. Filter Effects chapter
- Removed the body of this chapter and replaced it with a link to the
Filter Effect specification.
L.2.17. Interactivity chapter
- Added the ‘tabindex’ attribute.
- Corrected the definition of the ‘href’ attribute on
the ‘cursor’ element to take an URL that is not in a CSS-like
functional form.
- Added the bounding-box keyword to ‘
pointer-events
’.
- Replaced SVGLoad, SVGAbort, SVGError and SVGUnload with load, abort, error and unload respectively.
- Required that only structurally external elements and the outermost svg element must fire load events.
- Replaced SVGResize and SVGScroll with resize and scroll respectively.
- Removed DOMActivate.
- Replaced DOMFocusIn and DOMFocusOut with focusin and focusout, and added the blur event.
- Added keyboard events.
- Removed mutation events.
L.2.18. Linking chapter
- Added animation elements to the content model of ‘view’.
- Added the possibility to link to SVG resources with fragment identifiers defined by the Media Fragments specification.
- Removed the ‘xlink:type’, ‘xlink:role’, ‘xlink:arcrole’, ‘xlink:show’ and ‘xlink:actuate’ attributes.
- Deprecated the ‘xlink:href’ attribute in favor of using ‘href’ without a namespace.
- Deprecated the ‘xlink:title’ attribute in favor of using child
‘title’ elements.
- Allowed spaces in SVG view fragments.
- Defined how "pixel:" and "percent:" spatial media
fragments are interpreted.
- Made linking to ‘view’ elements not
cause an implicit view box transformation to show the nearest ancestor
‘svg’ element.
- Clarified that unspecified SVG view fragment
parameters do not cause the corresponding attributes to be reset to their
initial values.
- Removed the ‘viewTarget’ attribute
on the ‘view’ element and the corresponding SVG view fragment
parameter.
L.2.19. Scripting chapter
- Removed the ‘contentScriptType’ attribute.
- Removed ‘onload’ from AnimationEvents.
- Merged this entire chapter into the Interactivity chapter.
L.2.20. Animation chapter
L.2.21. Fonts chapter
- Added WOFF requirement, rearranged content.
- Removed this chapter and the SVG Fonts
feature it contained, including the
‘font’,
‘glyph’,
‘missing-glyph’,
‘hkern’,
‘vkern’,
‘font-face’,
‘font-face-src’,
‘font-face-uri’,
‘font-face-format’ and
‘font-face-name’ elements
and their corresponding IDL interfaces.
L.2.22. Extensibility chapter
L.2.23. Document Type Definition appendix
- Removed this appendix, as SVG 2 is not defined in terms of a DTD.
L.2.24. SVG Document Object Model (DOM) appendix
- Added text to require IDL fragments be interpreted as Web IDL.
- Removed some unnecessary text.
- Removed mention of read only nodes in the DOM, since that concept no longer
exists in DOM4.
- Removed the table defining how properties
are exposed as specific types of CSSValue objects, since CSSValue has been
removed.
L.2.25. Java Language Binding appendix
- Removed this appendix, as language bindings are now defined by
Web IDL.
L.2.26. ECMAScript Language Binding appendix
- Removed this appendix, as language bindings are now defined by
Web IDL.
L.2.27. References appendix
- Removed normative reference to CSS2.
- Removed informative reference to DOM Level 3 Core.
- Changed normative reference to DOM Level 1 Core to be informative.
- Changed normative reference from DOM Level 2 Core to DOM4.
- Changed informative reference to SMIL 3 to be normative.
- Added normative references to CSS3 Color, CSS3 Fonts, CSS3 Line Box, CSS3 Transforms, CSS3 UI, CSS3 Values and Units, CSS4 Images, Filter Effects, WOFF, Web IDL.
- Added informative references to CSS 3 Transitions and Animations.
- Updated reference from DOM Level 2 Events to DOM Level 3 Events and added a normative reference to UI Events.
- Added normative reference to WAI-ARIA 1.1.
- Added normative reference to Shadow DOM.
L.2.28. IDL Index appendix
L.2.29. Feature Strings