How to make a new SVG 1.1 or 1.2 test

Introduction

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:

  1. Copy the appropriate template
  2. Rename it
  3. CVS add and commit the blank test into the svg directory, to reserve that test number
  4. Add your test material in the appropriate place in the file
  5. Document what the test does and how to pass it
  6. Set the owner, desc and status attributes to your initials, a one line description, and 'created' respectively.
  7. Commit the test
  8. Add the details of the test to the Test Review section on the Wiki
  9. Find a reviewer and bug them to review it
  10. Check (and correct) the reference image, then set the status to imageOwnerReviewed
  11. Bug your reviewer to check the reference image and have them set the status to 'accepted'
  12. Remove the details of the test from the Test Review section on the Wiki
  13. Go to the Test Coverage section on the Wiki and mark off the assertion that your test covers

Templates

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).

Naming conventions

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.

Directory structure

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.

SVG 1.1 testsuite structure

The 1.1 tests are under http://dev.w3.org/SVG/profiles/1.1F2/test/

htmlEmbed
test suite harness using xhtml and the legacy 'embed' element
htmlObject
test suite harness using xhtml and the 'object' element
imagePatches
If Batik does not render a test correctly (eg for animation tests), this directory has a modified svg test that is rendered correctly. Alternatively, three raster images (for tiny, basic and full sizes) that are rendered correctly by some other implementation
images
external images (both raster and vector) used by svg tests
png
correctly rendered reference images, in PNG format, for the tests
resources
external resources, such as fonts, used by svg tests
script
scripts and other files for generating the test suite and associated status reports. See README
status
config files, templates for tests, blank xml files for filling in the results of testing a particular implementation
status/publish
completed xml files with the results of testing a particular implementation. Used to make the implementation report.
svg
The original svg test files. Your new 1.1 test goes here.

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:

SVG 1.2T testsuite structure

The 1.2 Tiny tests are under repository/testsuite/1.2T

archives
archived zip files of particular release versions.
htmlObjectHarness
test suite harness using xhtml and the 'object' element
imagePatches
If Batik does not render a test correctly (eg for animation tests), this directory has a modified svg test that is rendered correctly. Alternatively, three raster images (for tiny, basic and full sizes) that are rendered correctly by some other implementation
images
external images (both raster and vector) used by svg tests
png
correctly rendered reference images, in PNG format, for the tests
script
scripts and other files for generating the test suite and assocuiated status reports
status
config files, templates for tests, blank xml files for filling in the results of testing a particular implementation
status/publish
completed xml files with the results of testing a particular implementation. Used to make the implementation report.
svg
The original svg test files. Your new 1.2T test goes here.
svggen
Generated svg files for publication, made from the original test files by stripping out the test documentation.
svgHarness
test suite harness using the svg 1.2T animation element

Adding your test material

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.

Test instructions

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.

Reviewing tests

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

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 reviewer attribute

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 status attribute

The values of the status attribute and their meanings are:

empty
An empty test has been created for the test. A copy of the template has been checked into CVS, to reserve a particular number.
created
A preliminary version of the test has been created. SVG has been added to the test, and the SVGTestCase element has been filled in to explain how to run the test. Send mail to the reviewer, asking for review. Its helpful to note oher any passing implementations, and also note whether you plan to create an image patch.
reviewed
The test has been reviewed by a 2nd working group member, who should mail the owner regarding any changes that are needed.
imageCreated
A reference image for the test has been made and checked into CVS. Normally you should not be using this particular value because the image is generated automatically.
imageOwnerReviewed
Use this state once either a) you as test owner agree that the automatically generated reference image is correct, or b) if an image patch is needed, this value indicates that the image patch has been created and checked into the imagePatches directory and that you agree the patch gives the correct result. This state indicates that the original reviewer
accepted
The reference image has been reviewed by a second working group member. The test is done. At this point, add the test name to the list of approved tests. For the SVG 1.1 test suite, these files are tiny-files.txt, basic-files.txt and full-files.txt

The approved attribute

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.

The issue attribute

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"

Updating the Test Review Wiki

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:

  1. Navigate to the Test Review page.
  2. Click the "Edit (Text)" link that is near the top left of the page
  3. On a single line add the following
  4. "||" [Test Name] "||" [Test Owner] "||" [Test Reviewer (if any)] "||"
  5. Click the "Save Changes" button that is near the top left of the page

Updating the Test Coverage Wiki

Once the test is completed it needs to be marked off on the Test Coverage wiki report.

SVGT 1.2 Test Coverage 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 .

Marking a test off

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:

  1. Navigate to the section in the Test Coverage report that the test belongs to
  2. Click the "Edit (Text)" link that is near the top left of the page
  3. If the assertion that the test covers has a "#" next to it, remove it
  4. Add a "" symbol next to the assertion that the test covers
  5. Add a "-" with the test name underneath the assertion
  6. Click the "Save Changes" button that is near the top left of the page

SVG 1.1 to 1.2T conversions

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.

Appendix - SVG 1.1 chapter and section names

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

Appendix - SVG 1.2 Tiny chapter and section names

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

Scott Hayman and Chris Lilley
$Id: SVGTestSuite-howto.html,v 1.18 2010-12-08 09:24:43 edahlstr Exp $