A public SVG 1.1 testsuite has been published some years ago; in the meantime, the SVG 1.1 testsuite has continued to be developed - more tests added, tests corrected.
SVG 1.2 is an upgrade to SVG 1.1, adding new features. It also has a test suite.
To make a new test:
A blank svg template is the starting point for a new test. For SVG Tiny 1.2, use template12-t.svg. For SVG 1.1, use template11-f.svg. The test suite scripts rely on these templates having been used. Copy this file and edit that copy to make your test. Note that this file contains both the actual test, and also the documentation for the test (in a different namespace).
The first thing you need to decide is what filename to use for the new test. Filenames
have the following structure:
chapter-section-number-profile.svg. For example,
struct-snapshot-101-t.svg. The chapter part is an abbreviation of the
chapter in the SVG 1.1 or SVG Mobile 1.2 specification, as appropriate. The section is an abbreviation of
the section in that chapter where the feature is described. Here is a
list of 1.1 chapter and section names and a list of Tiny 1.2 chapter and section names
- your test chapter and section names must be picked from that list. If you pick a section that has no tests (and thus no short name) make a new one and document it in the list below so others use the same name.
number is a number - SVG 1.2 tests start with 201 to allow the SVG 1.1 and 1.2 tests to be combined. To reserve a number, first do a CVS update to see what tests already exist, then pick the next number in your section and check in a blank test (just the template) into CVS. profile is a letter designating the profile. For SVG 1.1 this was t or b or f for Tiny, Basic, or Full; for SVG 1.2 Tiny its always t and your template already has the appropriate letter.
There are separate directories for the original svg files, for processed svg files (where the test documentation has been stripped out), for images used by tests, for test harnesses (navigation structures to tie the tests into a test suite), and for reference images.
The 1.1 tests are under http://dev.w3.org/SVG/profiles/1.1F2/test/
For creating a new test, you will only be concerned with the svg directory (and, if it uses external images, the images directory). The SVG Tiny 1.2 testsuite has a very similar structure:
The 1.2 Tiny tests are under repository/testsuite/1.2T
The SVG for your test all goes inside a particular g element, replacing the comment:
<g id="test-body-content"> <!-- put all of the actual test here --> </g>
Any SVG that you put outside this group may be discarded by the test generating process. This includes defs elements, fonts, etc. They all go inside this group. If you really, really need something to be outside this group (eg, a UTF-16 test) then mail the working group; the scripts for test generation may need to be specially modified for individual special tests.
Tests should be designed to clearly show the essential feature being tested, and to make lack of conformance visually obvious.
Your template has xhtml 'p' elements). Put the instructions for running the test here, adding more elements as required. First, briefly explain the purpose of the test. Then, briefly explain what someone should look for when running the test, to tell if an implementation passed or failed the test. Preferably, the user should be able to do this quickly, without reloading the test, without looking at the source code. Lastly, give any further details of the test (incluuding reference to individual elements, ids etc) that will help others understand how the test works (if it is at all unclear or complicated), eg an implementor trying to see why their implementation exactly fails.
Once created, tests are reviewed and accepted by the Group. The review status is in the test itself, in several attributes on the SVGTestCase element. This information is used to generate summaries: see the SVG 1.1 Test suite summary table.
The owner attribute holds the initials of the test owner (you). They are the same initials as are used in taking minutes, see list of people. For example, owner="SH"
The initals of the person who reviews your test. If you don't know who this is, leave it blank and ask on the mailing list for a reviewer. For example, reviewer="CL"
The values of the status attribute and their meanings are:
This takes the values yes or no. When the WG has approved a test, the attribute is set to yes. By this point the status should also be 'accepted'; make it so if not.
Sometimes it happens that there is discussion about a test - is it wrong, is the spec wrong or unclear, etc. In this case an issue will be raised in the WG. Use an issue="IssueNumber" attribute on SVGTestCase to indicate that. IssueNumber is the number in the issues list tracker, for example issue="ISSUE-987"
When a test is created it needs to be reviewed before it can be accepted. The Test Review wiki page contains a list of the tests that require reviewing, the own of the test and any allocated reviewers for the test. The page can be found at the following location: http://www.w3.org/Graphics/SVG/Group/wiki/TestReview
Tests are to be added to the table when they are created. The table must be updated when a reviewer is assigned to review the test. When the test is approved, its corresponding entry in the review table must be removed.
To add a test to the table:
Once the test is completed it needs to be marked off on the Test Coverage wiki report.
The SVG Tiny 1.2 Test Coverage wiki report contains all the testable assertions in the SVG 1.2 Tiny specification for each chapter. The report can be found at the following location: http://www.w3.org/Graphics/SVG/Group/wiki/TestCoverage .
When a test is completed it should be marked off on the Test Coverage wiki report. This helps show what parts of the specification are tested and what parts need to have tests made for them. Keeping this page update is very important.
To mark a test off:
A table lists the SVG 1.1 tests and the corresponding SVG Tiny 1.2 test names; it also shows what edits are needed, like deleting subtests.
This is the naming structure for 1.1 tests.
1 Introduction intro 1.1 About SVG 1.1.1 Modularization 1.1.2 Element and Attribute Collections 1.1.3 Profiling the SVG specification 1.2 SVG MIME type, file name extension and Macintosh file type 1.3 SVG Namespace, Public Identifier and System Identifier intro-ns 1.4 Compatibility with Other Standards Efforts 1.5 Terminology 1.6 Definitions 2 Concepts concept 2.1 Explaining the name: SVG 2.2 Important SVG concepts 2.3 Options for using SVG in Web pages 3 Rendering Model render 3.1 Introduction render-intro 3.2 The painters model 3.3 Rendering Order 3.4 How groups are rendered render-groups 3.5 How elements are rendered render-elems 3.6 Types of graphics elements 3.6.1 Painting shapes and text 3.6.2 Painting raster images 3.7 Filtering painted regions 3.8 Clipping, masking and object opacity 3.9 Parent Compositing 4 Basic Data Types and Interfaces types 4.1 Basic data types types-basic 4.2 Recognized color keyword names types-color 4.3 Basic DOM interfaces types-dom 5 Document Structure struct 5.1 Defining an SVG document fragment: the 'svg' element struct-frag 5.1.1 Overview 5.1.2 The 'svg' element 5.2 Grouping: the 'g' element struct-group 5.2.1 Overview 5.2.2 The 'g' element 5.3 References and the 'defs' element struct-defs 5.3.1 Overview 5.3.2 URI reference attributes 5.3.3 The 'defs' element 5.4 The 'desc' and 'title' elements 5.5 The 'symbol' element struct-symbol 5.6 The 'use' element struct-use 5.7 The 'image' element struct-image 5.8 Conditional processing struct-cond 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 Applicability of test attributes 5.9 Specifying whether external resources are required for proper rendering 5.10 Common attributes 5.10.1 Attributes common to all elements: id and xml:base 5.10.2 The xml:lang and xml:space attributes 5.11 Core Attribute Module 5.12 Structure Module 5.13 Basic Structure Module 5.14 Container Attribute Module 5.15 Conditional Processing Module 5.16 Image Module 5.17 DOM interfaces struct-dom 6 Styling styling 6.1 SVG's styling properties 6.2 Usage scenarios for styling 6.3 Alternative ways to specify styling properties 6.4 Specifying properties using the presentation attributes styling-pres 6.5 Entity definitions for the presentation attributes 6.6 Styling with XSL 6.7 Styling with CSS styling-css 6.8 Case sensitivity of property names and values 6.9 Facilities from CSS and XSL used by SVG 6.10 Referencing external style sheets 6.11 The 'style' element styling-elem 6.12 The class attribute 6.13 The style attribute 6.14 Specifying the default style sheet language 6.15 Property inheritance styling-inherit 6.16 The scope/range of styles 6.17 User agent style sheet 6.18 Aural style sheets 6.19 Style Module 6.20 DOM interfaces 7 Coordinate Systems, Transformations and Units coords 7.1 Introduction coords-intro 7.2 The initial viewport 7.3 The initial coordinate system coords-coord 7.4 Coordinate system transformations coords-trans 7.5 Nested transformations 7.6 The transform attribute coords-transformattr 7.7 The viewBox attribute coords-viewattr 7.8 The preserveAspectRatio attribute coords-pAR 7.9 Establishing a new viewport 7.10 Units coords-units 7.11 Object bounding box units 7.12 Geographic Coordinate Systems 7.13 Viewport Attribute Module 7.14 DOM interfaces coords-dom 8 Paths paths 8.1 Introduction paths-intro 8.2 The 'path' element 8.3 Path Data paths-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 elliptical arc curve commands 8.3.9 The grammar for path data 8.4 Distance along a path paths-dist 8.5 DOM interfaces 9 Basic Shapes shapes 9.1 Introduction shapes-intro 9.2 The 'rect' element shapes-rect 9.3 The 'circle' element shapes-circle 9.4 The 'ellipse' element shapes-ellipse 9.5 The 'line' element shapes-line 9.6 The 'polyline' element shapes-polyline 9.7 The 'polygon' element shapes-polygon 9.8 The grammar for points specifications in 'polyline' and 'polygon' elements shapes-grammar 9.9 Shape Module 9.10 DOM interfaces 10 Text text 10.1 Introduction text-intro 10.2 Characters and their corresponding glyphs 10.3 Fonts, font tables and baselines 10.4 The 'text' element text-text 10.5 The 'tspan' element text-tspan 10.6 The 'tref' element text-tref 10.7 Text layout 10.7.1 Text layout introduction 10.7.2 Setting the inline-progression-direction 10.7.3 Glyph orientation within a text run 10.7.4 Relationship with bidirectionality text-bidi 10.8 Text rendering order 10.9 Alignment properties text-align 10.9.1 Text alignment properties 10.9.2 Baseline alignment properties 10.10 Font selection properties text-fonts 10.11 Spacing properties text-spacing 10.12 Text decoration text-deco 10.14 Text on a path text-path 10.14.1 Introduction to text on a path 10.14.2 The 'textPath' element 10.14.3 Text on a path layout rules 10.14 Alternate glyphs text-altglyph 10.15 White space handling text-ws 10.16 Text selection and clipboard operations text-tselect 10.17 Text Module 10.18 Basic Text Module 10.19 DOM interfaces 11 Painting: Filling, Stroking and Marker Symbols painting 11.1 Introduction 11.2 Specifying paint 11.3 Fill Properties painting-fill 11.4 Stroke Properties painting-stroke 11.5 Controlling visibility paint-control 11.6 Markers painting-marker 11.6.1 Introduction 11.6.2 The 'marker' element 11.6.3 Marker properties 11.6.4 Details on how markers are rendered 11.7 Rendering properties painting-render 11.7.1 Color interpolation properties: 'color-interpolation' and 'color-interpolation-filters' 11.7.2 The 'color-rendering' property 11.7.3 The 'shape-rendering' property 11.7.4 The 'text-rendering' property 11.7.5 The 'image-rendering' property 11.8 Inheritance of painting properties 11.9 Paint Attribute Module 11.10 Basic Paint Attribute Module 11.11 Opacity Attribute Module 11.12 Graphics Attribute Module 11.13 Basic Graphics Attribute Module 11.14 Marker Module 11.15 DOM interfaces 12 Color color 12.1 Introduction color-intro 12.2 The 'color' property color-prop 12.3 Color profile descriptions color-prof 12.3.1 Overview of color profile descriptions 12.3.2 Alternative ways for defining a color profile description 12.3.3 The 'color-profile' element 12.3.4 @color-profile when using CSS styling 12.3.5 'color-profile' property 12.4 Color Profile Module 12.7 DOM interfaces 13 Gradients and Patterns pservers 13.1 Introduction 13.2 Gradients pservers-grad 13.2.1 Introduction 13.2.2 Linear gradients 13.2.3 Radial gradients 13.2.4 Gradient stops 13.3 Patterns pservers-pattern 13.4 Gradient Module 13.5 Pattern Module 13.6 DOM interfaces 14 Clipping, Masking and Compositing masking 14.1 Introduction masking-intro 14.2 Simple alpha compositing 14.3 Clipping paths masking-path 14.3.1 Introduction 14.3.2 The initial clipping path 14.3.3 The 'overflow' and 'clip' properties 14.3.4 Clip to viewport vs. clip to viewBox 14.3.5 Establishing a new clipping path 14.4 Masking masking-mask 14.5 Object and group opacity: the 'opacity' property masking-opacity 14.6 Clip Module 14.7 Basic Clip Module 14.8 Mask Module 14.9 DOM interfaces 15 Filter Effects filters 15.1 Introduction filters-intro 15.2 An example filters-example 15.3 The 'filter' element filters-felem 15.4 The 'filter' property 15.5 Filter effects region 15.6 Accessing the background image 15.7 Filter primitives overview 15.7.1 Overview 15.7.2 Common attributes 15.7.3 Filter primitive subregion 15.8 Light source elements and properties filters-light 15.8.1 Introduction 15.8.2 Light source 'feDistantLight' 15.8.3 Light source 'fePointLight' 15.8.4 Light source 'feSpotLight' 15.8.5 The 'lighting-color' property 15.9 Filter primitive 'feBlend' filters-blend 15.10 Filter primitive 'feColorMatrix' filters-color 15.11 Filter primitive 'feComponentTransfer' filters-comptran 15.12 Filter primitive 'feComposite' filters-composite 15.13 Filter primitive 'feConvolveMatrix' filters-conv 15.14 Filter primitive 'feDiffuseLighting' filters-diffuse 15.15 Filter primitive 'feDisplacementMap' filters-displace 15.16 Filter primitive 'feFlood' 15.17 Filter primitive 'feGaussianBlur' filters-gauss 15.18 Filter primitive 'feImage' filters-image 15.19 Filter primitive 'feMerge' 15.20 Filter primitive 'feMorphology' filters-morph 15.21 Filter primitive 'feOffset' filters-offset 15.22 Filter primitive 'feSpecularLighting' filters-specular 15.23 Filter primitive 'feTile' filters-tile 15.24 Filter primitive 'feTurbulence' filters-turb 15.25 Filter Module 15.26 Basic Filter Module 15.27 DOM interfaces 16 Interactivity interact 16.1 Introduction 16.2 Complete list of supported events interact-events 16.3 User interface events interact-uievents 16.4 Pointer events interact-pevents 16.5 Processing order for user interface events interact-order 16.6 The 'pointer-events' property interact-pointer 16.7 Magnification and panning interact-zoom 16.8 Cursors interact-cursor 16.8.1 Introduction to cursors 16.8.2 The 'cursor' property 16.8.3 The 'cursor' element 16.9 Document Events Attribute Module 16.10 Graphical Events Attribute Module 16.11 Animation Events Attribute Module 16.12 Cursor Module 16.13 DOM interfaces interact-dom 17 Linking linking 17.1 Links out of SVG content: the 'a' element linking-a 17.2 Linking into SVG content: URI fragments and SVG views linking-uri 17.2.1 Introduction: URI fragments and SVG views 17.2.2 SVG fragment identifiers 17.2.3 Predefined views: the 'view' element 17.3 Hyperlinking Module 17.4 Xlink Attribute Module 17.5 ExternalResourcesRequired Attribute Module 17.6 View Module 17.7 DOM interfaces 18 Scripting script 18.1 Specifying the scripting language script-specify 18.1.1 Specifying the default scripting language 18.1.2 Local declaration of a scripting language 18.2 The 'script' element script-elem 18.3 Event handling script-handle 18.4 Event attributes 18.5 Scripting Module 18.6 DOM interfaces 19 Animation animate 19.1 Introduction animate-intro 19.2 Animation elements animate-elem 19.2.1 Overview 19.2.2 Relationship to SMIL Animation 19.2.3 Animation elements example 19.2.4 Attributes to identify the target element for an animation 19.2.5 Attributes to identify the target attribute or property for an animation 19.2.6 Attributes to control the timing of the animation 19.2.7 Attributes that define animation values over time 19.2.8 Attributes that control whether animations are additive 19.2.9 Inheritance 19.2.10 The 'animate' element 19.2.11 The 'set' element 19.2.12 The 'animateMotion' element 19.2.13 The 'animateColor' element 19.2.14 The 'animateTransform' element 19.2.15 Elements, attributes and properties that can be animated 19.3 Animation using the SVG DOM animate-dom 19.4 Animation Module 19.5 DOM interfaces animate-dom 20 Fonts 20.1 Introduction fonts-intro 20.2 Overview of SVG fonts 20.3 The 'font' element fonts-elem 20.4 The 'glyph' element fonts-glyph 20.5 The 'missing-glyph' element 20.6 Glyph selection rules 20.7 The 'hkern' and 'vkern' elements fonts-kern 20.8 Describing a font fonts-desc 20.8.1 Overview of font descriptions 20.8.2 Alternative ways for providing a font description 20.8.3 The 'font-face' element 20.9 Full Font Module 20.10 Basic Font Module 20.11 DOM interfaces 21 Metadata metadata 21.1 Introduction metadata-intro 21.2 The 'metadata' element metadata-elem 21.3 An example metadata-example 21.4 DOM interfaces 22 Backwards Compatibility 23 Extensibility extend 23.1 Foreign namespaces and private data extend-namespace 23.2 Embedding foreign object types 23.3 The 'foreignObject' element 23.4 An example 23.5 Adding private elements and attributes to the DTD 23.6 Extensibility Module 23.7 DOM interfaces Appendix A: DTD A.1 SVG 1.1 DTD Module Implementations A.1.1 Modular Framework Module A.1.2 Datatypes Module A.1.3 Qualified Name Module A.1.4 Core Attribute Module A.1.5 Container Attribute Module A.1.6 Viewport Attribute Module A.1.7 Paint Attribute Module A.1.8 Basic Paint Attribute Module A.1.9 Paint Opacity Attribute Module A.1.10 Graphics Attribute Module A.1.11 Basic Graphics Attribute Module A.1.12 Document Events Attribute Module A.1.13 Graphical Element Events Attribute Module A.1.14 Animation Events Attribute Module A.1.15 XLink Attribute Module A.1.16 External Resources Attribute Module A.1.17 Structure Module A.1.18 Basic Structure Module A.1.19 Conditional Processing Module A.1.20 Image Module A.1.21 Style Module A.1.22 Shape Module A.1.23 Text Module A.1.24 Basic Text Module A.1.25 Marker Module A.1.26 Color Profile Module A.1.27 Gradient Module A.1.28 Pattern Module A.1.29 Clip Module A.1.30 Basic Clip Module A.1.31 Mask Module A.1.32 Filter Module A.1.33 Basic Filter Module A.1.34 Cursor Module A.1.35 Hyperlinking Module A.1.36 View Module A.1.37 Scripting Module A.1.38 Animation Module A.1.39 Font Module A.1.40 Basic Font Module A.1.41 Extensibility Module A.2 SVG 1.1 Document Type Definition A.2.1 SVG 1.1 DTD Driver A.2.2 SVG 1.1 Document Model A.2.3 SVG 1.1 Attribute Collection Appendix B: SVG Document Object Model (DOM) svgdom B.1 SVG DOM Overview svgdom-over B.2 Naming Conventions B.3 Interface SVGException B.4 Feature strings for the hasFeature method call B.5 Relationship with DOM2 events B.6 Relationship with DOM2 CSS object model (CSS OM) B.6.1 Introduction B.6.2 User agents that do not support styling with CSS B.6.3 User agents that support styling with CSS B.6.4 Extended interfaces B.7 Invalid values Appendix C: IDL Definitions Appendix D: Java Language Binding D.1 Using SVG with Java Appendix E: ECMAScript Language Binding Appendix F: Implementation Requirements F.1 Introduction F.2 Error processing F.3 Version control F.4 Clamping values which are restricted to a particular range F.5 'path' element implementation notes F.6 Elliptical arc implementation notes F.6.1 Elliptical arc syntax F.6.2 Out-of-range parameters F.6.3 Parameterization alternatives F.6.4 Conversion from center to endpoint parameterization F.6.5 Conversion from endpoint to center parameterization F.6.6 Correction of out-of-range radii F.7 Text selection implementation notes F.8 Printing implementation notes Appendix G: Conformance Criteria G.1 Introduction G.2 Conforming SVG Document Fragments G.3 Conforming SVG Stand-Alone Files G.4 Conforming SVG Included Document Fragments G.5 Conforming SVG Generators G.6 Conforming SVG Interpreters G.7 Conforming SVG Viewers Appendix H: Accessibility Support H.1 WAI Accessibility Guidelines H.2 SVG Content Accessibility Guidelines Appendix I: Internationalization Support I.1 Introduction I.2 Internationalization and SVG I.3 SVG Internationalization Guidelines Appendix J: Minimizing SVG File Sizes Appendix K: References K.1 Normative references K.2 Informative references Appendix L: Element Index Appendix M: Attribute Index Appendix N: Property Index Appendix O: Feature Strings Appendix P: Index
This is the naming structure for 1.2T tests. The test coverage analysis is maintained on the SVG WG wiki.
This uses the same names as 1.1 as far as possible, to simplify renaming 1.1 to 1.2T tests. Differences - some 1.1 Basic or Full tests are 1.2 Tiny tests, see the conversion table. Color and gradient tests are now part of the paint chapter.
1 Introduction intro 1.1 About SVG 1.2 SVG Tiny 1.2 1.2.1 Modularization 1.2.2 Element and Attribute collections 1.2.3 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 2 Concepts concept 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 Reuse 2.2.3 Fonts 2.2.4 Animation 2.3 Options for using SVG in Web pages 3 Rendering Model render 3.1 Introduction render-intro 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 render-opacity 3.6 Parent Compositing render-composite 4 Basic Data Types and Color Keywords 4.1 Basic Data Types 5 Document Structure struct 5.1 Defining an SVG document fragment: the 'svg' element struct-frag 5.1.1 Overview 5.1.2 The 'svg' element 5.2 Grouping: the 'g' element struct-group 5.2.1 Overview 5.2.2 The 'g' element 5.3 The 'defs' element struct-defs 5.4 The 'discard' element struct-discard 5.5 The 'desc' and 'title' elements 5.6 The 'use' element struct-use 5.7 The 'image' element struct-image 5.8 Conditional processing struct-cond 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 struct-ext 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: 'class', 'id', 'xml:id' and 'xml:base' 5.10.2 The 'xml:lang' and 'xml:space' attributes 6 Styling styling 6.1 SVG's styling properties 6.2 Usage scenarios for styling 6.3 Specifying properties using the presentation attributes styling-pres 6.4 Styling with XSL 6.5 Case sensitivity of property names and values styling-case 6.6 Facilities from CSS and XSL used by SVG 6.7 Property inheritance and computation styling-inherit 7 Coordinate Systems, Transformations and Units coords 7.1 Introduction coords-intro 7.2 The initial viewport coords-viewport 7.3 The initial coordinate system coords-coord 7.4 Coordinate system transformations coords-trans 7.5 Nested transformations coords-nest 7.6 The transform attribute 7.6.1 The TransformList value 7.7 Constrained Transformations coords-constr 7.7.1 The User Transform 7.7.2 ViewBox to Viewport transformation 7.7.3 Element Transform Stack 7.7.4 The Current Transform Matrix 7.7.5 The TransformRef value 7.8 The 'viewBox' attribute coords-viewattr 7.9 The 'preserveAspectRatio' attribute coords-pAR 7.10 Establishing a new viewport 7.11 Units coords-units 7.12 Object bounding box units coords-bbunits 7.13 Intrinsic Sizing Properties of the Viewport of SVG contentcoords-intrinsic 7.14 Geographic Coordinate Systems coords-geo 7.15 The svg:transform attribute coords-svgtrans 8 Paths paths 8.1 Introduction paths-intro 8.2 The 'path' element 8.2.1 Animating path data 8.3 Path data paths-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 paths-dist 9 Basic Shapes shapes 9.1 Introduction shapes-intro 9.2 The 'rect' element shapes-rect 9.3 The 'circle' element shapes-circle 9.4 The 'ellipse' element shapes-ellipse 9.5 The 'line' element shapes-line 9.6 The 'polyline' element shapes-polyline 9.7 The 'polygon' element shapes-polygon 9.7.1 The grammar for points specifications in 'polyline' and 'polygon' elements 10 Text text 10.1 Introduction text-intro 10.2 Characters and their corresponding glyphs text-charglyph 10.3 Fonts, font tables and baselines text-font 10.4 The 'text' element text-text 10.5 The 'tspan' element text-tspan 10.6 Text layout text-layout 10.6.1 Text layout introduction 10.6.2 Relationship with bidirectionality 10.7 Text rendering order text-render 10.8 Alignment properties text-align 10.8.1 Text alignment properties 10.9 Font selection properties text-fonts 10.10 White space handling text-ws 10.11 Text in an area text-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 text-edit 10.12.1 The editable attribute 10.13 Text selection and clipboard operations text-tselect 11 Painting: Filling, Stroking, Colors and Paint Servers paint 11.1 Introduction paint-intro 11.2 Specifying paint 11.3 Fill Properties paint-fill 11.4 Stroke Properties paint-stroke 11.5 Non-Scaling Stroke paint-nsstroke 11.6 Simple alpha compositing paint-alpha 11.6.1 Compositing the currentColor value 11.7 The 'viewport-fill' Property paint-vfill 11.8 The 'viewport-fill-opacity' Property paint-vfillo 11.9 Controlling visibility and rendering paint-visi 11.10 Rendering hints paint-render 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.11 Inheritance of painting properties paint-inherit 11.12 Object and group opacity: the 'opacity' property paint-opacity 11.13 Color paint-color 11.13.1 Syntax for color values 11.13.2 HTML Color keywords 11.14 Other types of Paint paint-other 11.14.1 System Paint Servers 11.14.2 The solidColor Element 11.14.3 The SVG 'color' property 11.15 Paint Servers paint-server 11.16 Gradients paint-grad 11.16.1 Linear gradients 11.16.2 Radial gradients 11.16.3 The 'stop' element, defining gradient stops 12 Multimedia media 12.1 Media elements media-elem 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.2 The 'audio' element media-audio 12.3 The 'video' element media-video 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 media-anim 12.5 The audio-level property media-alevel 12.6 Attributes for run-time synchronization media-synch 12.7 The 'initialVisibility' attribute media-ivis 13 Interactivity interact 13.1 Introduction interact-intro 13.2 Complete list of supported events interact-events 13.3 User interface events interact-ui 13.4 Pointer events interact-pointer 13.5 Text events interact-text 13.6 Key events interact-key 13.7 Event Dispatching interact-disp 13.8 Processing order for user interface events interact-order 13.9 The 'pointer-events' property interact-pevt 13.10 Magnification and panning interact-zoom 13.11 Element focus interact-focus 13.11.1 The focusable attribute 13.12 Navigation interact-nav 13.12.1 Navigation behavior 13.12.2 Specifying navigation 13.12.3 Specifying Focus Highlighting 13.12.4 Obtaining and listening to focus programmatically 14 Linking linking 14.1 References linking-refs 14.1.1 Overview 14.1.2 IRIs and URIs 14.1.3 Syntactic forms: XMLRI and funcXMLRI 14.1.4 Reference Restrictions 14.1.5 IRI reference attributes 14.1.6 Externally referenced documents 14.2 Links out of SVG content: the 'a' element linking-a 14.3 Linking into SVG content: IRI fragments and SVG views linking-frag 14.3.1 Introduction: IRI fragments and SVG views 14.3.2 SVG fragment identifiers 15 Scripting script 15.1 Specifying the scripting language script-lang 15.1.1 Specifying the default scripting language 15.1.2 Local declaration of a scripting language 15.2 The 'script' elementscript-element 15.3 XML Events script-xmlev 15.4 The listener element script-listener 15.5 The handler element script-handler 15.5.1 Parameters to handler elements 15.6 Event handling script-handle 15.7 Processing inline executable content script-inline 16 Animation animate 16.1 Introduction animate-intro 16.2 Animation elements animate-elem 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 Paced animation and complex types 16.2.7 Attributes to control the timing of the animation 16.2.8 Attributes that define animation values over time 16.2.9 Attributes that control whether animations are additive 16.2.10 Inheritance 16.2.11 The 'animate' element 16.2.12 The 'set' element 16.2.13 The 'animateMotion' element 16.2.14 The 'mpath' element 16.2.15 The 'animateColor' element 16.2.16 The 'animateTransform' element 16.2.17 Attributes and properties that can be animated 16.3 Animation using the SVG DOM animate-dom 16.4 Animation and the Bounding Box animate-bbox 17 Fonts fonts 17.1 Introduction fonts-intro 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 fonts-elem 17.4 The 'glyph' element fonts-glyph 17.5 The 'missing-glyph' element fonts-mglyph 17.6 Glyph selection rules fonts-gsel 17.7 The 'hkern' element fonts-kern 17.8 Describing a font fonts-desc 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 metadata 18.1 Introduction metadata-intro 18.2 The 'metadata' element metadata-elem 18.3 An example metadata-example 19 Extensibility extend 19.1 Foreign namespaces and private data extend-namespace 19.2 Embedding foreign object types extend-foreign 19.2.1 The 'foreignObject' element 19.3 An example extend-example Appendix A The SVG Micro DOM (uDOM) udom A.1 Introduction udom- A.2 Overview of the SVG uDOM udom-over 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 Java package naming A.3 Conforming to the SVG uDOM udom-conform A.3.1 Attribute/Property Normalization A.3.2 Text Content Access A.4 Module: dom udom-dom A.4.1 DOMException A.4.2 Node A.4.3 Element A.4.4 Document A.4.5 DOMImplementation A.5 Module: events udom-event A.5.1 EventTarget A.5.2 EventListener A.5.3 Event A.5.4 MouseEvent A.5.5 WheelEvent A.5.6 TextEvent A.5.7 KeyboardEvent A.5.8 TimeEvent A.5.9 UIEvent A.5.10 ProgressEvent A.5.11 ConnectionEvent A.6 Module: smil udom-smil A.6.1 ElementTimeControl A.6.2 TimeEvent A.7 Module: global udom-glob A.7.1 Global A.7.2 GlobalException A.7.3 Connection A.7.4 Timer A.8 Module: svg udom-svg A.8.1 SVGException A.8.2 SVGDocument A.8.3 SVGElementInstance A.8.4 SVGSVGElement A.8.5 SVGRGBColor A.8.6 SVGRect A.8.7 SVGPoint A.8.8 SVGPath A.8.9 SVGMatrix A.8.10 SVGLocatable A.8.11 SVGLocatableElement A.8.12 TraitAccess A.8.13 Additional accessing rules A.8.14 ElementTraversal A.8.15 SVGElement A.8.16 SVGTimedElement A.8.17 SVGVisualMediaElement A.8.18 EventListenerInitializer2 A.8.19 SVGGlobal A.8.20 AsyncStatusCallback A.8.21 AsyncURLStatus Appendix B IDL Definitions Appendix C Implementation Requirements imp C.1 Introduction imp-intro C.2 Unsupported elements, attributes, properties, attribute values and property values imp-unsup C.3 Error processing imp-error C.4 Namespace, version, baseProfile, requiredFeatures and requiredExtensions imp-nsetc C.5 Clamping of Color and Opacity Values imp-clamp C.6 'path' element implementation notes imp-path C.7 Text selection implementation notes imp-text C.8 Printing implementation notes imp-print Appendix D Conformance Criteria conf D.1 Introduction conf-intro D.2 Terminology conf-term D.3 SVG Content Conformance conf-content 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 conf-writer D.4.1 Conforming SVG Generators D.4.2 Conforming SVG Authoring Tools D.4.3 Conforming SVG Servers D.5 Conforming SVG Readers conf-reader D.5.1 Conforming SVG Interpreters D.5.2 Conforming SVG Viewers D.6 Extension Conformance Requirements conf-extend D.7 Non-XML Encoding Conformance Requirements conf-nonxml Appendix E Conformance to QA Framework Specification Guidelines E.1 Introduction E.2 Checklist table E.3 List of deprecated features Appendix F Accessibility Supportaccess F.1 WAI Accessibility Guidelines F.2 SVG Content Accessibility Guidelines access-content F.3 SVG User Agent Accessibility Guidelines access-ua Appendix G Internationalization Supporti18n G.1 Introduction i18n-intro G.2 Internationalization and SVG i18n-svg G.3 SVG Internationalization Guidelines i18n-guide Appendix H JPEG Supportjpeg H.1 Introduction jpeg-intro H.2 Required Support jpeg-required 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 for SVG O.1 Module dom O.2 Module events O.3 Module smil O.4 Module global O.5 Module svg Appendix P Java Language Binding for SVG P.1 Package org.w3c.dom P.2 Package org.w3c.dom.events P.3 Package org.w3c.dom.smil P.4 Package org.w3c.global P.5 Package org.w3c.svg Appendix Q Perl Language Binding for SVG Q.1 Module dom Q.2 Module events Q.3 Module smil Q.4 Module global Q.5 Module svg Appendix R Python Language Binding for SVG R.1 Module dom R.2 Module events R.3 Module smil R.4 Module global 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