W3C

Mobile SVG Profiles: SVG Tiny and SVG Basic

W3C Working Draft 15 February 2002

This version:
http://www.w3.org/TR/2002/WD-SVGMobile-20020215/
Latest version:
http://www.w3.org/TR/SVGMobile/
Previous version:
http://www.w3.org/TR/2002/WD-SVGMobile-20020108/
Editor:
Tolga Capin (Nokia) <Tolga.Capin@nokia.com>

Abstract

This document defines two mobile profiles of SVG 1.1. The first profile, SVG Tiny, is defined to be suitable for cellphones; the second profile, SVG Basic, is suitable for PDAs.

Status of this document

This document is the last call Working Draft of the two mobile profiles of SVG 1.1 - SVG Basic and SVG Tiny. Last call feedback will close at 1159Z on 15 March 2002.

It is possible to use this document as a basis for experimental implementation. However, no guarantee is given of stability, and the SVG Working Group will not use the existence of implementations conforming to this draft as a reason for not changing future drafts.

This document has been produced by the W3C SVG Working Group as part of the Graphics Activity within the W3C Document Formats Domain. The goals of the W3C SVG Working Group are discussed in the W3C SVG Charter (W3C members only). The W3C SVG Working Group has maintained a public Web page http://www.w3.org/Graphics/SVG/ which contains further background information. The authors of this document are the SVG Working Group members.

We explicitly invite comments on this document. Please send them to svg-comments@w3.org. Public discussion of issues related to vector graphics on the Web and SVG in particular takes place on the public mailing list of the SVG Working Group (list archives). To subscribe send an email to www-svg-request@w3.org with the word subscribe in the subject line.

A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR/. W3C publications may be updated, replaced, or obsoleted by other documents at any time. In particular it is inappropriate to use W3C Working Drafts as reference material or to cite them as other than work in progress.

Table of contents



1. Introduction

It has been established by industry demand, overwhelming support in the SVG working group and requests from the SVG developer community that some form of SVG suited to displaying vector graphics on small devices is required. Moreover, the mission statement of SVG 1.0 specifically addresses small devices as a target area for vector graphics display. In order to meet these demands the SVG Working Group has committed to a concerted effort to create a profile specification that addresses mobile devices.

A single such profile is not sufficient to deal with the variety of mobile devices, because each mobile device has different characteristics in terms of CPU speed, memory size, and color support. To address the range of different device families, two profiles are defined. The first low-level profile, SVG Tiny (SVGT) is suitable for highly restricted mobile devices; while the second profile, SVG Basic (SVGB) is targeted for higher level mobile devices.

Because of the low memory, low CPU power and limited display of mobile devices, Mobile SVG profiles introduce constraints on content, attribute types, properties, and user agent behaviour. This section describes these constraints and design rationale behind them.

  1. Two profiles are designed to allow SVG to render on mobile devices with limited memory, CPU power, and bandwidth.
  2. Mobile SVG profiles attempt to maximize compatibility with SVG 1.0 to display existing content.
  3. A true subset of the SVG 1.0 imaging model is maintained.
  4. Mobile SVG is designed to facilitate export from authoring tools.
  5. Mobile SVG is designed so that SVG 1.1 can be transcoded into SVGB and SVGT preserving as much scalability as possible.

2. Overview of Mobile SVG

SVGT and SVGB consist of the following SVG 1.1 modules. For each module, a given profile might contain the Full version, the Basic version, the Tiny version, or no version of that module. For ease of use, the relevant elements in each module are given; in modules other than Full, not all attributes may be supported and there may be restrictions on attribute values. For details, see the module definitions in the SVG 1.1 specification

SVG Tiny

Structure
Full Core Attribute Module
Tiny Structure Module
svg, g, defs, desc, title, metadata, use
Style
Full Style Module
style
Painting
Tiny Paint Attribute Module
Tiny Graphics Attribute Module
Hyperlinking
Full Hyperlinking Module
a
Full XLink Attribute Module
Conditional processing
Full Conditional Processing Module
switch
Shapes
Full Shape Module
path, rect, circle, line, ellipse, polyline, polygon
Images
Full Image Module
image
Text
Tiny Text Module
text
Color
Tiny Color Module
solidColor
Fonts
Tiny Font Module
font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src, font-face-name, definition-src
Interactivity
Full Document Events Attribute Module
Full Graphical Element Events Attribute Module
Full Animation Events Attribute Module
Scripting
Full Scripting Module
script
Views
Full View Module
view
Animation
Full Animation Module
animate, set, animateMotion, animateTransform, animateColor, mpath
Extensibility
Full Extensibility Module
foreignObject

SVG Basic

Structure
Full Core Attribute Module
Full Structure Module
svg,g,defs,desc,title,metadata,symbol,use
Full Viewport Attribute Module
Style
Full Style Module
style
Painting
Full Paint Attribute Module
Full Opacity Attribute Module
Full Graphics Attribute Module
Hyperlinking
Full Hyperlinking Module
a
Full XLink Attribute Module
Full ExternalResourcesRequired Attribute Module
Conditional Processing
Full Conditional Processing Module
switch
Shapes
Full Shape Module
path, rect, circle, line, ellipse, polyline, polygon
Images
Full Image Module
image
Text
Basic Text Module
text, tspan, tref, textPath, div, span, region, p, br
Color
Full Color Module
solidColor, color-profile
Gradients
Full Gradient Module
linearGradient, radialGradient, stop
Patterns
Full Pattern Module
pattern
Clipping
Basic Clip Module
clipPath
Masking
Full Mask Module
mask
Fonts
Full Font Module
font, font-face, glyph, missing-glyph, hkern, vkern, font-face-src, font-face-uri, font-face-format, font-face-name, definition-src
Interactivity
Full Document Events Attribute Module
Full Graphical Element Events Attribute Module
Full Animation Events Attribute Module
Scripting
Full Scripting Module
script
Cursors
Full Cursor Module
cursor
Views
Full View Module
view
Filters
Basic Filter Module
filter, feBlend, feColorMatrix, feComponentTransfer, feComposite, feFlood, feGaussianBlur, feImage, feMerge, feMergeNode, feOffset, feTile, feFuncR, feFuncG, feFuncB, feFuncA
Animation
Full Animation Module
animate, set, animateMotion, animateTransform, animateColor, mpath
Extensibility
Full Extensibility Module
foreignObject

3. Data Types

Data Type Description
Number SVGT and SVGB support fixed point numbers, thus all numbers must be limited in range between -32,767.9999 to +32,767.9999 or the scientific notation equivalent.
Length SVGT only supports user units (i.e., CSS units are not supported), with the one exception that the 'width' and 'height' attributes on the outermost 'svg' element can specify values in any of the following CSS units: in, cm, mm, pt, pc, and %. SVGB supports lengths in user coordinate space and in CSS units.
Coordinate SVGT and SVGB support the coordinate data type, represented with a <length> value.
List of XXX (where XXX represents a value of some type): SVGT and SVGB support the list specification.
Angle SVGT only supports angles if specified with no CSS unit identifiers (which means all angles are in degrees). SVGB supports angles with CSS unit identifiers.
Color SVGT and SVGB support <color> in the CSS2-compatible specification for a color in the sRGB color space, and system colors. Additionally, SVGB and SVGT support 16 original color keywords from XHTML. SVGB also allows optional support of ICC color profiles.
Paint SVGB supports paint specification for fill and stroke operations, as well as linear and radial gradients. SVGT does not support the more general notion of paint specification and thus only supports solid color fills and strokes.
Percentage SVGB supports percentages. SVGT does not support percentage values except for the 'width' and 'height' attributes on the outermost 'svg' element.
Transform List SVGB and SVGT support transform lists.
URI SVGB and SVGT support the URI datatype.
Frequency SVGB and SVGT do not support frequency values.
Time SVGB and SVGT support time values, with unit identifiers (ms, s).

4. Document Structure

Mobile SVG Document Fragment

SVGB and SVGT content can be in the form of stand-alone SVG Documents or document fragments embedded within a parent XML document. The following is an example of an SVG document fragment embedded within an XHTML Basic document:

  
  <?xml version="1.0"?>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
        "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
  <html xmlns = "http://www.w3.org/1999/xhtml"
        xmlns:svg="http://www.w3.org/2000/svg">
    <head>
      <title>
        An example XHTML Basic document
      </title>
      <link type="text/css" rel="stylesheet" href="mystyle.css" />
    </head>
    <body>
      <svg:svg version="1.1" baseProfile="tiny" width="4cm" height="8cm" 
                    viewBox="0 0 4 8">
        <svg:ellipse cx="2" cy="4" rx="2" ry="1" />
      </svg:svg>
    </body>
  </html>
     

The 'title', 'desc', 'metadata' Elements

SVGB and SVGT support the 'title', 'desc' and 'metadata' elements as defined in SVG 1.1.

The 'svg' Element

Attributes of 'svg' elements that appear in the middle of SVGT content cannot be specified in CSS unit identifiers.

The 'baseProfile' attribute on the outermost 'svg' element must have the value "tiny" for SVG Tiny content, and "basic" for SVG Basic content. The 'baseProfile' attribute on nested child 'svg' elements is ignored. The SVG 1.1 specification states that the 'version' attribute of the outermost 'svg' element in SVG 1.1 content must have the value "1.1".

References and the 'defs' Element

For SVGT, all referenced objects, except hyperlinking through the 'a' element, must be internal (using the 'data:' URL scheme, and base64 encoding). SVGB does not put extra limitations on external references as defined by SVG 1.1.

In addition to SVGT images embedded using the data: URL scheme, to avoid duplicated base-64-encoded versions of images stored locally, SVGT also allows optional support of local access to images. This is made optional because there is not necessarily a filesystem and thus the URL scheme to access local images is not defined.

The 'symbol' Element

SVGT does not support symbols.

The 'use' Element

Note that, in SVG1.1, animations on a referenced element will cause the instances to be animated. SVGB and SVGT also support this feature.

The 'image' Element

SVGB and SVGT require support of the JPEG, PNG and SVG formats on the image element.

The 'switch' Element

The following feature set is used:

Need to define what are the allowed feature strings in requiredFeatures

5. Styling

SVGB and SVGT support subsets of SVG 1.1's presentation attributes. SVGB and SVGT allow optional support of CSS Mobile Profile 1.0.

SVGB and SVGT introduce constraints on style properties. Allowed values for style properties are listed in Appendix C.

6. Coordinate Systems, Transformations and Units

SVGB and SVGT support SVG 1.1's notion of viewports.

SVGB and SVGT support nesting of transformations. The types of transformations that are allowed are generic transformation matrices, or simple operations such as rotation, scaling, skewing, and translation.

The 'transform' Attribute

SVGB and SVGT support the transform attribute. The following transform definition types are supported:

The 'viewBox' Attribute

SVGB and SVGT fully support the 'viewBox' attribute, however with restrictions on preserveAspectRatio attribute values.

The 'preserveAspectRatio' Attribute

SVGB and SVGT support the 'preserveAspectRatio' attribute for adapting the content to terminals with different display aspect ratios.

In SVGT, the <align> parameter can only be either 'none' or 'XMidYMid', the <meetOrSlice> parameter can only be 'meet'.

In SVGB, the values of this parameter can be the same as in SVG 1.1.

Establishing a New Viewport

SVGB and SVGT support establishing a new viewport via additional embedded 'svg' elements.

Units

SVGT supports user units only, except for the 'width' and 'height' attributes on the outermost 'svg' element where CSS units are also supported. SVGB supports both user units and CSS user identifiers.

Object Bounding Box Units

SVGT does not support bounding box unit specification.

7. Shapes

Paths

SVGB and SVGT support all SVG 1.1 path commands, except the elliptical arc curve command ("A"(absolute) and "a"(relative)).

The path element data is animatable, as defined in the SVG 1.1 specification.

Basic Shapes

SVGT and SVGB support the basic shapes (rectangles, circles, ellipses, lines, polylines, and polygons) as defined in SVG1.1.

8. Text

SVGB and SVGT represent text with Unicode characters. Mobile SVG user agents are not required to allow text selection and clipboard operations.

SVGT supports only the 'text' element, and does not support text on a path, 'tspan' and 'tref', and 'altGlyph' elements. SVGT supports the 'rotate' attribute on the 'text' element, but it should be noted that this may cause a slow down of the user agent's rendering speed.

SVGB and SVGT do not support 'altGylph'.

9. Painting: Filling, Stroking and Marker Symbols

SVGB and SVGT support filling and stroking 'path' elements and basic shapes with solid colors.

SVGB supports stroking on text when using outline fonts, but SVGT does not

10. Color

SVGB and SVGT support colors defined by 'color' property in sRGB color space, and color keywords.

Specifying colors using an ICC profile is not supported in SVGT, and as with SVG 1.1, it is optional in SVGB.

11. Gradients and Patterns

SVGB supports solid colors, gradient paints, patterns, and custom paints. SVGT only supports solid color painting.

12. Clipping, Masking and Compositing

SVGB supports clipping, masking and compositing. SVGB does not support additive clipping paths. Also, in SVGB, clipping paths are restricted to rectangles ('rect' elements or references to 'rect' elements through 'use').

SVGT does not support element opacity, fill-opacity, stroke-opacity properties.

13. Filter Effects

SVGB supports a subset of filter effects. SVGT does not support filter effects.

14. Interactivity

SVGB and SVGT support the SVG 1.1 events.

The next version of this document will list which events will be supported in SVGT and SVGB, and describe how to treat the different kind of pointing devices that exist.

15. Linking

SVGB and SVGT support hyperlink activation from SVG content to other Web resources through the 'a' element.

SVGB supports hyperlink into particular views of SVG content. SVGT does not support this feature.

16. Scripting

SVGB and SVGT include all of the language features from SVG 1.1 to support scripting. Scripting is optional in SVGB and SVGT. SVG Tiny does not require a default language that has to be supported by all user agents.

17. Animation

Both SVGB and SVGT support a subset of SVG 1.1's declarative animation features. The language features to support animation through scripting and DOM are available in SVGB and SVGT.

SVGB and SVGT allow implicit targeting of parent element, and targeting elements using 'xlink:href' attribute.

SVGB supports linear, spline, paced and discrete animations. SVGT only supports linear, paced and discrete animations.

18. Fonts

SVGB and SVGT support a subset of SVG fonts where only the 'd' attribute on the 'glyph' and 'missing-glyph' elements is available. Arbitrary SVG within a 'glyph' is not supported.

As with Full SVG 1.1, SVGB supports downloadable fonts using WebFonts facility defined in the "Cascading Style Sheets (CSS) level 2" specification

19. Metadata

Both SVGB and SVGT support embedded metadata, as well as elements and attributes from foreign namespaces included within the SVG content.

20. Extensibility

The SVG renderer is not expected to be able to render content in foreign namespaces, but the foreignObject element allows a subtree in a foreign namespace to be assigned a width and height and passed off to another renderer.


Acknowledgments

References

[CSS Mobile Profile]
CSS Mobile Profile 1.0 Ted Wugofski, Doug Dominiak, Peter Stark, editors, W3C, 24 October 2001 (W3C Candidate Recommendation) See http://www.w3.org/TR/css-mobile
[MOBILE SVG Requirements]
SVG Mobile Requirements Rick Graham, Tolga K. Capin, editors, W3C, 3 August 2001 (Working Draft) See http://www.w3.org/TR/SVGMobileReqs
[SRGB]
Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB. See http://www.iec.ch/nr1899.htm
[SVG 1.0]
Scalable Vector Graphics (SVG) 1.0 Specification, Jon Ferraiolo, editor, W3C, 9 September 2001 (Recommendation). See http://www.w3.org/TR/2001/REC-SVG-20010904/
[SVG 1.1/2.0 Requirements]
SVG 1.1/2.0 Requirements Document, Dean Jackson, editor, W3C, 3 August 2001. See http://www.w3.org/TR/SVG2Reqs
[SVG 1.1]
Scalable Vector Graphics (SVG) Version 1.1 Working Draft, Dean Jackson, editor, W3C, 15 February 2002. See http://www.w3.org/TR/2002/WD-SVG11-20020215/

Author List

The authors of this specification are the members of the W3C SVG Working Group, whose members are listed:

Authors:
  • Ola Andersson, ZoomON AB
  • Phil Armstrong, Corel Corporation
  • Craig Brown, Canon Information Systems Research Australia
  • Mike Bultrowicz, Savage Software
  • Tolga Capin, Nokia
  • Mathias Larsson Carlander, Ericsson
  • Jakob Cederquist, ZoomON AB
  • Lee Cole , Quark
  • Don Cone, Netscape/AOL/TimeWarner
  • Alex Danilo, Canon Information Systems Research Australia
  • Thomas DeWeese, Eastman Kodak
  • Jon Ferraiolo, Adobe Systems
  • Darryl Fuller, Schema Software
  • Jun Fujisawa, Canon
  • Rick Graham, BitFlash
  • Vincent Hardy, Sun Microsystems
  • Takanari Hayama, KDDI Research Labs
  • Lofton Henderson, OASIS
  • Dean Jackson, W3C/CSIRO (W3C Staff Contact)
  • Christophe Jolif, ILOG
  • Lee Klosterman, Hewlett Packard
  • Arei Kobayashi, KDDI Research Labs
  • Thierry Kormann, ILOG
  • Chris Lilley , W3C (Working Group Chair)
  • Philip Mansfield, Schema Software
  • Luc Minnebo, AGFA
  • Suichiro Ono, Sharp
  • Bella Robinson, CSIRO
  • Takeshi Sagara, KDDI Research Labs
  • Rick Yardumian, Canon
  • Charles Ying, Openwave

Appendix A. Element Index

Color code
Element supported fully in a Full Module Yes
Element supported with subsetted functionality in a Basic Module Yes
Element supported with limited functionaliy in a Tiny Module Yes
Element disallowed No

Element SVG Tiny SVG Basic
a Yes Yes
altGlyph No No
altGlyphDef No No
altGlyphItem No No
animate Yes Yes
animateColor Yes Yes
animateMotion Yes Yes
animateTransform Yes Yes
circle Yes Yes
clipPath No Yes
color-profile No Yes
cursor No Yes
definition-src Yes Yes
defs Yes Yes
desc Yes Yes
ellipse Yes Yes
feBlend No Yes
feColorMatrix No Yes
feComponentTransfer No Yes
feComposite No Yes
feConvolveMatrix No No
feDiffuseLighting No No
feDisplacementMap No No
feDistantLight No No
feFlood No Yes
feFuncA No Yes
feFuncB No Yes
feFuncG No Yes
feFuncR No Yes
feGaussianBlur No Yes
feImage No Yes
feMerge No Yes
feMergeNode No Yes
feMorphology No No
feOffset No Yes
fePointLight No No
feSpecularLighting No No
feSpotLight No No
feTile No Yes
feTurbulence No No
filter No Yes
font Yes Yes
font-face Yes Yes
font-face-format No Yes
font-face-name No Yes
font-face-src No Yes
font-face-uri No Yes
foreignObject Yes Yes
g Yes Yes
glyph Yes Yes
glyphRef No Yes
hkern Yes Yes
image Yes Yes
line Yes Yes
linearGradient No Yes
marker No No
mask No Yes
metadata Yes Yes
missing-glyph Yes Yes
mpath Yes Yes
path Yes Yes
pattern No Yes
polygon Yes Yes
polyline Yes Yes
radialGradient No Yes
rect Yes Yes
script Yes Yes
set Yes Yes
solidColor Yes Yes
stop No Yes
style Yes Yes
svg Yes Yes
switch Yes Yes
symbol No Yes
text Yes Yes
textPath No Yes
title Yes Yes
tref No Yes
tspan No Yes
use Yes Yes
view No Yes
vkern Yes Yes

Appendix B. Attribute Index

Attribute SVG Tiny SVG Basic
accent-height %Number %Number;
accumulate (none | sum) (none | sum)
alignment-baseline n/a ( baseline | top | before-edge | text-top | text-before-edge | middle | bottom | after-edge | text-bottom | text-after-edge | ideographic | lower | hanging | mathematical | inherit)
alphabetic %Number; %Number;
amplitude n/a %Number;
arabic-form CDATA CDATA
ascent %Number; %Number;
attributeName CDATA CDATA
attributeType CDATA CDATA
azimuth n/a n/a
baseFrequency n/a n/a
baseline-shift n/a %BaselineShiftValue;
bbox CDATA CDATA
bias n/a n/a
by CDATA CDATA
calcMode (discrete | linear | paced | spline) (discrete | linear | paced | spline)
cap-height %Number; %Number;
class %ClassList; %ClassList;
clip n/a %ClipValue;
clip-path n/a %ClipPathValue;
clip-rule n/a %ClipFillRule;
clipPathUnits n/a (userSpaceOnUse | objectBoundingBox)
color %Color; %Color;
color-interpolation n/a (auto | sRGB | linearRGB | inherit)
color-interpolation-filters n/a (auto | sRGB | linearRGB | inherit)
color-profile n/a CDATA
color-rendering n/a (auto | optimizeSpeed | optimizeQuality | inherit)
contentScriptType %ContentType; %ContentType;
contentStyleType %ContentType; %ContentType;
cursor n/a %CursorValue;
cx %Coordinate; %Coordinate;
cy %Coordinate; %Coordinate;
d (glyph, missing-glyph) %PathData; %PathData;
d (path) %PathData; %PathData;
descent %Number; %Number;
diffuseConstant n/a n/a
direction n/a n/a
display ( inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit ) ( inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit )
divisor n/a n/a
dominant-baseline n/a (auto | use-script | no-change | reset-size | alphabetic | hanging | ideographic | mathematical | central | middle | text-after-edge | text-before-edge | text-top | text-bottom | inherit)
dur CDATA CDATA
dx (text, tspan, tref, altGlyph) n/a n/a
dx (glyphRef, feOffset) n/a n/a
dy (text, tspan, tref, altGlyph) n/a n/a
dy (glyphRef, feOffset) n/a n/a
edgeMode n/a n/a
elevation n/a n/a
enable-background n/a n/a
end CDATA CDATA
exponent n/a %Number;
externalResourcesRequired n/a %Boolean;
fill (animation elements) (remove | freeze) (remove | freeze)
fill (presentation attribute) %Paint; %Paint;
fill-opacity n/a %OpacityValue;
fill-rule %ClipFillRule; %ClipFillRule;
filter n/a %FilterValue;
filterRes n/a %NumberOptionalNumber;
filterUnits n/a (userSpaceOnUse | objectBoundingBox)
flood-color n/a %SVGColor;
flood-opacity n/a %OpacityValue;
font-family (style property) %FontFamilyValue; %FontFamilyValue;
font-family (font-face element) CDATA CDATA
font-size (style property) %FontSizeValue; %FontSizeValue;
font-size (font-face element) CDATA CDATA
font-size-adjust n/a %FontSizeAdjustValue;
font-stretch(style property) n/a (normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit)
font-stretch(font-face element) (normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit) (normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit)
font-style (style property) (normal | italic | oblique | inherit) (normal | italic | oblique | inherit)
font-style(font-face element) CDATA CDATA
font-variant (style property) n/a (normal | small-caps | inherit)
font-variant(font-face element) CDATA CDATA
font-weight(style property) (normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit) (normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit)
font-weight(font-face element) (normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit) (normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit)
format n/a n/a
from CDATA CDATA
fx n/a %Coordinate;
fy n/a %Coordinate;
g1 CDATA CDATA
g2 CDATA CDATA
glyph-name CDATA CDATA
glyph-orientation-horizontal n/a %GlyphOrientationHorizontalValue;
glyph-orientation-vertical n/a %GlyphOrientationVerticalValue;
glyphRef n/a n/a
gradientTransform n/a %TransformList;
gradientUnits n/a (userSpaceOnUse | objectBoundingBox)
hanging %Number; %Number;
height (svg, filter, filter_primitive_attributes, use, pattern, mask) %Length; %Length;
height (rect, foreignObject, image) %Length; %Length;
horiz-adv-x (glyph, missing-glyph) %Number; %Number;
horiz-adv-x (font) %Number; %Number;
horiz-origin-x %Number; %Number;
horiz-origin-y %Number; %Number;
ideographic %Number; %Number;
image-rendering n/a (auto | optimizeSpeed | optimizeQuality | inherit)
in n/a CDATA
in2 n/a CDATA
intercept n/a %Number;
k %Number; %Number;
k1 n/a %Number;
k2 n/a %Number;
k3 n/a %Number;
k4 n/a %Number;
kernelMatrix n/a n/a
kernelUnitLength n/a n/a
kerning n/a %KerningValue;
keyPoints CDATA CDATA
keySplines CDATA CDATA
keyTimes CDATA CDATA
lang %LanguageCodes; %LanguageCodes;
lengthAdjust n/a (spacing|spacingAndGlyphs)
letter-spacing n/a %SpacingValue;
lighting-color n/a n/a
limitingConeAngle n/a n/a
local n/a CDATA
marker-end n/a n/a
marker-mid n/a n/a
marker-start n/a n/a
markerHeight n/a n/a
markerUnits n/a n/a
markerWidth n/a n/a
mask n/a %MaskValue;
maskContentUnits n/a (userSpaceOnUse | objectBoundingBox)
maskUnits n/a (userSpaceOnUse | objectBoundingBox)
mathematical %Number; %Number;
max CDATA CDATA
media %MediaDesc; %MediaDesc;
method n/a n/a
min CDATA CDATA
mode n/a (normal | multiply | screen | darken | lighten)
name CDATA CDATA
numOctaves n/a n/a
offset (stop element) n/a %NumberOrPercentage;
offset (feFuncR, feFuncG, feFuncB, feFuncA elements) n/a %Number;
onabort %Script; %Script;
onactivate %Script; %Script;
onbegin %Script; %Script;
onclick %Script; %Script;
onend %Script; %Script;
onerror %Script; %Script;
onfocusin %Script; %Script;
onfocusout %Script; %Script;
onload %Script; %Script;
onmousedown %Script; %Script;
onmousemove %Script; %Script;
onmouseout %Script; %Script;
onmouseover %Script; %Script;
onmouseup %Script; %Script;
onrepeat %Script; %Script;
onresize %Script; %Script;
onscroll %Script; %Script;
onunload %Script; %Script;
onzoom %Script; %Script;
opacity n/a %OpacityValue;
operator (feMorphology element) n/a n/a
operator (feComposite element) n/a (over | in | out | atop | xor | arithmetic)
order n/a n/a
orient n/a n/a
orientation CDATA CDATA
origin CDATA CDATA
overflow n/a (visible | hidden | scroll | auto | inherit)
overline-position %Number; %Number;
overline-thickness %Number; %Number;
panose-1 CDATA CDATA
path CDATA CDATA
pathLength %Number; %Number;
patternContentUnits (NOT IN SVG1.1) (userSpaceOnUse | objectBoundingBox) (userSpaceOnUse | objectBoundingBox)
patternTransform n/a %TransformList;
patternUnits n/a (userSpaceOnUse | objectBoundingBox)
pointer-events n/a ( visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none | inherit)
points %Points; %Points;
pointsAtX n/a n/a
pointsAtY n/a n/a
pointsAtZ n/a n/a
preserveAlpha n/a n/a
preserveAspectRatio %PreserveAspectRatioSpec; %PreserveAspectRatioSpec;
primitiveUnits n/a (userSpaceOnUse | objectBoundingBox)
r (radialGradient element) n/a %Length;
r (circle element) %Length; %Length;
radius n/a n/a
refX n/a n/a
refY n/a n/a
rendering-intent n/a (auto | perceptual | relative-colorimetric | saturation | absolute-colorimetric)
repeatCount CDATA CDATA
repeatDur CDATA CDATA
requiredExtensions %ExtensionList; %ExtensionList;
restart (always | never | whenNotActive) (always | never | whenNotActive)
result n/a CDATA
rotate (animateMotion element) CDATA CDATA
rotate (text, tspan, tref, altGlyph elements) %Numbers; %Numbers;
rx %Length; %Length;
ry %Length; %Length;
scale n/a n/a
seed n/a n/a
shape-rendering n/a (auto | optimizeSpeed | crispEdges | geometricPrecision | inherit)
slope %Number; %Number;
spacing n/a n/a
specularConstant n/a n/a
specularExponent n/a n/a
spreadMethod n/a (pad | reflect | repeat)
startOffset n/a %Length;
stdDeviation n/a %NumberOptionalNumber;
stemh %Number; %Number;
stemv %Number; %Number;
stitchTiles n/a n/a
stop-color n/a %SVGColor;
stop-opacity n/a %OpacityValue;
strikethrough-position %Number; %Number;
strikethrough-thickness %Number; %Number;
stroke %Paint; %Paint;
stroke-dasharray %StrokeDashArrayValue; %StrokeDashArrayValue;
stroke-dashoffset %StrokeDashOffsetValue; %StrokeDashOffsetValue;
stroke-linecap (butt | round | square | inherit) (butt | round | square | inherit)
stroke-linejoin (miter | round | bevel | inherit) (miter | round | bevel | inherit)
stroke-miterlimit %StrokeMiterLimitValue; %StrokeMiterLimitValue;
stroke-opacity n/a %OpacityValue;
stroke-width %StrokeWidthValue; %StrokeWidthValue;
style %StyleSheet; %StyleSheet;
surfaceScale n/a n/a
systemLanguage %LanguageCodes; %LanguageCodes;
tableValues n/a CDATA
target %LinkTarget; %LinkTarget;
targetX n/a n/a
targetY n/a n/a
text-anchor n/a (start | middle | end | inherit)
text-decoration n/a %TextDecorationValue;
text-rendering n/a (auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit)
textLength n/a n/a
title n/a %Text;
to CDATA CDATA
transform %TransformList; %TransformList;
type (style, script elements) %ContentType; %ContentType;
type (feTurbulence element) n/a n/a
type (feFuncR, feFuncG, feFuncB, feFuncA elements) n/a (identity | table | discrete | linear | gamma)
type (feColorMatrix element) n/a (matrix | saturate | hueRotate | luminanceToAlpha)
type (animateTransform element) (translate | scale | rotate | skewX | skewY) (translate | scale | rotate | skewX | skewY)
u1 CDATA CDATA
u2 CDATA CDATA
underline-position %Number; %Number;
underline-thickness %Number; %Number;
unicode CDATA CDATA
unicode-bidi n/a (normal | embed | bidi-override | inherit)
unicode-range CDATA CDATA
units-per-em %Number; %Number;
v-alphabetic %Number; %Number;
v-hanging %Number; %Number;
v-ideographic %Number; %Number;
v-mathematical %Number; %Number;
values CDATA CDATA
version %Number; %Number;
vert-adv-y %Number; %Number;
vert-origin-x %Number; %Number;
vert-origin-y %Number; %Number;
viewBox %ViewBoxSpec; %ViewBoxSpec;
viewTarget CDATA CDATA
visibility (visible | hidden | inherit) (visible | hidden | inherit)
width ( svg, use, pattern, mask, filter, filter_primitive_attributes) %Length; %Length;
width (image, rect, foreignObject elements) %Length; %Length;
widths CDATA CDATA
word-spacing n/a %SpacingValue;
writing-mode n/a (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit)
x (svg, use, image, rect, pattern, mask, filter, filter_primitive_attributes, cursor, foreignObject) %Coordinate; %Coordinate;
x (text, tspan, tref, altGlyph) %Coordinates; %Coordinates;
x (glyphRef, fePointLight, feSpotLight) n/a n/a
x-height %Number; %Number;
x1 %Coordinate; %Coordinate;
x2 %Coordinate; %Coordinate;
xChannelSelector n/a n/a
xlink:actuate (onLoad) (onLoad)
xlink:actuate (onRequest) (onRequest)
xlink:arcrole %URI; %URI;
xlink:href %URI; %URI;
xlink:href %URI; %URI;
xlink:role %URI; %URI;
xlink:show (embed) (embed)
xlink:show (xlink attributes) (new|replace) (new|replace)
xlink:show (a element) (other) (other)
xlink:title CDATA CDATA
xlink:type (simple) (simple)
xml:base %URI; %URI;
xml:space (default|preserve) (default|preserve)
xml:space (preserve) (preserve)
xmlns CDATA CDATA
xmlns:xlink CDATA CDATA
y (svg, use, image, rect, pattern, mask, filter, filter_primitive_attributes, foreignObject, cursor) %Coordinate; %Coordinate;
y (text, tspan, tref, altGlyph) %Coordinates; %Coordinates;
y (glyphRef, fePointLight, feSpotLight) n/a n/a
y1 %Coordinate; %Coordinate;
y2 %Coordinate; %Coordinate;
yChannelSelector n/a n/a
z n/a n/a
zoomAndPan (disable | magnify) (disable | magnify)

Appendix C. Style Property Index

Color code
Property supported fully in a Full Module Yes
Property supported with subsetted functionality in a Basic Module Yes
Property supported with limited functionaliy in a Tiny Module Yes
Property disallowed No

The next version of this specification will contain a table of properties and the constraints on each.

SVG Tiny SVG Basic

Name

Supported Values Animatable Supported Values Animatable
'alignment-baseline' no n/a n/a yes auto | baseline | before-edge | text-before-edge | middle | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit yes
'baseline-shift' no n/a n/a yes baseline | sub | super | <percentage> | <length> | inherit yes (non-additive, 'set' and 'animate' elements only)
'clip' no n/a n/a yes <shape> | auto | inherit yes
'clip-path' no n/a n/a yes <uri> | none | inherit yes
'clip-rule' no n/a n/a yes nonzero | evenodd | inherit yes
'color' yes <color> | inherit yes yes <color> | inherit yes
'color-interpolation' no n/a n/a yes auto | sRGB | linearRGB | inherit yes
'color-interpolation-filters' no n/a n/a yes auto | sRGB | linearRGB | inherit yes
'color-profile' no n/a n/a yes auto | sRGB | <name> | <uri> | inheri yes
'color-rendering' no n/a n/a yes yes
'cursor' no n/a n/a yes [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit yes
'direction' no n/a n/a yes ltr | rtl | inherit no
'display' yes inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit yes yes inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit yes
'dominant-baseline' no n/a n/a yes auto | use-script | no-change | reset-size | alphabetic | hanging | ideographic | mathematical | central | middle | text-after-edge | text-before-edge | text-top | text-bottom | inherit yes
'enable-background' no n/a n/a yes accumulate | new [ <x> <y> <width> <height> ] | inherit no
'fill' yes <paint> (See Specifying paint) yes yes <paint> (See Specifying paint) yes
'fill-opacity' no n/a n/a yes <opacity-value> | inherit yes
'fill-rule' yes nonzero | evenodd | inherit yes yes nonzero | evenodd | inherit yes
'filter' no n/a n/a yes <uri> | none | inherit yes
'flood-color' no n/a n/a yes currentColor |
<color> [icc-color(<name>[,<icccolorvalue>]*)] |
inherit
yes
'flood-opacity' no n/a n/a yes <alphavalue> | inherit yes
'font' [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit yes (non-additive, 'set' and 'animate' elements only) [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit yes
'font-family' yes [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit yes yes [[ <family-name> | <generic-family> ],]* [<family-name> | <generic-family>] | inherit yes
'font-size' yes <absolute-size> | <relative-size> | <length> | <percentage> | inherit yes yes <absolute-size> | <relative-size> | <length> | <percentage> | inherit yes
'font-size-adjust' no n/a n/a yes <number> | none | inherit yes
'font-stretch' no n/a n/a normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit yes
'font-style' yes normal | italic | oblique | inherit yes normal | italic | oblique | inherit yes
'font-variant' no n/a n/a yes normal | small-caps | inherit yes
'font-weight' yes normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit yes yes normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit yes
'glyph-orientation-horizontal' no n/a n/a yes <angle> | inherit
'glyph-orientation-vertical' no n/a n/a yes auto | <angle> | inherit
'image-rendering' no n/a n/a yes auto | optimizeSpeed | optimizeQuality | inherit yes
'kerning' no n/a n/a yes auto | <length> | inherit yes
'letter-spacing' no n/a n/a yes normal | <length> | inherit yes
'lighting-color' no n/a n/a no n/a n/a
'marker' no n/a n/a no n/a n/a
'marker-end'
'marker-mid'
'marker-start'
no n/a n/a no n/a n/a
'mask' no n/a n/a yes <uri> | none | inherit yes
'opacity' no n/a n/a yes <alphavalue> | inherit yes
'overflow' no n/a n/a yes visible | hidden | scroll | auto | inherit yes
'pointer-events' no n/a n/a yes visiblePainted | visibleFill | visibleStroke | visible |
painted | fill | stroke | all | none | inherit
yes
'shape-rendering' no n/a n/a yes auto | optimizeSpeed | crispEdges |
geometricPrecision | inherit
yes
'stop-color' no n/a n/a yes currentColor |
<color> [icc-color(<name>[,<icccolorvalue>]*)] |
inherit
yes
'stop-opacity' no n/a n/a yes <alphavalue> | inherit yes
'stroke' yes <paint> (See Specifying paint) yes yes <paint> (See Specifying paint) yes
'stroke-dasharray' yes none | <dasharray> | inherit yes yes none | <dasharray> | inherit yes
'stroke-dashoffset' yes <length>|inherit yes yes <length> | inherit yes
'stroke-linecap' yes butt | round | square | inherit yes yes butt | round | square | inherit yes
'stroke-linejoin' yes miter | round | bevel | inherit yes yes miter | round | bevel | inherit yes
'stroke-miterlimit' yes <miterlimit> | inherit yes yes <miterlimit> | inherit yes
'stroke-opacity' no n/a n/a yes <opacity-value> | inheri yes
'stroke-width' yes <length> | inherit yes yes <length> | inherit yes
'text-anchor' no n/a n/a yes start | middle | end | inherit yes
'text-decoration' no n/a n/a yes none | [ underline || overline || line-through || blink ] | inherit yes
'text-rendering' no n/a n/a yes auto | optimizeSpeed | optimizeLegibility |
class="full"geometricPrecision | inherit
yes
'unicode-bidi' no n/a no yes normal | embed | bidi-override | inherit no
'visibility' yes visible | hidden | collapse | inherit yes yes visible | hidden | collapse | inherit yes
'word-spacing' no n/a n/a yes normal | <length> | inherit yes
'writing-mode' no n/a n/a yes lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit no