Expanded Table of Contents
1
Introduction
1.1
About SVG
1.2
SVG Tiny 1.2
1.2.1
Profiling the SVG specification
1.3
Defining an SVG Tiny 1.2 document
1.4
SVG MIME type, file name extension and Macintosh file type
1.5
Compatibility with other standards efforts
1.6
Definitions
1.7
How to reference this specification
1.8
How to use this specification
2
Concepts
2.1
Explaining the name: SVG
2.1.1
Scalable
2.1.2
Vector
2.1.3
Graphics
2.1.4
XML
2.1.5
Namespace
2.1.6
Scriptable
2.2
Important SVG concepts
2.2.1
Graphical objects
2.2.2
Re-use
2.2.3
Fonts
2.2.4
Animation
2.3
Options for using SVG in Web pages
3
Rendering Model
3.1
Introduction
3.2
The painters model
3.3
Rendering order
3.4
Types of graphics elements
3.4.1
Rendering shapes and text
3.4.2
Rendering raster images
3.4.3
Rendering video
3.5
Object opacity
3.6
Parent compositing
4
Basic Data Types
5
Document Structure
5.1
Defining an SVG document fragment: the 'svg' element
5.1.1
Overview
5.1.2
The 'svg' element
5.2
Grouping: the 'g' element
5.2.1
Overview
5.2.2
The 'g' element
5.3
The 'defs' element
5.4
The 'discard' element
5.5
The 'title' and 'desc' elements
5.5.1
Applicable 'title' and 'desc'
5.5.2
Multiple 'title' and 'desc' elements
5.5.3
User interface behavior for 'title' and 'desc'
5.6
The 'use' element
5.7
The 'image' element
5.8
Conditional processing
5.8.1
Conditional processing overview
5.8.2
The 'switch' element
5.8.3
The 'requiredFeatures' attribute
5.8.4
The 'requiredExtensions' attribute
5.8.5
The 'systemLanguage' attribute
5.8.6
The 'requiredFormats' attribute
5.8.7
The 'requiredFonts' attribute
5.9
External resources
5.9.1
The 'externalResourcesRequired' attribute
5.9.2
Progressive rendering
5.9.3
The 'prefetch' element
5.10
Common attributes
5.10.1
Attributes common to all elements
5.10.2
Attributes for character-content elements
6
Styling
6.1
SVG's styling properties
6.2
Usage scenarios for styling
6.3
Specifying properties using the presentation attributes
6.4
Styling with XSL
6.5
Case sensitivity of property names and values
6.6
Facilities from CSS and XSL used by SVG
6.7
Property inheritance and computation
7
Coordinate Systems, Transformations and Units
7.1
Introduction
7.2
The initial viewport
7.3
The initial coordinate system
7.4
Coordinate system transformations
7.5
Nested transformations
7.6
The 'transform' attribute
7.6.1
The TransformList value
7.7
Constrained transformations
7.7.1
The user transform
7.7.2
ViewBox to viewport transformation
7.7.3
Element transform stack
7.7.4
The current transformation matrix
7.7.5
The TransformRef value
7.8
The 'viewBox' attribute
7.9
The 'preserveAspectRatio' attribute
7.10
Establishing a new viewport
7.11
Units
7.12
Bounding box
7.13
Object bounding box units
7.14
Intrinsic sizing properties of the viewport of SVG content
7.15
Geographic coordinate systems
7.16
The 'svg:transform' attribute
8
Paths
8.1
Introduction
8.2
The 'path' element
8.2.1
Animating path data
8.3
Path data
8.3.1
General information about path data
8.3.2
The "moveto" commands
8.3.3
The "closepath" command
8.3.4
The "lineto" commands
8.3.5
The Curve commands
8.3.6
The Cubic Bézier curve commands
8.3.7
The Quadratic Bézier curve commands
8.3.8
The grammar for path data
8.4
Distance along a path
9
Basic Shapes
9.1
Introduction
9.2
The 'rect' element
9.3
The 'circle' element
9.4
The 'ellipse' element
9.5
The 'line' element
9.6
The 'polyline' element
9.7
The 'polygon' element
9.7.1
The grammar for points specifications in 'polyline' and 'polygon' elements
10
Text
10.1
Introduction
10.2
Characters and their corresponding glyphs
10.3
Fonts, font tables and baselines
10.4
The 'text' element
10.5
The 'tspan' element
10.6
Text layout
10.6.1
Text layout introduction
10.6.2
Relationship with bidirectionality
10.6.3
The 'direction' property
10.6.4
The 'unicode-bidi' property
10.7
Text rendering order
10.8
Alignment properties
10.8.1
Text alignment properties
10.9
Font selection properties
10.10
White space handling
10.11
Text in an area
10.11.1
Introduction to text in an area
10.11.2
The 'textArea' element
10.11.3
The 'tbreak' element
10.11.4
The 'line-increment' property
10.11.5
The 'text-align' property
10.11.6
The 'display-align' property
10.11.7
Text in an area layout rules
10.12
Editable text fields
10.12.1
The 'editable' attribute
10.13
Text selection and clipboard operations
10.14
Text search
11
Painting: Filling, Stroking, Colors and Paint Servers
11.1
Introduction
11.2
Specifying paint
11.3
Fill properties
11.4
Stroke properties
11.5
Non-scaling stroke
11.6
Simple alpha compositing
11.6.1
Compositing the currentColor value
11.7
The 'viewport-fill' property
11.8
The 'viewport-fill-opacity' property
11.9
Controlling visibility and rendering
11.10
Rendering hints
11.10.1
The 'color-rendering' property
11.10.2
The 'shape-rendering' property
11.10.3
The 'text-rendering' property
11.10.4
The 'image-rendering' property
11.10.5
The 'buffered-rendering' property
11.11
Inheritance of painting properties
11.12
Object and group opacity: the 'opacity' property
11.13
Color
11.13.1
Syntax for color values
11.13.2
HTML color keywords
11.14
Paint servers
11.14.1
System paint servers
11.14.2
The 'solidColor' element
11.14.3
The 'color' property
11.15
Gradients
11.15.1
Linear gradients
11.15.2
Radial gradients
11.15.3
Defining gradient stops: the 'stop' element
12
Multimedia
12.1
Media elements
12.1.1
Media timeline and document timeline
12.1.2
Media availability
12.1.3
Platform limits
12.1.4
Audio mixing for 'audio' and 'video' elements
12.1.5
Discrete control of audio and video
12.1.6
Controlling media playback through script
12.2
The 'audio' element
12.3
The 'video' element
12.3.1
Restricting the transformation of the 'video' element
12.3.2
Restricting compositing of the 'video' element
12.3.3
Examples
12.4
The 'animation' element
12.5
The 'audio-level' property
12.6
Attributes for runtime synchronization
12.7
The 'initialVisibility' attribute
13
Interactivity
13.1
Introduction
13.2
Complete list of supported events
13.3
User interface events
13.4
Pointer events
13.5
Text events
13.6
Key events
13.7
Event flow
13.8
Event dispatching
13.9
Processing order for user interface events
13.10
The 'pointer-events' property
13.11
Magnification and panning
13.12
Element focus
13.12.1
The 'focusable' attribute
13.13
Navigation
13.13.1
Navigation behavior
13.13.2
Specifying navigation
13.13.3
Specifying focus highlighting
13.13.4
Obtaining and listening to focus programmatically
14
Linking
14.1
References
14.1.1
Overview
14.1.2
IRIs and URIs
14.1.3
Syntactic forms: IRI and FuncIRI
14.1.4
Reference restrictions
14.1.5
IRI reference attributes
14.1.6
Processing of external references to documents
14.2
Links out of SVG content: the 'a' element
14.2.1
Indicating links
14.3
Linking into SVG content: IRI fragments and SVG views
14.3.1
Introduction: IRI fragments and SVG views
14.3.2
SVG fragment identifiers
15
Scripting
15.1
Specifying the scripting language
15.1.1
Specifying the default scripting language
15.1.2
Local declaration of a scripting language
15.2
The 'script' element
15.2.1
Script processing
15.3
XML Events
15.4
The 'listener' element
15.5
The 'handler' element
15.5.1
Parameters to 'handler' elements
15.6
Event handling
15.7
Processing inline executable content
16
Animation
16.1
Introduction
16.2
Animation elements
16.2.1
Overview
16.2.2
Relationship to SMIL 2.1 Animation
16.2.3
Animation elements example
16.2.4
Attributes to identify the target element for an animation
16.2.5
Attributes to identify the target attribute or property for an animation
16.2.6
Animation with namespaces
16.2.7
Paced animation and complex types
16.2.8
Attributes to control the timing of the animation
16.2.9
Attributes that define animation values over time
16.2.10
Attributes that control whether animations are additive
16.2.11
Inheritance
16.2.12
The 'animate' element
16.2.13
The 'set' element
16.2.14
The 'animateMotion' element
16.2.15
The 'mpath' element
16.2.16
The 'animateColor' element
16.2.17
The 'animateTransform' element
16.2.18
Attributes and properties that can be animated
16.3
Animation using the SVG DOM
16.4
Animation and the bounding box
17
Fonts
17.1
Introduction
17.1.1
Describing fonts available to SVG
17.1.2
Defining fonts in SVG
17.2
Overview of SVG fonts
17.3
The 'font' element
17.4
The 'glyph' element
17.5
The 'missing-glyph' element
17.6
Glyph selection rules
17.7
The 'hkern' element
17.8
Describing a font
17.8.1
Overview of font descriptions
17.8.2
The 'font-face' element
17.8.3
The 'font-face-src' element
17.8.4
The 'font-face-uri' element
18
Metadata
18.1
Introduction
18.2
The 'metadata' element
18.2.1
A 'metadata' element example
18.3
Extensible metadata attributes
19
Extensibility
19.1
Foreign namespaces and private data
19.2
Embedding foreign object types
19.2.1
The 'foreignObject' element
19.2.2
Examples of 'foreignObject'
Appendix A
The SVG Micro DOM (uDOM)
A.1
Introduction
A.2
Overview of the SVG uDOM
A.2.1
Document access
A.2.2
Tree navigation
A.2.3
Element creation
A.2.4
Element insertion
A.2.5
Element removal
A.2.6
Attribute and property access
A.2.7
Event listener registration and removal
A.2.8
Animation
A.2.9
Multimedia control
A.2.10
Java package naming
A.3
Conforming to the SVG uDOM
A.3.1
Float values
A.3.2
Attribute/property normalization
A.3.3
Text content access
A.4
Module: dom
A.4.1
DOMException
A.4.2
Node
A.4.3
Element
A.4.4
Document
A.4.5
ElementTraversal
A.4.6
Location
A.4.7
Window
A.5
Module: views
A.5.1
AbstractView
A.5.2
DocumentView
A.6
Module: events
A.6.1
EventTarget
A.6.2
EventListener
A.6.3
Event
A.6.4
MouseEvent
A.6.5
MouseWheelEvent
A.6.6
TextEvent
A.6.7
KeyboardEvent
A.6.8
UIEvent
A.6.9
ProgressEvent
A.7
Module: smil
A.7.1
ElementTimeControl
A.7.2
TimeEvent
A.8
Module: svg
A.8.1
SVGException
A.8.2
SVGDocument
A.8.3
SVGUseElement
A.8.4
SVGElementInstance
A.8.5
SVGSVGElement
A.8.6
SVGRGBColor
A.8.7
SVGRect
A.8.8
SVGPoint
A.8.9
SVGPath
A.8.10
SVGMatrix
A.8.11
SVGLocatable
A.8.12
SVGLocatableElement
A.8.13
TraitAccess
A.8.14
Additional accessing rules
A.8.15
SVGElement
A.8.16
SVGTimedElement
A.8.17
SVGAnimationElement
A.8.18
SVGVisualMediaElement
A.8.19
SVGTimer
A.8.20
SVGGlobal
A.8.21
AsyncStatusCallback
A.8.22
AsyncURLStatus
A.8.23
EventListenerInitializer2
Appendix B
IDL Definitions
Appendix C
Implementation Requirements
C.1
Introduction
C.2
Unsupported elements, attributes, properties, attribute values and property values
C.3
Error processing
C.4
Namespace, version, baseProfile, requiredFeatures and requiredExtensions
C.5
Clamping of color and opacity Values
C.6
'path' element implementation notes
C.7
Text selection implementation notes
C.8
Printing implementation notes
Appendix D
Conformance Criteria
D.1
Introduction
D.2
Terminology
D.3
SVG content conformance
D.3.1
Conforming SVG Document Fragments
D.3.2
Conforming SVG Stand-Alone Documents
D.3.3
Conforming SVG Included Document Fragments
D.3.4
Conditionally Conforming SVG Tiny 1.2 Document Fragments
D.4
SVG writer conformance
D.4.1
Conforming SVG Generators
D.4.2
Conforming SVG Authoring Tools
D.4.3
Conforming SVG Servers
D.5
SVG reader conformance
D.5.1
Conforming SVG Interpreters
D.5.2
Conforming SVG Viewers
D.6
Extension conformance requirements
D.7
Non-XML encoding conformance requirements
Appendix E
Conformance to QA Framework Specification Guidelines
E.1
Introduction
E.2
Checklist table
E.3
List of deprecated features
Appendix F
Accessibility Support
F.1
WAI accessibility guidelines
F.2
SVG content accessibility guidelines
F.3
SVG user agent accessibility guidelines
Appendix G
Internationalization Support
G.1
Introduction
G.2
Internationalization and SVG
G.3
SVG internationalization guidelines
G.4
Markup for the internationalization and localization of SVG
Appendix H
JPEG Support
H.1
Introduction
H.2
Required support
Appendix I
Minimizing SVG File Sizes
Appendix J
Feature Strings
J.1
General feature strings
J.2
Specific feature strings
Appendix K
Element Table
Appendix L
Attribute and Property Tables
L.1
Property table
L.2
Attribute table
Appendix M
Media Type Registration for image/svg+xml
M.1
Introduction
M.2
Registration of media type image/svg+xml
Appendix N
RelaxNG Schema for SVG Tiny 1.2
Appendix O
ECMAScript Language Binding
O.1
Module dom
O.2
Module views
O.3
Module events
O.4
Module smil
O.5
Module svg
O.6
Sequences
Appendix P
Java Language Binding
P.1
Package org.w3c.dom
P.2
Package org.w3c.dom.views
P.3
Package org.w3c.dom.events
P.4
Package org.w3c.dom.smil
P.5
Package org.w3c.dom.svg
Appendix Q
Perl Language Binding
Q.1
Module dom
Q.2
Module views
Q.3
Module events
Q.4
Module smil
Q.5
Module svg
Appendix R
Python Language Binding
R.1
Module dom
R.2
Module views
R.3
Module events
R.4
Module smil
R.5
Module svg
Appendix S
References
S.1
Normative references
S.2
Informative references
Appendix T
Change History
T.1
Changes over the whole document
T.2
1 Introduction
T.3
2 Concepts
T.4
3 Rendering Model
T.5
4 Basic Data Types and Color Keywords
T.6
5 Document Structure
T.7
6 Styling
T.8
7 Coordinate Systems, Transformations and Units
T.9
8 Paths
T.10
9 Basic Shapes
T.11
10 Text
T.12
11 Painting: Filling, Stroking, Colors and Paint Servers
T.13
12 Multimedia
T.14
13 Interactivity
T.15
14 Linking
T.16
15 Scripting
T.17
16 Animation
T.18
17 Fonts
T.19
18 Metadata
T.20
19 Extensibility
T.21
Appendix A The SVG Micro DOM (uDOM)
T.22
Appendix B IDL Definitions
T.23
Appendix C Implementation Requirements
T.24
Appendix D Conformance Criteria
T.25
Appendix E Conformance to QA Framework Specification Guidelines
T.26
Appendix F Accessibility Support
T.27
Appendix G Internationalization Support
T.28
Appendix H JPEG Support
T.29
Appendix I Minimizing SVG File Sizes
T.30
Appendix J Feature Strings
T.31
Appendix K Element Table
T.32
Appendix L Attribute and Property Tables
T.33
Appendix M Media Type Registration for image/svg+xml
T.34
Appendix N RelaxNG Schema for SVG Tiny 1.2
T.35
Appendix O References