Appendix I: Change History
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 nominalLength 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 inadvertantly.)
- 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.
- Added ACCESS-USERAGENTS.
- Added a normative reference to RFC1766 for language identification.
Changes with the 12-August-1999 (Last Call) SVG Draft Specification
- Global/miscellaneous changes
- Created a new chapter on Fonts which contains
the contents of the old appendix "Implementation and Performance Notes
for Fonts" plus the specification for SVG fonts (i.e., fonts defined
in SVG).
- Created a new chapter exclusively on Linking.
- Changed the order of some of the chapters (Interactivity, Scripting, etc)
as a result of creating a chapter on Linking and
moving various sections to different chapters.
- Changes to Document Structure
- Included additional details on property inheritance with the
'use' element.
- Changed one of the alternative syntaxes for
URI reference
from #id(foo) to #xptr(id(foo)) to be compatible with
latest draft of XPointer.
Inserted language stating that the only part of XPointer
that SVG 1.0 user agents are required to support are the
#elementID and #xptr(id(elementID)) syntaxes.
- Changes to Styling and CSS
- Modified the discussion of the 'display'
property so that svg { display: block } and svg * { display: svg}.
Removed all of the detailed display values, such as svg-g, svg-rect, etc.
- Added quick documentation of the 'overflow'
and 'clip' properties.
- Added a quick write-up on SVG's default CSS style sheet.
- Changes to Painting: Filling, Stroking and Marker Symbols
- Renamed chapter to "Painting: Filling, Stroking and Marker Symbols".
- Removed 'fill-params' and 'stroke-params'. Instead, use private data
via foreign namespaces.
- Changes to Gradients and Patterns
- Changed 'stick' to 'pad' for
spreadMethod
attribute.
- For gradient stops, color and opacity are now set by properties
'stop-color' and 'stop-opacity' rather than 'color' and 'opacity'.
- Changes to Text
- For the 'tspan' element,
modified the x,y,dx,dy attributes to accept a list of values
for a compact way to provide individual kerning and tracking
between glyphs. Also, added new attribute dCoordUnits="userSpace|em|fontSpace"
which permits dx,dy to be provided in three different coordinate systems.
- Added property 'text-advance' to allow for horizontal,
vertical or vertical-ideographic text.
- Changes to Filters
- Minor change to description of saturate value on
feColorMatrix to indicate
clearly that it can take on either a real number between 0 and 1
or a percentage value such as "50%".
- Renamed feColor to feFlood. Changed
color value for feFlood
from a color attribute
to 'flood-color' and 'flood-opacity' properties.
- Changes to Interactivity
- Added an Introduction
to provide an overview of the various
interactivity options that are available (e.g., links, scripting event
handling).
- Added a section on Cursors
which describe new element 'cursor' and new property 'cursor'
which allow a built-in or custom cursor to be used when the pointing device
is over a specific element.
- Changes to Linking
- New chapter. Contains description of 'a' element and discussion
of linking into an SVG document.
- Changes to Scripting
- Added events onresize, onscroll, onerror, onabort to expose to
script writers these events which are a standard part of DOM level 2.
- Changes to Animation
- Inserted a new section
15.2.1 Introduction which describes
the collaborative effort between the SYMM and SVG working groups
to define SVG's animation elements.
- Removed the "dom" option to the attributeType attribute.
- Made all of the xlink:href attributes be #IMPLIED rather than #REQUIRED and indicated
that you can only reference elements within the same SVG document.
- Modified the wording on vtimes attribute.
- Replaced the "repeat" attribute with "repeatCount" to track latest changes to
the SYMM timing and animation drafts.
- Removed interpColorModel attribute. SVG 1.0 will only support rgb color animations.
- Changes to Extensibility
- Added language indicating that attributes from foreign namespaces are OK. They will
be included in the DOM but otherwise ignored.
- Changes to SVG DTD
- Fixed omission in previous DTD where the various animation elements
were not children of any other elements. Now, many elements
have various animation elements as optional children.
- Changed href attribute on 'animate', 'animateMotion', 'animateTransform' and 'animateColor'
from #REQUIRED to #IMPLIED to match SYMM animation formulation where
an animation element can be a child of the object being animated
and thus the default href is the animation element's parent.
- Changes to SVG DOM
- Fixed error where it used to say that 'title' is a subelement to 'defs'.
- Changes to Conformance Criteria
- Changed the title from "Conformance Requirements and Recommendations"
to "Conformance Criteria" since the W3C will not be policing
adherence to the specification and will not be sanctioning another
body to do so either. Instead, industry and the media will have to do its
own policing. The Conformance Criteria are the W3C's statements
about quality and completeness of implementations. These criteria
will help developers create complete implementations and
will help industry and the media to judge the qualith and
completeness of SVG support in industry.
- Added a note about removing foreign namespace attributes
(in addition to foreign namespace elements) before attempting
to validate.
Changes with the 30-July-1999 SVG Draft Specification
- Global/miscellaneous changes
- Major editorial cleanup touching almost everything in a major
push toward readying the specification for formal review by other
working groups.
- Lots of renaming of element names, attributes and identifiers
to use "camel notation". For example, 'fit-box-to-viewport' is now 'fitBoxToViewport'.
Exact list of changes is found in camel.sed.19990722.txt
- Created new appendices: Implementation Notes
(whose content used to be scattered about the spec)
and Conformance Requirements and Recommendations
(whose content used to be found in Chapter 3: Conformance Requirements and Recommendations).
- Various consolidation and rearrangement of chapters and sections within chapters, resulting in
lots of chapter and appendix renumbering.
- Updated all href attributes to conform to latest XLink draft..
- Moved 'desc' and 'title' elements into Document Structure.
- Consolidated Private Data, Extensibility and Foreign Object sections into a single
chapter Extensibility.
- Removed SVG Requirements and Change History from document.
- Renumbered appendices.
- Changes to Introduction to SVG
- Updated the section describing SVG's relationship to other web standards.
- Included a list of standard terms in Definitions.
- Changes to Document Structure
- Near total rewrite of the section on references and the 'defs' element.
(See References and the 'defs' element.)
Included a more precise definition of the exact formats allowed in a
reference (i.e., #foo and #id(foo)). (Nearly everything is described more precisely.)
- Changes to CSS and Styling
- Reformulated the chapter to represented all of the introductory
and high-level discussion of how CSS relates to SVG.
- Moved the main discussion of the 'script' element
from struct.html into this chapter.
- Added stub sections to discuss the style and class attributes.
- Changes to Coordinate Systems, Transformations and Units
- Renamed Implementation Notes to
Processing rules for CSS units and percentages
- General cleanup of the discussion in
Processing rules for CSS units and percentages.
Included an explicit description of what to do if percentages are
used for coordinate values. Reformulated the discussion of x and y coordinates
exprssed in viewport-relative units
because the previous methods could result in attempting to find the intersection
of parallel lines.
- Changes to SVG Rendering Model
- Lots of cleanup to remove ambiguities and to fix omissions.
Included discussion of: marker symbols, the order of fill vs. stroke vs markers,
distinction of shapes vs. text vs. raster images, centering of the paint
on the stroke, three different types of built-in paint that can be applied
to fill and stroke operations (i.e., solid color, gradients and patterns),
unambiguously defined the order in which operations apply
(e.g., filters before clipping, masking and object opacity).
Incorporated standard terminology and added several hyperlinks.
- Fixed bug in image-rendering
which used to say that the property applied to text elements. (Then
moved the rendering properties into other chapters.)
- Changes to Clipping, Masking and Compositing
- Changed the range on the
'opacity' property
from 0-255 to 0-1 to match common usage and to make consistent
with properties
'fill-opacity' and
'stroke-opacity'.
- Transformed the old chapter "CSS Properties, XML Attributes, Cascading and Inheritance"
into Styling and CSS. Specific changes:
- First crack at defining explicitly which CSS features would be supported.
- Moved 'style' element and class/style attributes into this chapter.
- Changes to Filling, Stroking and Paint Servers
- Reorganization. Moved markers into this chapter. Moved colors, gradients and
patterns into Gradients and Patterns.
- Fixed initial values for fill-opacity and stroke-opacity from
"evenodd" (obviously a bug) to "100%".
- Removed sentence saying a null value for
stroke-dasharray
was
equivalent to 'none'. (Instead, for all properties, a null value
is invalid and shall result in the property setting getting
ignored.) Added a sentence indicating that if an odd number
of values is provided, then the list of values is repeated
to yield an even number of values (i.e., twice the values).
- Removed comments about paint server extensibility
- New chapter Gradients and Patterns
- From reorganization. Contains discussions of colors, gradients and
patterns.
- Under Properties for specifying color profiles,
replaced property 'icc-profile' with latest proposals from CSS working group:
'color-profile' and 'rendering-intent'.
- Changes to Paths
- Removed the 1023 character limitation on path data and eliminated the 'data'
child element to the 'path' element. Was going to add newline and tab characters to
the BNF for path data, but discovered they were already there. Added a guideline recommending
that SVG generators insert newline characters into long path data strings
to keep line lengths less than 255 characters.
- Fixed error in In Path data where the previous spec showed
the parameters to moveto, lineto, etc. as (x y)*, which means zero or more. It is now (x y)+,
which means one or more.
- In the table for Close path command, we now show both
uppercase and lowercase "Z" to match the BNF.
- Changes to Basic Shapes
- Removed the 1023 character limitation on vertices for polylines and polygons.
Added a guideline recommending
that SVG generators insert newline characters into long path data strings
to keep line lengths less than 255 characters.
- Fixed examples to use width/height attributes instead of width/height properties.
- Changes to Text
- Explicitly listed which CSS2 properties SVG supports.
- Removed text-direction from text-on-a-path section
awaiting decisions on vertical text support.
(The old formulation was clearly wrong.)
- In text-on-a-path section, renamed text-transform
to textPath-transform because CSS already has
a property named 'text-transform'.
- Added a new chapter on Scripting
- Defined a new contentScriptType
attribute on the 'svg' element to allow specification of a default scripting language.
- Changes to Filters
- Added a new section
Accessing the background image
which describes property enable-background, which can be used to enable
the ability to access the currently accumulated background image on the current
canvas. Possible values are 'accumulate' and 'new [(x y width height)]'.
- Cleanup of write-up on feBlend.
Simplified the equation for computing result opacity and
expressed all formulas using premultiplied colors.
- Changes to Animation
- Included the declarative animation syntax that has been
developed in close collaboration with the SYMM working group.
- Changes to DTD
- Major cleanup. Changed names, conventions and comments throughout.
- Added <desc> and <title> child elements to basic shapes,
<path>, <text>, <use> and <image>.
- Removed 'data' element as a child to <path>.
- Removed x,y,width,height attributes from the 'symbol' element.
(Assumed to have been a mistake that it had these attributes.).
- Removed the transform attribute from the 'svg' element
to make it parallel with 'symbol' element.
(Assumed to have been a mistake that it had a transform attribute.).
- Changes to References
- Updated the reference to the definition of URIs from the proposed draft dated 1997
(to which is what the HTML4 and CSS2 documents point) to the
to an updated document dated 1998. The updated document includes a discussion
of fragment identifiers, which are used throughout SVG.
- Changes to Accessibility Support
- Included a reference to the latest draft of SVG authoring guidelines
for accessibility.
- Included a parenthetical comment about the WG's current investigation
about providing for vocalization of tooltips along with an authoring
guideline so that SVG generators automatically convert object names
(e.g., layer names) to 'title' or 'tooltip' elements.
- New appendix on Internationalization Support
- Discussion of XML and Unicode support.
- Discussion of W3C Character Model and altglyph.
- Describe vertical text as an open issue.
Changes with the 06-July-1999 SVG Draft Specification
- Changes to Conformance Requirements and Recommendations:
- In Conforming SVG Viewers,
dropped GIF from the list of required formats. Now, only JPEG and PNG are listed.
- In Forward and undefined references,
indicated that forward references are disallowed and included a link to the
description of the 'defs' element.
- Changes to Document Structure:
- Modified the description of the 'defs' element
to discuss how all referenced elements must be direct children of a 'defs' element.
- Modified the description of the 'use' element
to indicate that 'use' can only refer to elements within an SVG file (not
entire files).
- Added a section on the 'image' element.
The 'image' element is very comparable to 'use' except that
it can only refer to whole file (not elements within a file).
- Changes to Rendering Model:
- Moved the recently modified/renamed properties
shape-rendering,
text-rendering and
image-rendering into this chapter.
(There used to be properties 'stroke-antialiasing' and 'text-antialiasing'.)
- Changes to Clipping, Masking and Compositing:
- For Clipping paths,
reformulated how clipping paths are specified. Now, there is
a 'clipPath' element whose children can include
'path' elements,
'text' elements and
other vector graphic shapes
such as 'circle'.
The silhouettes of the child elements
are logically OR'd together to create a single silhouette which is then used
to restrict the region onto which paint can be applied.
Also, fixed a bug in the spec by replacing the 'inherit' value on
'clip-path' with a 'none' value and fixed the spec to say that
'clip-path' does not inherit the 'clip-path' property from its parent.
- For Masking,
reformulated how clipping paths are specified. Now, there is
a 'mask' element whose children can include any graphical object.
The 'mask' element can have attributes maskUnits, x, y, width and height
to indicate a sub-region of the canvas for the masking operation.
These changes obsolete the following old properties: 'mask-method',
'mask-width', 'mask-height', 'mask-bbox'.
- Changes to Filling, Stroking and Paint Servers:
- Renamed stroke-antialiasing to shape-rendering,
with possible values of default,
crispEdges, optimizeSpeed and geometricPrecision. The revised property
is now just a hint to the implementation. Moved to Rendering chapter.
- Revised the wording on gradient stops
to indicate that out-of-order gradient stops shall be resolved by
adjusting offset values until the offset values become valid.
(Previously, the spec said that gradient stops would be sorted.)
- Changes to Paths:
- Removed the old elliptical arc commands A|a and B|b
and inserted a new elliptical arc command called A|a,
which has a different set of parameters than the
previous two formulations. The new arc command
matches the formulation of the other path data commands
in that it starts with the current point and ends
at an explicit (x,y) value.
- Changes to Other Vector Graphic Shapes:
- In the sentence, "Mathematically, these shape elements are equivalent
to the cubic bezier path objects that would
construct the same shape", removed the words "cubic bezier".
- Changes to Text:
- Replaced the old 'textflow', 'textblock', 'text' and 'textsrc'
with the new 'text' and 'tspan', which is a subelement to 'text'
and has optional attributes x=, y=, dx=, dy=, style= and href= (which allows
it to take the place of 'textsrc'). The only lost functionality from this
simplification is the ability to select text across discontiguous blocks of text elements.
- Made 'textPath' a container element which can contain 'tspan' elements or
character data. This reformulation was necessary given the changes in the previous bullet.
- Renamed text-antialiasing to text-rendering,
with possible values of default,
optimizeLegibility, optimizeSpeed and geometricPrecision. The revised property
is now just a hint to the implementation. Moved to Rendering chapter.
- Changes to Images:
- Added new property image-rendering,
with possible values of default,
optimizeSpeed and optimizeQuality. The new property
is just a hint to the implementation. The new property is documented in the Rendering chapter.
- Changes to Filter Effects:
- Removed vector effects, including VEAdjustGraphics and
VEPathTurbulence -- the working group decided that we hadn't
found a critical mass of vector graphics effects functionality
sufficient to warrant the additional complexity
- Modified the names of all of the filter effects processing
nodes to have the prefix "fe". The prefix is meant to
prevent name clashes (e.g., 'feImage' won't clash with 'image').
- Removed the section on parameter substitution -- the WG
didn't see why filter effects deserved macro expansion over
other features.
- Changes to Animation chapter to indicate
that SVG will include declarative animation. (Syntax still under
development.)
- One line change in the SVG DOM chapter
to change getStyle() to style property, per feedback from the DOM working group.
- Minor changes to the example in the Metadata chapter
to fix incorrect references to Dublin Core elements.
- Changes to DTD
- Changes to DTD to reflect all of the changes described earlier in this section.
- Flattened some double-indirect entity referencing into only single-indirect
referencing. Fixed bug where pattern used x,y,width,height twice.
- Changed rx,ry on 'rect' to be #IMPLIED so that if one of them is missing
the other one will be assigned the same value (for circular fillets).
Changes with the 25-June-1999 SVG Draft Specification
- General editorial activities:
- Modified the titles and content of chapters 1 and 2. Chapter 1 is now
a Introduction to SVG and chapter 2 is now
SVG Concepts.
- Included a first pass of information about
conformance requirements, including a discussion of what
makes a conforming document, generator, interpreter and viewer.
- Included updated wording on the Rendering Model.
- Reorganized the appendices. Added the beginnings of
Appendix D. SVG's Document Object Model (DOM),
Appendix E. Sample SVG files,
Appendix F. Accessibility Support,
Appendix G. Minimizing SVG File Sizes,
Appendix H. Implementation and performance notes for fonts and
Appendix I. References.
- Included an example of DOM-based animation>.
- Removed some of the wording that indicated tentativeness about certain features
as the specification of various features is firming up.
- Coordinate Systems, Transformations and Units modifications:
- Changed the 'transform' property into the transform attribute.
The transform attribute can now accept a list of transformations such
as transform="translate(-10,-20) scale(2) rotate(45) translate(5,10)".
Added skewX and skewY convenience transformations.
Removed the fit() options from the old
transform property and created new attributes fitBoxToViewport= and
preserveAspectRatio, described in new section
Establishing an Initial User Coordinate System: the fitBoxToViewport attribute.
- Added an Implementation Notes
section to the chapter on Coordinate Systems, Transformations and Units.
- Added a note to the description of the transform attribute
to indicate that the transform attribute is applied before other attributes or properties are
processed.
- Paths modifications:
- The J|j commands (elliptical quadrant) have been dropped from the list of
path data commands because the working group
felt the J|j commands would not receive wide usage.
- The path data commands
for switching between absolute and relative coordinates in the middle of
a command (the former A and r commands) have been dropped
because of their high complexity relative to their limited space-saving value.
- The various arc commands in path data
have been consolidated, renamed, and then expanded.
The new commands are: A|a (an arc whose sweep is described by a start angle and end angle) and
B|b (an arc whose sweep is described by two vectors whose intersections with the
ellipse define the start point and end points of the arc).
- Reformulated the T/t path data commands
to be consistent with the rest of the path data commands
(i.e., vertices provided, control points automatically calculated as in S/s).
- Broke up the path data commands into separate tables to improve understandability.
- Modified the write-up on markers so that the 'marker' element no longer is
a subelement to 'path'.
'marker' is now defined to be just like 'symbol', but with marker-specific attributes
markerUnits, markerWidth, markerHeight and orient.
To use a marker on a given 'path' or vector graphic shape, we have new properties
'marker-start', 'marker-end', 'marker-mid' and 'marker'.
See Markers.
- Indicated that each d= attribute in a 'path' element
is restricted to 1023 characters. See Path Data.
- Added an Implementation Notes
section to the document that describes various details about expected processing
and rendering behavior when drawing paths.
- Added The grammar for path data, a BNF for path data.
- Filling, Stroking and Paint Servers modifications:
- Included a note under 'fill' property
that indicates that open paths and polylines still can be filled.
- Provided a more detailed write-up on patterns to make
the 'pattern' element consistent in various ways with 'symbol', 'marker',
'linearGradient' and 'radialGradient'.
- Modified gradients in various ways.
Replaced attribute target-type with gradientUnits.
Replaced 'linearGradient' attributes vector-start-x, vector-start-y, vector-length, vector-angle with x1, y1, x2, y2.
Replaced 'radialGradient' attributes outermost-origin-x, outermost-origin-y, outermost-radius, innermost-x, innermost-y
with cx, cy, r, fx, fy.
Removed attributes target-left, target-top, target-right, target-bottom, which were deemed superfluous.
Renamed attribute matrix to gradientTransform.
Added gradientTransform back to linear gradients (they were in an earlier draft).
Renamed 'gradientstop' to 'stop' to save space since the working group decided it didn't want
to offer non-linear gradient ramps.
Removed attribute color from 'stop' and included new paragraphs indicating
that color and opacity are set via the 'color' and 'opacity' properties.
- Added a value of none to property
'stroke-dasharray'.
- Text modifications:
- Broke the 'textflow' element into
two elements 'textblock' and 'textflow' to greatly simplify
the feature, to remove the need to maintain consistent doubly linked lists,
and to remove the possibility of cyclic references.
Removed 'tf' and renamed 't' to 'tref'
- Renamed the 'src' subelement to 'text' to 'textsrc'
for more consistency in nomenclature and to avoid use of such a generic
element name for such a specific purpose.
- General/Miscellaneous:
- Added a syntax and various processing details for Filter Effects
- Altered the description of the
'symbol' element
to reflect the changes in transform-related attributes and properties.
- In the chapter on Other Vector Graphic Shapes,
changed the attributes on 'ellipse' from major/minor to rx/ry for consistency with other parts of the spec,
removed the angle attribute on ellipse,
reformulated polygon to be exactly line polyline except that it automatically closes,
changed "verts" to "points",
and added rounding radii rx and ry to rectangle.
Also, included a note about the 1023 character limit on the "points" attribute
for 'polyline' and 'polygon'.
- Removed property 'z-index'. The working group decided that a z-index effect can be achieved
either by having CSS manage multiple SVG drawings or by rearranging
graphical elements via the DOM. A z-index option would complicate
implementation and streaming for little gain.
- Add a chapter on Metadata,
with an initial description of how metadata would work with SVG.
- Removed the 'private' element after concluding it is unnecessary given XML namespaces
and the new W3C approach to validating namespaces. As a consequence, modified the write-up
under Private Data.
- Updated the descriptions under Embedding Foreign Object Types
to reflect increased certainty about the direction SVG is headed in this area.
- Added a General Implementation Notes
section to the chapter on Conformance Requirements and Recommendations
which discusses implementation issues that apply across the entire SVG language.
In particular, added sections Forward and Undefined References
(which explains implementation rules involving references that aren't valid at initial processing time) and
Referenced objects are "pinned" to their own coordinate systems.
- Changed all occurrences of "SVG processor" to "SVG user agent".
- Fixed all incorrect references to 'description' and replaced them with 'desc'.
- Renamed attribute 'nodeId' to 'result' due to feedback that having a name with
the term 'id' in it that wasn't an ID was potentially confusing.
- Summary of changes to the DTD:
- Gave the 'a' element have the same content model as the 'g' element.
- Add transform attribute to most graphic objects.
- Added attributes fitBoxToViewport and preserveAspectRatio to 'svg' and 'symbol' elements
- Added attributes x and y to the 'svg' element.
- For symbol_descriptor_attributes, renamed attributes x-min, y-min, x-max, y-max to x, y, width, height, respectively.
- Modified the 'marker' element to reflect the revised formulation for markers.
- Added a 'pattern' element which reflects the modified write-up on patterns. (The 'pattern' element was
missing from the previous DTD.).
- Modified the definitions of 'linearGradient' and 'radialGradient' to reflect the modified write-up on gradients.
- Renamed 'gradientstop' to 'stop'.
- Removed attribute color from 'stop'.
- Changed the attributes on 'ellipse' from major/minor to rx/ry for consistency with other parts of the spec,
removed the angle attribute on ellipse,
reformulated polygon to be exactly line polyline except that it automatically closes,
changed "verts" to "points",
and added rounding radii rx and ry to rectangle.
- Removed the 'private' element after concluding it is unnecessary given XML namespaces
and the new W3C approach to validating namespaces.
- Added xml:space to every element that might have character data content somewhere inside of it.
This will allow content developers to control whether white space is preserved
on 'text' elements.
- Text-related: renamed 'src' to 'textsrc' for more consistency in nomenclature
and to avoid use of such a generic element name for such a specific purpose.
Because of modifications in the area of defining textflows,
added 'textblock', renamed 't' to 'tref' and changed 'textflow' so that
if can only contain 'tref' subelements.
- Added a syntax for Filter Effects
- Modified 'foreignObject' such that it can only be the child of a 'switch' element.
- Added an href attribute to the 'script' element. (Oversight that it wasn't there before.)
- General clean-up in the area of anything using attributes x, y, width or height. Defined standard
entities xy_attributes, bbox_attributes_optional and bbox_attributes_wh_required.
In particular, the following elements now require width and height attributes:
'image', 'rect', 'foreignObject', 'pattern'.
Changes with the 12-April-1999 SVG Draft Specification
- Included a DTD in Appendix C.
- There is now an 'svg' element which is the root for all stand-alone SVG documents
and for any SVG fragments that are embedded inline within a parent XML grammar.
(See SVG Document Structure>.)
- Added initial descriptions of how text-on-a-path and SVG-along-a-path
might work.
(See Text on a Path.)
- Added 'symbol' and
'marker' elements to provide
packaging for the following:
- Necessary additional attributes on template objects
- A clean way of defining standard drawing symbol libraries
- The definition of a graphic to use as a custom glyph within a 'text'
element (e.g., generalize "text-on-a-path" to "SVG-on-a-path")
- Necessary additional attributes for pattern definitions (for pattern fill)
- Definition of a sprite for an animation
- Marker symbols
- Arrowheads
Also added a new optional 'data' subelement to the 'path'
element to provide the necessary hook to provide for custom arrowheads.
- Many changes to Coordinate Systems, Transformations and Units
to make the section more complete and more readable. The specific changes
to this chapter include:
- Relatively minor changes in terminology to better match the terminology
used in the CSS2 specification. For example, the definitions of the terms canvas
and viewport were modified to be as close as possible to the corresponding
definitions in the CSS2 specification.
- The initial coordinate system is now based on the parent document's
notion of pixels rather than points.
- When embedded inline within a parent XML grammar, the outermost 'svg' element
in an SVG document acts like a block-level formatting
object in the CSS layout model and thus supports CSS positioning properties such as
'left' and 'width' and the CSS properties
'clip' and 'overflow'.
- Nested 'svg' elements are the mechanism for recursively including
nested SVG drawings, but also provide the one and only means of establishing
a new viewport and thus changing the meaning of the various CSS unit
specifiers such as px, pt, cm and % (percentages). Nested 'svg' elements
support the same CSS positioning properties as an outermost 'svg' element,
- Removed 'pieslice', which was considered to be of lesser
general utility than the other predefined vector graphic shapes, and
added 'line', which allows a one-segment line to be drawn.
See Other Vector Graphic Shapes.
- Replaced the 'althtml' element with a description for
how to use the 'switch' (or equivalent) elements in
XML grammars or the 'object' element in HTML 4.0
as the recommended way to provide for alternate
representations in the event the user agent cannot process an SVG drawing.
(See Backwards Compatibility.)
- Removed the comment in the discussion under 'description' and
'title' which said that the given text string could be specified
as an attribute. The text string now can only be supplied as character data.
(See The 'description' and 'title' elements.
- Changed the wording about text strings to say that the current point
is advanced by the metrics of the glyph(s) used rather than the character used.
(See text positioning.)
- Added some details to the description of the 'textflow' element to indicate that
'text' elements can be directly embedded within 'textflow'
and that the current text position is remembered within a 'textflow'
from one 'text' element to the next 'text' element.
(See Text Flows.)
- Added a new property
'text-antialiasing'
to provide a hint to the user agent about whether or not text shall
be antialiased. The lack of such a property was an inadvertant
omission from previous versions of the spec and was called for in the
SVG Requirements document.
- Removed the 'matrix' property from linear gradients because it
was unnecessary (overspecification) and the
'spreadMethod' property from radial gradients because
it was difficult to specify and implement, it didn't match
current common usage and is of little apparent utility.
(See Gradients.)
- Included a new section 2.1 with a brief discussion about the "image/svg"
MIME type. Subsequent sections in chapter 2 have been renumbered
accordingly.
(See SVG MIME Type.)
- Added another bullet to the Accessibility section to indicate
that SVG's zooming feature aids those with partial visual impairment.
(See Accessibility.)
- Elaborated to a small level on how
Embedded Foreign Object Types might work to reflect
progess within the working group on the issue.
- Changed altglyph from a subelement to 'text' to a CSS property
in response to discussion on the W3C Character Model.
See Alternate Glyphs.
- In the discussion about the 'use' element,
made clear that template objects could come from either the same document
or an external document.
- Minor changes to description under
Event Handling to indicate
that any element can have an onload or onunload event handler to provide
additional control via scripting as parts of the drawing download progressively.
Changes with the 05Feb1999 SVG Draft Specification
This was the first public working draft.