Appendix L: Change History
Changes with the 03-March-2000 SVG Draft Specification
-
Global/miscellaneous changes
- With this public draft, there are now two variants of SVG:
Stylable SVG (rendering properties assigned via a style sheet language) and
Exchange SVG
(rendering properties assigned via XML attributes). The differences between
the two are described in Stylable SVG and Exchange SVG.
- Moved the Error Processing section out of the Introduction chapter
into the Implementation Requirements appendix. This is purely
an organizational change with no impact on the language or
how it is implemented.
- Removed all old change history. These can be reviewed by looking at
older versions of the specification. Only changes since the
initial Last Call document of August 12, 1999 are provided.
- Changed actuate='user|auto' to actuate='onRequest|onLoad' per the
most recent XLink draft.
- DOM: Major cleanup of the DOM interfaces. Sections that had been incompletely documented
now have complete documentation. Included definitions of interfaces missing
from previous specifications, such as interfaces corresponding to the filter
effects elements.
- DOM: Added three new appendices for the DOM's IDL definitions, its Java bindings
and its ECMA Script bindings.
- DOM: Per feedback from the DOM working group, changed all constants to be prefixed
by "SVG_" rather than "kSVG_".
- DOM: Changed any names that had the string 'Icc' or 'Rgb' to 'ICC' or 'RGB'
to achieve a more consistent capitalization strategy across the SVG DOM.
-
DOM: Modularized the DOM interface definitions to define separate
interfaces for commonly used collections of attributes, and then redefine
the various element definitions such that the element is defined to
support the appropriate mini-interfaces rather than having each element
expand the associated properties and methods inline:
- SVGLangSpace, corresponding to 'xml:lang' and 'xml:space'
- SVGTests, corresponding to 'system-required' and 'system-language'
- SVGTransformable,
corresponding to 'transform'
- SVGURIReference, corresponding to 'href' and the other associated
XLink attributes
- SVGFitToViewBox, corresponding to all elements that have attributes
'viewBox' and 'preserveAspectRatio'
- SVGList, which is a general purpose interface for maintaining an
ordered list of children.
Note that part of the clean-up was adding SVGTests to the
DOM interfaces corresponding to elements which have attributes system-required
and system-language.
- DOM: Changed all interfaces that correspond to SVG elements (e.g, 'path') which
can take on event attributes (e.g., onclick) so that the DOM interfaces
for the elements now explicitly implement EventTarget.
-
Changes to Introduction
- Changed the name of section 1.2 to
"SVG MIME type, file name extension and Macintosh file type"
and recommended that SVG files on all platforms have extension ".svg"
and that the Mac file type is "svg " (space as fourth letter).
-
Changes to Basic Data Types and Interfaces
- DOM: Added exception SVG_WRONG_TYPE_ERR to some of the interfaces
for the case where an invalid unit type was specified.
- DOM: Explicitly defined the DOMException values raised for various methods.
- DOM: Provided a more complete description of UNKNOWN and UNSPECIFIED values.
- DOM: Removed the NUMBER value type for SVGInteger as it is the same
as UNSPECIFIED.
- DOM: For SVGLengthList, made method initialize() return the passed
in parameter to make it consistent with the other methods.
- DOM: For SVGAngle, changed attribute 'unittype' to 'unitType'
and "angleInSpecifiedUnits", etc. to "valueInSpecifiedUnits", etc. to make
consistent with rest of the SVG DOM.
- DOM: Added generic base class SVGUnitTypes, which is shared by all
elements which have an attribute with possible values userSpace, userSpaceOnUse
and objectBoundingBox.
-
Changes to Styling
- Defined explicitly which CSS2 pseudo elements are supported:
:hover, :active, :focus, :first-child, :visited, :link and :lang.
- Reworded the description of cascading and inheritance rules
to be more explicit about SVG's compatibility with CSS2.
Copied a couple of sentences out of the CSS2 specification
and included links to the CSS2 sections on inheritance,
specified and computed values.
- DOM: Added definitions of CSSColorProfileRule and SVGCSSRule to
provide a suitable DOM interface for @color-profile.
- DOM: Various additions and modifications to exception definitions.
- Moved discussion of aural properties from accessibility appendix into
this chapter.
- Added 'use', 'image' and 'mask' to the list of elements in the
default style sheet which have 'overflow:hidden' as these elements
are potentially viewport-creating elements and the 'overflow:hidden'
applies to all viewport-creating elements.
- Changed the 'style' attribute from animatable to non-animatable
as all of the properties inside the attribute are already animatable.
- Made the 'type' attribute on the 'style' element #REQUIRED; thus,
there is no longer a default of "text/css". This matches HTML.
- Added a 'contentStyleType' attribute to the 'svg' element to correspond
to the previously defined 'contentScriptType' attribute. The default value
for 'contentStyleType' is "text/css"; thus, all values for 'style' attributes
default to CSS.
- Added "svg { width:attr(width); height:attr(height) }" to the default style sheet.
Reworded and cleaned up the descriptions in the section on the default style sheet.
-
Changes to Document Structure
- Removed restriction on forward referencing.
The restriction prevented compatibility with SMIL/Animation, was inconsistent
with other web standards, did not save implementers effort because
resources not being available immediately has to be dealt with already,
and the restriction might prove difficult for some implementers than
not having the restriction.
- Removed restriction that all referenced elements be defined in a 'defs'.
The restriction prevented compatibility with SMIL/Animation and metadata
reference objectives. Furthermore, there were worthwhile cases where
file size was negatively impacted by the restriction. The restriction
is now an authoring guideline which recommends that referenced elements
by defined inside of a 'defs', largely to promote understandability
and accessibility. Now, 'defs' and 'g' have the same content model,
with the important distinction that the contents of a 'defs' do not
drawn when the document is rendered as SVG on visual media.
As part of the effort to make 'defs' and 'g' closely aligned,
added a 'transform' attribute to 'defs'. The 'defs' example in the spec
was modified slightly to reflect the changes.
- Modified features strings to be of the format "org.w3c.svg.*" per
feedback from the DOM WG.
- Added a paragraph to the description of the 'title' element stating
that the 'title' subelement to an 'svg' element serves the purposes
of identifying the contents of the whole document and that authors
should provide such a subelement and that user agents should display
that subelement.
This was done to make the language definition compatible with the description
of the title property description on the SVGDocument DOM interface
and to provide a defined way of telling user agents what string to
put in the window title for stand-alone SVG documents.
- Clarified the wording for 'defs', 'desc' and 'title' to say that
these elements do not render with the document is being rendered as SVG
on visual media.
- Explicitly indicated that a 'use' can reference another 'use'.
- Added the same child elements to an 'svg' that had been allowed on a 'g' or 'defs'.
- More precisely defined how property values on referenced elements
operate when the referenced element is rendered via a 'use' element.
Using CSS terminology, property values that result from the CSS
cascade, such as inline style or style assigned via style sheet selectors,
carry over into a 'use' instance.
- Changed the description of referencing to say xpointer(id(...))
instead of xptr(id(...)) due to change in XPointer Last Call draft of 06Dec1999.
- DOM: Added the DOM2 DocumentEvent interface to the SVGDocument object
explicitly. (DOM2 says that it is expected that all environments which
support events will implement the DocumentEvent interface on its document
objects.) Also added the DocumentEvent interface to the SVGSVGElement
interface so that the createEvent() method is inherited and doesn't
need to be redefined in the SVG DOM documentation.
- DOM: Added some hit testing methods to SVGSVGElement, as hit testing
capabilities were previously incomplete.
- DOM: Fixed bug in DOM definitions where viewBox and preserveAspectRatio
had been put in the DOM definitions for 'use' and 'image' inadvertently.
- DOM: Included more details on viewport attribute for interface SVGSVGElement.
- DOM: Included more details on useCurrentView and currentView attributes
for interface SVGSVGElement.
- DOM: Packaged up the getSVGDocument() method in a GetSVGDocument
interface to match the approach in DOM2 for packaging getComputedStyle()
and getOverrideStyle(). (This change is only a documentation change
and requires no implementation changes.)
- DOM: Various additions and modifications to exception definitions.
- Added new attribute 'externalResourcesRequired' to allow
authors to control which externally-referenced files must be
present for a document to be considered correct.
- Added examples to 'use' element to show the visual
effect in terms of alternative SVG code which results
in the same picture but without the 'use'.
- Cleaned up the description of the 'symbol' element
to remove incorrect statements about applications of 'symbol' elements
and described how a 'symbol' differs from a 'g'.
- Changed all of the feature strings to use a period to separate the major
sub-names. Thus, instead of "SVGStatic" we now have "SVG.Static".
- Added comments to the descriptions of the 'g' and 'symbol'
elements about how use of each promotes accessibility.
-
Changes to Coordinate Systems, Transformations and Units
- Changed the write-up on viewBox and preserveAspectRatio to indicate
that the default value for preserveAspectRatio is "xMidYMid meet".
The ViewBox example had to be changed to set preserveAspectRatio="none"
to make the example correct.
- Added paragraphs and bullets to describe explicitly the formulas
for converting objectBoundingBox-relative values into corresponding
values in user space after feedback from an implementer that this wasn't clear.
- DOM: Fixed a bug in the DOM where there was no way to modify an existing SVGTransform
from one type of transformation to another. Added methods setMatrix, setScale, etc. As
a result of the new methods, changed attribute matrix to readonly.
- DOM: Renamed method scaleNonOrthogonal to scaleNonUniform.
- DOM: Additional detail for method rotateFromVector, including statement
that x and y cannot be zero.
- DOM: Various additions and modifications to exception definitions.
- DOM: SVGTransformList now inherits from SVGList.
- Added a sentence to the Initial Viewport section to say that
unitless values for width= and height= on the outermost 'svg'
element is equivalent to "px" values. Improved the clarity on
the description of the example in the same section.
-
Changes to Paths
- Provided some details for animating path data.
- DOM: Various additions and modifications to exception definitions.
- DOM: Modified packaging of path segments to reuse the newly defined
SVGList interface.
- DOM: Provided additional details on SVGPathSeg attributes.
- DOM: A few changes to SVGPathElement and SVGPathSeg to allow
for maintenance of existing path commands. Removed readonly designations
on pathSegType and pathSegTypeAsLetter, as this prevented a path segment
from changing from one type to another, and as a result prevented the
creation of new SVGPathSeg objects. Added a createSVGPathSeg call on
SVGPathElement as there was no way to create an SVGPathSeg.
- DOM: Renamed x0,y0,x1,y1 to x1,y1,x2,y2 on SVGPathSeg.
- DOM: Removed attributes ownerSVGDocument, previousSibling, nextSibling
and parentPath from SVGPathSeg as other interfaces which are members
of lists do not have similar facilities.
-
Changes to Basic shapes
- Removed statement about negative values for rx, ry attributes being treated
as zeroes, as this was inconsistent with statement earlier that the absolute
value of these properties was used instead.
-
Changes to Text
- Added system-required and system-language to 'altGlyph' to be consistent
with other elements that can hold text content.
- Added 'desc' and 'title' children to 'text' element, per feedback
from WAI reviewers.
- Fixed DTD error and removed 'use' as a child of a 'text' element.
- Changed DTD definition of 'a', 'text', 'tspan' and 'textPath' elements
to allow it to be used within a 'text' element. (For details, see descriptions
in other sections.)
- Added paragraph recommending that at most one 'desc', 'title' or 'defs'
be provided for each 'text'.
- Incorporated updated descriptions on baseline-alignment operators
from collaboration among the XSL, CSS and I18N groups. Renamed and re-organized
the section formerly titled "Text alignment properties". Incorporated new property
'dominant-baseline'. Renamed 'glyph-anchor' to 'baseline-identifier'.
Added informative references to the Open Type specification.
- Fixed 'dominant-baseline' to say it only applies to 'text' elements.
(Previously, it had said as much in the text but not in the property definition.)
-
Changes to Painting: Filling, Stroking and Marker Symbols
- Removed vestigial text about using percentages on the 'fill-opacity'
and 'stroke-opacity' properties. (Percentages aren't allowed, only
fractions from 0 to 1.)
- Explicitly state that stroke-dasharray does not support additive animation.
- For attribute markerUnits, changed string 'stroke-width' to 'strokeWidth'
to match camel case convention for attribute values.
- DOM: Modified packaging of colors in an SVGICCColor to reuse the
newly defined SVGList interface.
Added attribute colorProfile to match the corresponding recent change
in the language specification.
- DOM: Moved definitions of SVGColor and SVGICCColor into color.html.
- Changed all of the rendering properties from non-animatable to animatable
as there was recognized value for this and it appears as easy to implement as not implement.
-
Changes to Color
- In the example syntax for @color-profile, removed the colon from
"@color-profile: {...}" as the colon in incorrect CSS syntax.
- DOM: Moved definitions of SVGColor and SVGICCColor from painting.html
into this file.
-
Changes to Gradients and Patterns
- Added attribute 'class' to the 'stop' element to make in consistent
with all other stylable elements.
- Added cx and cy attributes and modified the r attribute
in the radial gradient example so that the example will appear
in its entirety when rendered.
- Fixed an omission in earlier specs with the 'stop-color' property.
Now the spec shows that currentColor and ICC-based color can be specified
for the property.
- DOM: Added an UNKNOWN constant for spread method to make consistent
with the rest of the DOM.
-
Changes to Clipping, Masking and Compositing
- Removed vestigial text about using percentages on the 'opacity'
property. (Percentages aren't allowed, only fractions from 0 to 1.)
-
Changes to Filter Effects
- Major rewrite of the chapter. The chapter now uses the
same formatting style as the remainder of the specification.
Added many, many hyperlinks. Cleaned up many of the descriptions.
Added examples.
- On feTurbulence, consolidated attribute 'baseFrequencyX' and 'baseFrequencyY' into
a single attribute 'baseFrequency' to make it consistent with other
attributes on various filter effects.
- Added attributes to 'feImage' to support requirements for Exchange SVG
and its documented ability to reference files or artwork elements.
- Added new filter effect feConvolveMatrix, which allows for arbitrary
n-by-m convolutionts.
- Fixes to definition of the 'filter' property.
Previously, the 'inherit' value was omitted, and it wasn't stated that
the property was animatable.
- The stdDeviation attribute to feGaussianBlur can now take
one or two values. If two values are provided, then the first
value is stdDeviationX and the second is stdDeviationY.
- Included detail algorithms in the form of C language code for
feTurbulence. Added attribute seed to allow the user to provide
an initial seed value for the pseudo random number generator.
- Provided missing formulas for lighten and darken modes for feBlend.
Expressed other formulas more simply.
-
Changes to Interactivity
- Fixed error in DOM interfaces were keywords "readonly" and "attribute"
were left out of interface definitions.
- Explicitly state that enable-background in not animatable.
-
Changes to Linking
- Changed the description of referencing to say xpointer(id(...))
instead of xptr(id(...)) due to change in XPointer Last Call draft of 06Dec1999.
- Fixed error in DOM interfaces where keywords "readonly" and "attribute"
were left out of interface definitions.
- Changed DTD definition of 'a' element to allow it to be used within
a 'text' element.
- Added paragraph recommending that at most one 'desc', 'title' or 'defs'
be provided for each 'a'.
- Added standard container attributes to the 'a' element to make consistent
with other container elements.
-
Changes to Scripting
- Fixed ECMA Script example to be valid ECMA Script (had
been missing the string "function") and replace a call to beep(),
which doesn't work on most systems, with logic that does work.
- Fixed bug in DOM definition for interface SVGScriptElement where
property target had been put in advertently.
- Changed contentScriptType attribute on 'svg' element to have
a default value of 'text/ecmascript'. Referenced RFC2045 for
how to specify a value for %ContentType;. Because of these changes,
eliminated discussion about HTTP header handshaking.
- Changed attribute 'language' to attribute 'type' to fix a long-standing
mistake in the SVG specification.
-
Changes to Animation
- Updated to the definition of the ElementTimeControl and TimeEvent interfaces from the
latest SMIL Animation draft. There is a TimeEvent which
has event names "begin", "end" and "repeat". Method beginElementAtTimeOffset
is now called beginElementAt. Method beginElementAtFractionOffset has
been eliminated. There is a new method endElementAt.
- Consolidate 'end' and 'endActive' attributes into a single 'end' attribute
to conform to latest SMIL Animation spec.
- Repackaged SVGAnimationEvent to match the latest work from the
SYMM working group on the intended direction for how animation events
will be packaged in SMIL Animation.
- Shifted various attributes and methods from SVGAnimationEvent
to SVGAnimationElement, per feedback comments from the SYMM working group.
- Changed name of option "auto-reflect" for the 'rotate' attribute
in 'animateMotion' to "auto-reverse" because "auto-reflect" was a misnomer
- it didn't reflect, it just added a supplemental 180 degree rotation.
- For improved clarity, reworded the description of the effect of
additive behavior for 'animateTransform'.
- State explicitly that event names in animation do not include the 'on'
prefix. Thus, it is 'click', not 'onclick'.
- Fixed bug in definitions of attributes 'additive' and 'accumulate'
where the spec still said true/false instead of replace/sum and none/sum.
- Various other minor modifications to conform to latest SMIL Animation spec.
-
Changes to Fonts
- Fixed error in DOM interfaces.
All occurrences of SVGBaseKernElement are now SVGKernBaseElement.
- Added comments
about how SVG fonts can promote accessibility.
-
Changes to Metadata
- Removed the section talking about an SVG-specific metadata schema.
Metadata activities specific to SVG will proceed as independent activities
and will not be part of the SVG language specification.
-
Changes to SVG DOM
- Included examples for defining event listeners in Java and ECMA Script
and described explicitly how event attributes work as event listeners in ECMA Script
(i.e., receiving an Event object named evt).
-
Changes to SVG DTD
- A large number of changes related to having having separate
namespaces for Stylable SVG and Exchange SVG. There are now
three DTDs, shared, stylable and Exchange, where the shared DTD is
included by the stylable and Exchange DTDs.
- A large number of DTD cleanup actions. Most uses of CDATA have
been replaced by an entity reference which describes the type of
content a given attribute can have, such as "%Coordinate;".
Performed a degree of triage to ensure consistent content among
elements of the same category, such as all "container elements"
having test attributes.
- Renamed the title from "Document Type Definition" to "DTDs" to
conform to documentation approach from the XHTML 1.0 Recomendation.
- Fixed inadvertent omission and added attribute 'id' to all elements
which didn't have it before, which includes the 'style', 'script',
and individual filter effects (i.e., feBlend, feComposite, etc.).
- Add xml:lang and xml:space to 'altGlyph' since this element can
have character data content, and everything else with character data
content has these attributes.
- Fixed bug where 'altGlyph' was spelled 'altglyph' in a few spots.
- Updated the URL for the XLink namespace to conform to the 20Dec1999 draft.
- Fixed typo in definition of feBlend where it said "multiple" instead of "multiply".
- Made the "type" attribute in feColorMatrix an enumerated list rather
than just CDATA.
- Removed attribute "in" from feMerge to fix a bug in the DTD.
- Changed DTD definition of 'a', 'text', 'tspan' and 'textPath' elements
to allow it to be used within a 'text' element. (For details, see descriptions
in other sections.)
- Fixed errors in DTD that prevented validation.
Removed one occurrence of %testAttrs; from the 'svg' element.
Loosened the DTD for 'text' and 'a' to allow for
any number of 'desc', 'title' (or 'defs' for 'a') child elements
in any order or position; however, the spec strongly recommends
that only one 'desc' 'title or 'defs' appear for any element.
- Removed refX, refY attributes from 'svg', 'symbol' and 'pattern'
as these attributes are not used by any other part of the language.
-
Changes to SVG DOM
- Removed the gainselection and loseselection events as these
were dropped from DOM2.
- Defined entities %stdAttrs; (id), %langSpaceAttrs; (xml:lang, xml:space),
%testAttrs; (system-reuqired, system-language) and %stylingAttrs; (class,
style) and replaced all uses of the corresponding attributes with the
given entities.
This was done primarily to make the DTD and the DOM have consistent approaches.
- Removed ambiguity regarding 'relatedNode' for clientX/clientY on
mouse events.
Now clarifies that the 'relatedNode' is the **outermost** 'svg' element,
which means clientX/clientY are values in the initial coordinate system.
- Added exception SVG_WRONG_TYPE_ERR.
- Added exception SVG_INVALID_VALUE_ERR.
- Changes to Java Language Binding
- ZIP file versions of the bindings for Stylable SVG and Exchange SVG are now available.
- Changed all occurrences of DOMString to String.
- Removed use of 'unsigned' data types. (This was an error in the previous version.)
- Replaced all instances of 'long' in the IDL with 'int' in the Java binding,
to conform to OMG's IDL-to-Java document.
- Added "import org.w3c.dom.Element" to SVGDocument, SVGSVGElement as they all use
interface Element directly.
- Changes to ECMA Script Language Binding
- The ECMA Script bindings are now stored in files outside of the written
specification.
- There are now separate bindings for Stylable SVG and Exchange SVG.
-
Changes to Implementation Requirements
- Changed the wording under Version Control to replace 'must' with 'should'
and generally make the language more reasonable.
- Renumbered some sections to fix an editing error (there were two F.2 sections
previously).
- Changes to Conformance Criteria
- Adding a new section on Printing implementation notes, which now
includes a recommendation that, on printing, the printouts should show
the same view as seen on the screen (i.e., same zoom level).
- Removed section on undefined areferences as all of the
information in this section was already present in the Document Document
chapter within the section on referencing.
- Per suggestion from Ian Jacobs and approved by the working group,
this appendix is now normative rather than informative.
- Per working group decision, added a statement indicating that
a conforming viewer which supports HTTP needs to properly support
Accept-Encoding: gzip.
- Per working group decision, added a statement indicating that
a conforming viewer is required to support the "data:" protocol
wherever URI referencing is allowed..
- Clean-up of the language on some of the items in this appendix.
- Changes to Accessibility Support
- Rewrite of nearly the entire content of this appendix per coordination
efforts with the WAI team. The section on aural styling has been moved
into the Styling chapter. Much of the old content will be part of a new
document to be published simultaneously to the SVG recommendation
which provides detailed guidelines for creating accessible SVG content.
-
Changes to References
- Updated several references after comparing SVG's references
to those in HTML 4.01.
- Updated HTML reference to HTML 4.01.
- Moved "Web Content Accessibility Guidelines" into the normative
section as it is referenced by normative sections of the specification.
- Added a normative reference for JPEG.
- Added a normative reference for "data:" protocol.
- Added a normative reference for Porter Duff article from 1984 SIGGraph proceedings.
- Updated the HTTP reference to point to the 1999 W3C document. Moved
the HTTP reference into the normative section as a normative section of
the SVG specification references the HTTP specification.
- Added an informative reference for OpenType.
- Updated the reference for sRGB.
Changes with the 03-December-1999 SVG Draft Specification
-
Global/miscellaneous changes
- Considerable miscellaneous editorial cleanup throughout, including
significant rearrangement of content and reordering of chapters.
- Provided considerable more detail about SVG's DOM interfaces.
The DOM interfaces are not provided at the end of the chapters to which
they most relate.
- Added a new chapter called Basic Data Types and Interfaces which
provides a single definition of things such as <number> and <length>.
- Changed all references to element start tags such as "the <svg>
element" with single-quoted references such as "the 'svg' element".
- Added an indication for each attribute and property about whether
it can be animated.
- Added a navigation bar at the bottom of all pages.
-
Changes to Introduction
- Added a new section 1.6 Error processing
which describes user agents error handling.
- Modified the wording about relationship to SMIL to emphasize that
SVG static or animated content is designed to be used as a component
media for future versions of SMIL.
- Changed the name of section 1.4 from Terminology to Definitions
to match the approach taken in the CSS spec.
Removed definition of "number" as this is now defined under Basic Data Types.
- Added a new section 1.5 called Terminology to Terminology
to define the terms "must", "required", etc.
-
Changes to Basic Data Types and Interfaces
- Provided more explicit range information on integers and numbers.
- Modified all DOM interfaces to use "float" instead of "double" per
decision that conforming implementations need only support single-precision
floating point operations.
-
Changes to SVG Rendering Model
- Added a note about markers drawing in order according to the directionality
of the shape, and added a note that marker symbols are rendered as
if their graphics content were expanded into the document tree..
-
Changes to Document Structure
- Modified the wording in the section on URI references
to say that invalid references are errors and handled by standard user
agent error processing behavior, per decision by the working group
to have consistent error handling.
- Removed methods open, close, write, writeln from SVGSVGElement as
these will be obsoleted for HTML down the road and equivalent capability
is possible by manipulating the DOM tree.
- For interface SVGDocument,
added a forceRedraw() method.
- Modified the description of SVGDocument
to clarify that an SVGDocument object only exists when the 'svg' element
is the root element of the document hierarchy,
- Moved various utility functions that had been part of interface
SVGDocument
to interface SVGSVGElement
since SVGDocument
will not exist in all cases.
- Clarified that an 'image'
creates its own document tree and doesn't inherit properties.
- Moved 'switch', 'system-required' and the new 'system-language'
to Document Structure.
- Added attribute system-language,
from SMIL 1.0, for all elements that have attribute system-required
to provide the mechanism for multiple localized text strings for the
same document, as noted in previous draft specifications.
Documented in The system-language attribute
- Defined SVG's available feature strings for "hasFeature" method
call and "system-required" attribute.
- Modify system-required to be NMTOKEN instead of CDATA to match SMIL
1.0.
Modify example to use an NMTOKEN instead of a URL.
-
Changes to Styling
- Changed the title of the chapter from "Styling and CSS" to "Styling"
to re-inforce that SVG content can be styled by either CSS or XSL.
- Added an introduction talking about styling with both XSL and CSS.
- Modified many descriptions so that they apply to both CSS and XSL.
- Added descriptions for the 'style' and 'class' attributes.
- Modified the description of the 'display' property to eliminate
the SVG-specific value "svg" and to say that anything other than 'none'
indicates that the given element can be rendered.
- Indicate that CSS dynamic pseudo classes :hover, :active, :focus are supported.
- Added a bullet about aural style sheet support.
- The 'overflow' and 'clip' properties have been moved to the Clipping
and Masking chapter. (See Masking notes below.)
- Modified the default style sheet so that the overflow property has
an initial value of 'hidden' for all elements in the SVG language.
This is necessary to achieve the default behavior that new viewports
also establish new clipping paths.
- Modified the default style sheet to eliminate the reference to 'display:svg'.
Until CSS3, which is expected to provide general purpose methods for
associating user agents with particular XML namespaces, user agents
will have to have special detection for SVG documents and fragments.
- In the default style sheet, included all methods which support the
viewBox attribute to have a default value of 'hidden' for the 'overflow' property.
-
Changes to Coordinate Systems, Transformations and Units
- Major editorial cleanup.
Switch to column vectors instead of row vectors.
Change wording per suggestions from various members of the working
group.
Added many examples and supportive pictures.
- Fix errors in Pythagorean formula examples where a comma needed
to be replaced by a plus-sign.
- Fixed a long-standing error in the section describing how to set
up a new viewport where the example and some of the write-up referred
to using CSS properties left/right/top/bottom/etc instead of attributes
x/y/width/height.
Now this chapter is correct and consistent with the descriptions of
the x/y/width/height attributes for the 'svg' element.
-
Changes to Paths
- Removed the erroneous reference to the "B" and "b" commands, which
don't exist in the current specification.
- Fixed BNF to remove possibility of trailing comma at the end of
a command, such as "M 100,100, L 200,200,".
This is no longer valid, and instead you have to remove the extraneous
commas, as in "M 100,100 L 200,200".
- Changed the path data BNF to eliminate ambiguous productions (i.e.,
when two productions could satisfy a given path specification).
- Added a note indicating that the path data parser needs to be greedy
(i.e., consume all characters that continue to satisfy a production).
- Added a comment to the distance-along-a-path chapter stating that
"moveto" operations do not contribute to the distance calculations.
- Removed "flatness" attribute due to statement in conformance criteria
that rendering needs to be within a device pixel.
- Defined animation behavior for booleans that are part of the arc command.
- Enhanced the write-up of attribute 'length' and clarified "distance-along-a-path."
- Fixed errors in SVG DOM where it was inconsistent with our newer arc command.
- For interface SVGPathElement,
added distance-along-a-path utiltiy functions getTotalLength(), getPointAtLength()
and getPathSegAtLength().
-
Changes to Basic shapes
- Thorough editorial cleanup of this chapter, providing more precise
language and illustrating with pictures.
- Fixed BNF to remove possibility of trailing comma at the end of
the points list, such as "100,100,200,200,".
This is no longer valid, and instead you have to remove the extraneous
ending comma, as in "100,100,200,200".
-
Changes to Text
- Major cleanup, reorganization and rewriting of sections in preparation
of Proposed Recommendation.
Sections have been renumbered and content has been shuffled between
sections.
Very detailed descriptions have been provided for all layout rules,
including text on a path and text selection.
Several drawings have been added.
- Incorporation of Last Call feedback from the I18N interest group,
Last Call internationalization feedback from the XSL working group,
and Last Call feedback from the CSS and FP working groups.
Detailed changes are listed as follows.
- Various editorial clean-up actions, including more careful use of
the terms "character" and "glyph".
- Added a section entitled Characters and their corresponding glyphs
to clearly describe the differences and relationships between XML characters and glyphs.
- Broke up the 'tspan'
element into two separate elements, 'tspan'
and 'tref',
per Last Call feedback from the I18N interest group.
The 'href' attribute has been removed from the 'tspan' element.
All referenced to non-embedded character data are done with the 'tref'
element.
The 'tref' element is not allowed to have embedded character data.
- Changed the descriptions of the x,y,dx,dy and rotate attributes
to the 'tspan'
element to correspond to characters rather than glyphs, per Last Call
feedback from the I18N interest group.
- Wrote up how x,y,dx,dy and rotate attributes on the 'tspan'
element work with the bi-directionality algorithm, reflecting Last
Call feedback from the XSL and I18N working groups.
- Substituted SVG-specific property 'text-anchor'
for 'text-align' and 'glyph-anchor'
for 'vertical-align', per Last Call feedback comments from the I18N
interest group and the XSL working group.
Both 'text-align' and 'vertical-align' are meant for block text and
did not fit with SVG's single-line approach to text-at-a-point and
text-on-a-path.
- Added property 'baseline-shift'
per Last Call feedback comments from the I18N interest group and the
XSL working group.
The XSL working group is still developing the definition of this property.
The current definition in the SVG spec is a placeholder which might
require modifications as the XSL definition of the property gets further formulated.
- Allow for nested 'tspan'
elements so that 'baseline-shift'
properties can be nested, to allow for (as an example) exponents of exponents.
- Replaced properties textPath-transform and orient-to-path properties
with attribute 'rotate',
which directly addresses the desired feature (i.e., precisely specified
text-on-a-path when the SVG text-on-a-path algorithm doesn't provide
sufficient precision), doesn't introduce additional unnecessary and
hard-to-use capability, and which has a parallel construction with
the dx and dy attributes.
- Changed 'altglyph' from a property to an element, 'altGlyph',
per Last Call feedback comments from the I18N interest group and the
XSL working group.
To complete the definition of the altglyph capability, other new elements
include 'altGlyphDef'
and 'glyphSub'.
'altGlyph' can appear within a 'text' element and refers to either
a glyph defined in an SVG font or an 'altGlyphDef' element. 'altGlyphDef'
is a child of 'defs'.
- Removed the ability to include a 'use' element as a child of a 'text',
'tspan' or 'textPath' element, per discussions derivative of Last Call
feedback on internationized text issues.
Instead, it was felt that SVG-on-a-path was better accomplished by
including the SVG-on-a-path as a glyph defined in the private section of Unicode.
- Added a sentence in Relationship with bi-directionality
indicating that the default orientation for Arabic text when rendered
in a vertical text string is rotated 90 degrees counter-clockwise,
which is the same as for Roman text.
- Rephrased the description of the W3C character model in the section
on Alternate glyphs
to avoid the impression that normalization eliminates compatibility
equivalents, per Last Call feedback comments from the I18N interest group.
- Made clear that the x,y,dx and dy attributes on the 'tspan'
element can be used for both minor and major adjustments of the current
text position, per Last Call feedback comments from the I18N interest group.
- Made clear that text selection in bi-directional situations selects
text that is contiguous in lexical order, with user agents given the
option of providing an alternative text selection facility in visual
rendering order.
This addresses Last Call feedback comments from the I18N interest group.
- For White space,
modified the rule for xml:space='default' to throw out all line breaks.
This accommodates Last Call feedback comments from the I18N interest
group that many languages would not want automatic generation of white
space if character data were spread across multiple lines.
By making this change, then Roman text will need to include explicit
white space wherever word separators are needed (possibly achieved
by simply indenting the text data).
- Removed the paragraph about the "uu" suffix with the font shorthand
property.
This paragraph was in the previous spec only because of an editorial error.
- Added a paragraph to Introduction
recommending the use of appropriate semantic markup along with 'text'
elements to make SVG documents more accessible, per Last Call feedback
comments from Daniel Dardailler of the Web Accessibility Initiative (WAI).
-
Changes to Painting: Filling, Stroking and Marker Symbols
- Added definitions of properties 'color-interpolation'
and 'color-rendering'
to control whether color computations are performed in the sRGB or
linearRGB color spaces and to provide speed/quality rendering hints
to the user agent.
- Added 'inherit' as a value for 'fill-opacity'. (It already existed
for 'stroke-opacity'.)
- Added a note to stroke properties that all stroke operations must
begin at the start of the graphics element and must employ the user
agent's distance-along-a-path algorithms.
- Added a note that complex paint servers such as gradients and patterns
must produce the same result as if the stroke were converted to a 'path'
and then filled with the given paint server.
- Added 'userSpaceOnUse' to markerUnits
per working group decision to enhance re-usability of referenced elements
used in 'defs' and to achieve consistency across all types of referenced elements.
- Added short descriptions of the available values for 'color-interpolation',
which were missing in previous drafts.
- Added a note that ICC color values cannot be expressed as percentages
and indicates that ICC color values are <number>s.
- Reworded descriptions of 'stroke-opacity' and 'fill-opacity' about
value clamping.
- Copied explicit formulas for converting sRGB to linearRGB from http://www.w3.org/Graphics/Color/sRGB.
- For Rendering Properties,
changed attribute value 'default' to 'auto' per Last Call comments
from the CSS and FP working groups.
- When a URI is provided for 'fill'
or 'stroke',
there used to be an 'inherit' value available as a back-up option in
case the URI were invalid.
Because the 'inherit' backup option causes serious complications with
regard to the DOM, this little used option has been removed.
-
Changes to Color
- Merged properties 'color-profile' and 'rendering-intent' into a
"color profile description" described by an @color-profile construct.
As a result, ICC color definitions now take an additional initial parameter,
which is the name of the profile to use.
- Fixed a couple of errors with the 'color'
property.
First, removed the reference to the 'color' property being used for
gradient stops. (Actually, it is the 'stop-color' property that applies
to gradient stops.) Second, removed the 'icc-color' option, as this
was present only to address the needs of gradient stops. (This removal
also serves to sidestep the issue of why SVG is extending this very
widely used existing CSS2 property.)
-
Changes to Gradients and Patterns
- Added xlink:href attribute to gradient and pattern elements, which
allows one gradient/pattern to inherit attributes and (in the case
of gradients) a gradient ramp from a previously defined element of
the same type.
This addition promotes re-usability of gradients and patterns and thus
promotes more compact files.
- Added 'userSpaceOnUse' to gradientUnits
and patternUnits
per working group decision to enhance re-usability of referenced elements
used in 'defs' and to achieve consistency across all types of referenced elements.
- Fixed examples of gradient stops which erroneously used 'stop-color'
instead of 'color'.
-
Changes to Clipping, Masking and Compositing
- Added 'inherit' values to 'opacity', 'mask' and 'clip-path' to correct
an error in the spec.
- Removed percentage values from the 'opacity'
property per Last Call comments from the CSS and FP working groups.
- Added a drawing which illustrates various 'opacity'
settings on objects and groups.
The drawing illustrates the accumulative effects of opacity, which
addresses one of the Last Call comments from the CSS and FP working groups.
- Added explicit alpha blending formulas to Simple alpha blending/compositing.
- Removed wording about approximating sRGB with 2.2 exponent since
precise formulas involve little extra computation.
- Changed wording for the 'mask'
element to clarify exactly when one-channel masking happens and when
luminance-to-alpha processing happens, and changed the formulas for
luminance-to-alpha to use the same formulas as the feColorMatrix filter effect.
- The 'overflow' and 'clip' properties have been moved to this section.
- Elaborated on the 'overflow' and 'clip' properties.
In particular, the specification now states explicitly state in words
that the effect of the default style sheet having svg { overflow:hidden
} is that the default behavior has the SVG user agent clipping to the
bounds of the initial viewport.
Also, discuss the effect of these properties on embedded 'svg' elements
and the difference between clipping to the viewBox versus clipping
to the viewport.
- Added clipPathUnits="userSpace|userSpaceOnUse|objectBoundingBox"
and added 'userSpaceOnUse' to maskUnits
per working group decision to enhance re-usability of referenced elements
used in 'defs' and to achieve consistency across all types of referenced elements.
- For 'clipPath',
changed wording on invalid references to say that standard error processing would apply.
- Added clarification for the 'clipPath'
element and clipping path inheritance rules (i.e., a 'clipPath' does
not inherit clipping paths from its ancestors, but it can use the 'cli-path'
property to explicitly indicate that the clipping path itself must be clipped.).
- Changed the wording for the 'mask'
and 'clip-path'
properties to say that invalid references are errors and handled by
standard user agent error processing behavior, per decision by the
working group to have consistent error handling.
- Reworded descriptions of 'stroke-opacity' and 'fill-opacity' about
value clamping.
-
Changes to Filter Effects
- Added xlink:href attribute to the 'filter' element, which allows
one filter to inherit attributes and the filter effect definition from
a previously defined 'filter' element.
This addition promotes re-usability of filters and thus promotes more compact files.
- Added 'userSpaceOnUse' to filterUnits
per working group decision to enhance re-usability of referenced elements
used in 'defs' and to achieve consistency across all types of referenced elements.
- Replaced the old initial example
with one that actually works.
- For feColorMatrix,
changed hue-rotate and luminance-to-alpha to hueRotate and luminateToAlpha
to conform to camel notation conventions found in the rest of the spec.
- Added 'inherit' values to 'enable-background' to correct an error in the spec.
- Fixed typos in description of hueRotate in feColorMatrix
to say [a00 a01 a02] [a10 a11 a12] [a20 a21 a22].
- Added x, y, width, height attributes to all filter effects, per
resolution by SVG working group to provide sufficient information for
feImage and feTile to know what to do.
- Added stitchTiles attribute and changed baseFrequency to baseFrequencyX
and baseFrequencyY in feTurbulence to allow for small tiles of generated
noise which can be stitched together.
- Fixed error in example from 110% to 120%.
-
Changes to Interactivity
- Expanded the Introduction.
- Included detailed rules for handling pointer events.
- Added property 'pointer-events',
which the working group decided to add at the Ottawa face-to-face meeting
but which did not make it into the Last Call specification due to an
editorial error.
- Modified the description for 'cursor'
element to explain that its primary purpose is to provide for a platform-independent
cursor adding a hot spot to a PNG used as the source image per Last
Call comments from the CSS and FP working groups.
- Defined terms zoom, pan and magnify.
Emphasized that zoom and pan are required for user agents in interactive
environments, and that magnification is recommended.
Documented that zoom does not change meaning of CSS units, per working
group decision.
- Renamed "allowZoomAndPan" to "enableZoomAndPanControls" per working
group decision.
-
Changes to Scripting
- Added event attributes onfocusin, onfocusout, ongainselection, onloseselection,
onactivate, onresize and onscroll to match events in DOM2.
- In the description of Document events,
modified the description of "onload" to mean that the element and its
descendants are ready to be rendered but that external resources are
not necessarily available yet, per working group decision.
-
Changes to Animation
- Major update to track new versions of the SMIL-Animation specification.
- Added the 'set' element from SMIL animation
- Dropped the 'animateFlipbook' element per request from the SYMM
working group, since the same functionality will be available using
other facilities and concerns about 'animateFlipbook' being too close
to the SMIL 'par' element.
- Added a type attribute to 'animateTransform'
to explicitly disallow mixing of different types of transformations
within the same animation element.
- Added an "auto-reflect" option to the rotate
attribute to make it easy to pick with which side of the motion path
the target element will rotate.
- Add keyPoints as an additional SVG extension to compensate for SMIL
Animation's changes in semantics to 'animateMotion' since the SVG Last
Call draft of 12Aug1999.
- Added some pictures.
- Indicated that the 'color-interpolation' property applies to color
interpolations that result from 'animateColor'.
-
Changes to Linking
- Removed the #FIXED setting on 'xlink:show' on the 'a' element to
allow for "new" vs. "replace" per Last Call comments from the CSS and
FP working groups.
- Changed 'parsed' to 'embed' to match upcoming expected revisions to XLink.
- Added 'target'
attribute to 'a' element.
-
Changes to Fonts
- Renamed all attributes and elements that used to use camelCaseNotation
to use lowercase-separated-by-hyphens notation so that names match
the corresponding CSS properties, per Last Call comments from the CSS,
FP and I18N groups.
- Renamed full-font-name to font-face-name to match CSS2. (The previous
name was chosen by error.)
- Replaced the 'kern' element with 'hkern'
and 'vkern'
elements to support vertical kerning, per feedback comments from the
I18N and XSL working groups.
- The value of the 'unicode' attribute on the 'glyph' element is now
just a regular old Unicode character, possibly expressed as a character
reference, per feedback comments from the I18N and XSL working groups.
Modified the descriptions of the 'hkern' and 'vkern' elements' u1 and
u2 attributes, accordingly.
In the process, cleaned up the wording for the u1, g1, u2 and g2 attributes
and also the introductory wording about the kerning elements.
- Added a note that Arabic glyph widths are required to be positive,
per feedback comments from the I18N and XSL working groups.
- Added required attributes text-top, hanging, ideographic and text-bottom
to the 'font'
element, per feedback comments from the I18N and XSL working groups.
- Replaced the term "standard" with "isolated" for attribute 'arabic',
per feedback comments from the I18N interest group.
- Modified the rule for prioritizing which 'glyph' is chosen to match
current font practice, per feedback comments from the I18N and XSL
working groups.
Now, the first 'glyph' in lexical order which matches the sequence
of characters to be rendered gets chosen.
- Included a recommendation that the glyphName attribute be unique
across a given SVG font.
- Changed the glyphName attribute such that a single string rather
than a list of strings is provided to better match the needs of the
newly revised kerning elements.
- Removed attribute 'bbox' per font discussion in the SVG working
group with representation from the Unicode Corsortium and Apple's font
group.
The conclusion was that it was better for the viewing to calculate
the bbox from the available graphical information.
Changed horiz-adv-x to be #REQUIRED on the 'font' element, since removal
of bbox removed its fallback value.
Changed the default for vert-origin-x to be half of horiz-adv-x, since
removal of bbox removed its fallback value.
Changed the default for vert-adv-y to be the sum of attributes ascent
and descent, as removal of bbox removed its fallback value.
-
Changes to Extensibility
- Updated the example.
References Dublin Core 1.1 instead of 1.0.
-
Changes to Extensibility
- Moved 'switch', 'system-required' and the new 'system-language'
to Document Structure.
-
Changes to SVG DTD
- Various changes to correspond to changes described above.
- Added attribute system-language,
from SMIL 1.0, for all elements that have attribute system-required
to provide the mechanism for multiple localized text strings for the
same document, as noted in previous draft specifications.
- Added entities %descTitle and %descTitleDefs to remove the restriction
that child elements 'desc', 'title' and 'defs' had to appear in a particular
order.
Now, at most one can appear, and any order is allowed.
- Scattered null entities xxxExt (e.g., svgExt, gExt, pathExt) throughout
the DTD to allow extensions to the SVG language via the internal DTD subset.
- Removed the #FIXED attribute to xlink:show
to allow for "new" vs. "replace".
- Changed 'parsed' to 'embed' for XLink.
- Added 'target'
attribute to 'a' element.
- Removed #FIXED from the specification for the 'type' attribute on
the 'style' element. (The #FIXED was just an editorial error.)
- Various text-related and font-related changes, described above under
"Text" and "Fonts".
- Removed graphic element events and system-required from 'desc' as
it must have been an error to have these attributes in the first place.
- Add a 'metadata' child element to the 'svg' element and defined
the 'metadata' element. (This element was defined in the spec but left
out of the DTD inadvertently.)
- Added the 'view'
element, which by oversight had been left out of the previous DTD.
Modified 'defs' to allow 'view' as a child element.
- Added standard attributes id, lang, class, style, etc. to <textPath>.
(Previous error of omission.)
- Make an entity for all standard XLink attributes other than xlink:href.
- Lots of changes to which elements have which animation elements
as children to match the tables in the animation chapter that show
which Elements, attributes and properties that can be animated
-
Changes to SVG DOM
- Major editorial modifications, including a good deal of reorganization.
Detailed descriptions of relationship to DOM2, including CSS OM and DOM2 Events.
- Moved detailed interface definitions into chapters which describe
corresponding elements and features.
- Defined SVG's available feature strings for "hasFeature" method
call and "system-required" attribute.
- Renamed suspend_redraw, unsuspend_redraw and unsuspend_redraw_all
to suspendRedraw, unsuspendRedraw and unsuspendRedrawAll per suggestion
from the DOM working group.
-
Changes to Implementation Requirements
- Changed the title of the appendix to "Implementation Requirements"
instead of "Implementation Notes" to emphasize the fact that this appendix is normative.
- Added a section Version control
which says that SVG user agents should only render documents which
have a reference to the SVG DTD and for which the reference points
to a DTD which the user agent supports.
- Added a bullet to the implementation notes on path data on error
handling stating that the rendering should continue up to and including
the last correctly defined path segment, even if it is in the middle
of a compound path command such as "L 100 200 100 400".
- Modified the wording in Forward and undefined references
to say that invalid references are errors and handled by standard user
agent error processing behavior, per decision by the working group
to have consistent error handling.
- Added a section Clamping values which are restricted to a particular range
to indicate that out-of-range values get clamped at the latest possible moment.
- Added a section Elliptical arc implementation notes
which provides the details on how to implement elliptical arcs in SVG path data.
- Under Text selection implementation notes,
added a paragraph that talks about user agents providing an ability
to select text strings which might have an associated event handler or link.
- Modified the description of the text selection algorithm for user
agents to be consistent with the two-stage text layout processing model
(i.e., first re-order characters into visual rendering order, and then
position the characters, do ligatures, do kerning, etc.).
-
Changes to Conformance Criteria
- Now there are four types of Conforming SVG Viewers: Conforming Static
SVG Viewer, Conforming Dynamic SVG Viewer, Conforming High-Quality
Static SVG Viewer, Conforming High-Quality Dynamic SVG Viewer, per
feedback from people within in SVG working group.
- Reworded the reference to accessibility authoring guidelines, per
Last Call feedback from WAI.
- Added a conformance requirement for viewers that encourages conformance
to the WAI user agent guidelines, per Last Call feedback from WAI.
- Expanded the bullet point about a Conforming SVG Document needing
to be validatable after removing non-SVG elements and attributes.
- Added a comment about a conforming SVG interpreter requiring an
XML Parser that supports XML 1.0 and XML Namespaces.
- Added a bullet stating that High-Quality SVG Viewers need to support
double-precision floating point operations on coordinate system transformation
numerical operations
- For Conforming SVG Viewers, added bullets stating that rendering
must be accurate to within one device pixel and sRGB colors must be
accurate to within one color value.
-
Changes to Accessibility Support
- General editorial cleanup.
- Made additions and changes to Accessibility and SVG
about the potential for harming the accessibility of information if
representing information in pure visual, final-form SVG, per Last Call
feedback comments from Daniel Dardailler of the Web Accessibility Initiative (WAI).
- Listed the aural style sheet properties
from CSS2 as the set of properties which will be available in user
agents that support aural properties.
- Transformed the various notes and comments about accessibility from
the Last Call spec into a consolidated bulleted list of SVG-specific accessibility guidelines.
-
Changes to References
- Shifted some references from being informative to normative and
vice versa as part of general editorial cleanup.
- Added a normative reference to [RFC2119]
for definitions of some of the terms used in this specification.
- Added a normative reference to "SMIL Animation", which SVG will
reference normatively.
- Added an informative reference to [XSL].
- Added many references into specific sections of referenced specs,
such as references to various property definitions from the CSS2, DOM2
and SMIL-Animation spec.
- Added a normative reference to the PNG specification.
- Modified ACCESS to refer to ACCESS-AUTHOR/ATAG.
- Added ACCESS-USERAGENTS/UAAG.
- Added a normative reference to RFC1766 for language identification.