W3C

Mobile SVG Profiles: SVG Tiny and SVG Basic, Version 1.2

W3C Working Draft 29th June 2004

This version:
http://www.w3.org/TR/2004/WD-SVGMobile12-20040629/
Previous version:
http://www.w3.org/TR/2004/WD-SVGMobile12-20040325/
Latest SVG Mobile 1.2 version:
http://www.w3.org/TR/SVGMobile12/
Latest SVG Mobile Recommendation:
http://www.w3.org/TR/SVGMobile/
Editors:
Ola Andersson (ZOOMON) <ola.andersson@zoomon.com>
Tolga Capin (Nokia) <Tolga.Capin@nokia.com>
Vincent Hardy (Sun Microsystems, Inc.) <vincent.hardy@sun.com>
Authors:
See author list

Abstract

This document defines a mobile profiles of SVG 1.2. The profile is called SVG Tiny 1.2 and is defined to be suitable for cellphones.

Status of this document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This document is the third public working draft of Version 1.2 of the SVG Mobile Profile.

This document has been produced by the W3C SVG Working Group as part of the W3C Graphics Activity within the Interaction Domain.

We explicitly invite comments on this specification. Please send them to www-svg@w3.org: the public email list for issues related to vector graphics on the Web. This list is archived and acceptance of this archiving policy is requested automatically upon first post. To subscribe to this list send an email to www-svg-request@w3.org with the word subscribe in the subject line.

The latest information regarding patent disclosures related to this document is available on the Web. The linked Patent Practice was in effect when developing this document.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

Table of contents

Sections highlighted in blue contains new information relevant to SVG Mobile 1.2. 

1. Introduction

Reading Instructions:
This is the thid draft of this specification. To facilitate for the reader the following color codes have been used to highlight relevant sections:
-Text in a blue box (like this one) is used to inform the reader about open/unresolved issues and other relevant information.
-Text in light blue boxes describes new features in SVGT1.2.

Note that all the appendixes are up to date and contains new 1.2 information.

IMPORTANT NOTE:
SVG Mobile 1.1 defined two profiles: SVG Tiny and and SVG Basic. The SVG Mobile 1.2 specification only defines one profile: SVG Tiny 1.2, as explained below. The SVG Working Group invites comments on this decision.

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. The SVG Mobile 1.1 specification addressed that requirement and defined two profiles to deal with the variety of mobile devices having different characteristics in terms of CPU speed, memory size, and color support. The SVG Mobile 1.1 specification defiles SVG Tiny (SVGT) 1.1, which is suitable for highly restricted mobile devices; it also defines a second profile, SVG Basic (SVGB) 1.1, which is targeted for higher level mobile devices.

The SVG 1.2 specification adds features requested by SVG authors, implementors and users. The SVG Mobile 1.2 specification addresses requirement made on the mobile profiles. Because there have only be requests to add features to the SVG Tiny profile, this specification defines a new profile for SVG Tiny, SVG Tiny 1.2.

2. Mobile SVG 1.2 Document Type

There is a single SVG 1.2 Mobile document type called SVG Tiny 1.2 (SVGT 1.2).

SVGT 1.2 consist of the following SVG 1.2 modules. For each module, a given profile might contain the Full version, the subsetted Basic 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.2 specification.

SVG Tiny

SPEC ISSUE:
This paragraph makes references to the SVG 1.1 specification. Before publication, it must be fixed to reference the SVG 1.2 specification. This is pending the first version of the SVG 1.2 specification that includes the SVG 1.1 features and the SVG 1.2 additions.

Structure
Core Attribute Module
Basic Structure Module
defs, desc, g, metadata, svg, title, use
Painting
Basic Paint Attribute Module
Basic Graphics Attribute Module
Hyperlinking
Hyperlinking
a
XLink Attribute Module
Conditional Processing
Conditional Processing Module
switch
Shapes
Shape Module
circle, ellipse, line, path, polygon, polyline, rect
Images
Image Module
image
Text
Basic Text Module
text
Fonts
Basic Font Module
font, font-face, font-face-name, font-face-src, glyph, hkern, missing-glyph
Interactivity
Document Events Attribute Module
Only onresize, onscroll, onzoom
Graphical Element Events Attribute Module
Animation Events Attribute Module
Text events will be added
Animation
Animation Module
animate, animateColor, animateMotion, animateTransform, mpath, set
Extensibility
Extensibility Module
foreignObject

3. Data Types

Data Type Description
Number SVGT supports 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 %. 
Coordinate SVGT supports the coordinate data type, represented with a <length> value.
List of XXX (where XXX represents a value of some type): SVGT supports the list specification.
Angle SVGT only supports angles if specified with no CSS unit identifiers (which means all angles are in degrees). 
Color SVGT supports<color> in the CSS2-compatible specification for a color in the sRGB color space, and system colors. Additionally, SVGT supports the 16 original color keywords from XHTML, and do not support X11 colors. 
Paint SVGT supports paint specification for fill and stroke operations, as well as linear and radial gradients. 
Percentage SVGT does not support percentage values except for the 'width' and 'height' attributes on the outermost 'svg' element.
Transform List SVGT supports transform lists.
URI SVGT supports the URI datatype.
Frequency SVGT do not support frequency values.
Time SVGT support time values, with unit identifiers (ms, s).

4. Document Structure

Mobile SVG Document Fragment

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 1.1 document:

  
<?xml version="1.0" standalone="yes"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg">
<head>
<title xml:lang="en">Sample XHTML + SVG document</title>
</head>
<body>
<svg:svg width="4cm" height="8cm" version="1.2" baseProfile="tiny" >
<svg:ellipse cx="2" cy="4" rx="2" ry="1" />
</svg:svg>
</body>
</html>

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

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

The 'svg' Element

SVG Tiny content cannot have nested child 'svg' elements.

For SVG Tiny content, the 'baseProfile' attribute on the outermost 'svg' element must have the value "tiny". The SVG 1.2 specification states that the 'version' attribute of the outermost 'svg' element in SVG 1.2 content must have the value "1.2".

References and the 'defs' Element

For SVGT, all referenced objects, except on the 'image', 'audio', 'video' and 'a' elements, must be internal (using the 'data:' URL scheme, and base64 encoding).

The 'symbol' Element

SVGT does not support symbols.

The 'use' Element

Note that, in SVG 1.2, animations on a referenced element will cause the instances to be animated. SVGT also support this feature.

The 'image' Element

SVGT requires support of the JPEG and PNG formats on the image element.

The 'switch' Element

SVGT supports the switch element, to determine which SVG 1.2 features are supported by the user agent.

The following feature strings are allowed for SVGT:

SVG Tiny 1.2 will also support a feature string to switch on the user agent's support for transformed video. This string will be included in the next draft.

SVG Tiny 1.2 will also support feature strings to allow switching on audio and video formats, but the feature strings have not been defined yet.

Multiple Pages

SVGT 1.2 supports the page and pageSet elements as defined in SVG 1.2. SVGT 1.2 puts the restriction on the preserveAspectRatio for <page> that it should be the same as that for the outermost <svg> in SVGT 1.1.

Streaming

SVGT 1.2 supports the timelineBegin and streamedContents attributes as defined in SVG 1.2

Progressive Rendering

SVGT 1.2 supports the externalResourcesRequired attribute to enable progressive rendering, as defined in SVG 1.2.

The 'audio' Element

SVGT 1.2 supports the audio element as defined in SVG 1.2. SVGT 1.2 allows different audio formats but does not mandate any particular audio format.

The 'video' Element

SVGT 1.2 supports the video element as defined in SVG 1.2. SVGT 1.2 allows different video formats but will not mandate any particular video format.
Proper rendering requires video to be subject to transformation just like any other graphics. If an implementation can only support non-transformed video, then it should show the video only if the result matches what the file specifies, i.e. only show the video if the result would be correct according to the author's intent, which means only show if the only active transformations is a translation.

A feature string will allow content to switch to an alternate rendering if the user agent does not support transformed video.

The appropriate test attributes for particular audio and video codecs needs to be defined.

5. Styling

SVGT support subsets of SVG 1.2's presentation attributes.

SVGT does not support styling with CSS.

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

6. Coordinate Systems, Transformations and Units

SVGT supports SVG 1.2's notion of viewports.

SVGT supports 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

SVGT supports the transform attribute. The following transform definition types are supported:

SPEC ISSUE: There are pending discussions on ref(origUserSpace, <x>, <y>

The 'viewBox' Attribute

SVGT fully supports the 'viewBox' attribute. SVGT has restrictions on allowed preserveAspectRatio attribute values (see below).

The 'preserveAspectRatio' Attribute

SVGT supports the 'preserveAspectRatio' attribute for adapting the content to devices with different display aspect ratios.

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

Establishing a New Viewport

SVGT does not allow nested 'svg' elements.

Units

SVGT only supports user units, with two exceptions:

  1. CSS units are supported on the 'width' and 'height' attributes of the outermost 'svg' element.
  2. object bounding box units are supported on 'linearGradient' and on 'radialGradient' when the 'gradientUnit' attribute is set to 'objectBoundingBox'.

7. Shapes

Paths

SVGT support all SVG 1.2 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 supports the basic shapes (rectangles, circles, ellipses, lines, polylines, and polygons) as defined in SVG 1.2.

8. Text

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

SVGT does not support text on a path, 'tspan' and 'tref' 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, and rotation may not be supported with system fonts.

SVGT 1.2 enables a block of text to be rendered inside of a rectangle, while automatically wrapping the text into lines using the 'flowText' element.

SVGT 1.2 shall support the following elements, with the listed restrictions, as specified in SVG 1.2:

9. Painting: Filling, Stroking and Marker Symbols

SVGT support filling and stroking 'path' elements and basic shapes with solid colors, linear or radial gradients (see Gradients and Patterns for a description of the subset supported by SVGT).

SVGT supports fill-opacity, stroke-opacity, background-fill-opacity and stop-opacity.

SVGT 1.2 supports the non-scaling stroke as defined in SVG 1.2.

SVGT 1.2 adds support for the following rendering properties: shape-rendering, text-rendering, and image-rendering. color-rendering was already supported in SVGT 1.2.

SVGT must support stroking on text when using SVG Fonts, should support stroking on text when using other outline fonts, and must not support stroking on text when using raster fonts.

SVGT 1.2 supports the background-fill property as defined in SVG 1.2.

SVGT 1.2 supports the a subset of the 'vector-effect' property defined in SVG 1.2. Only the 'default' and 'non-scaling-stroke' values are supported.

10. Color

SVGT supports <color> in the CSS2-compatible specification for a color in the sRGB color space, and system colors. Additionally, SVGT supports the 16 original color keywords from XHTML, and do not support X11 colors.

Specifying colors using an ICC profile is not supported in SVGT.

11. Gradients and Patterns

SVGT supports a subset of the linearGradient and radialGradient elements. The following is not supported:
-No support for gradientTransform
-No support for spreadMethod (i.e., pad only)
-No support for xlink:href.
-No support for (fx,fy) on radial gradients.
-No percentages on gradient stop offset values.

SVGT 1.2 supports the gradientUnits attribute.

SVGT1.2 supports the solidColor element as defined in SVG 1.2.

12. Clipping, Masking and Compositing

SVGT does not support clipping, masking or compositing.

13. Filter Effects

SVGT does not support filter effects.

14. Interactivity

SVGT supports the SVG 1.2 events. SVGT allows interactivity with declarative animation and with the integration of XMLEvents, as described in SVG 1.2.

SVGT 1.2 supports the focusable property, as defined in SVG 1.2.

15. Linking

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

SVGT supports linking into specific views of the SVG document by supporting a subset of the svgView fragment identifier as defined in SVG 1.1, where only the transform specification is supported.

16. Scripting

SVG Tiny 1.2 supports scripting through the integration of XML Events, as defined in SVG 1.2.

17. Animation

SVGT supports the full set of SVG 1.2's declarative animation features:

  1. SVGT allows the language features to support animation through scripting and UDOM are available in SVGT.
  2. SVGT allow implicit targeting of parent elements, and targeting elements using the 'xlink:href' attribute.
  3. SVGT support linear, spline, paced and discrete animations.

SVGT 1.2 supports the 'snapShotTime' attribute as defined the SVG 1.2

SVGT 1.2 supports the 'prefetch' element as defined in SVG 1.2.

18. Fonts

SVGT supports 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.

In SVGT, an SVG font can be only embedded within the same document that uses the font.

19. Metadata

SVGT supports 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.


Author List

The authors of this specification are the participants of the W3C SVG Working Group.

Acknowledgments

The SVG Working Group would like to acknowledge the great many people outside of the SVG Working Group who help with the process of developing the SVG specifications. These people are too numerous to list individually. They include but are not limited to the early implementers of SVG and Mobile SVG profiles (including viewers, authoring tools, and server-side transcoders), developers of SVG content, people who have contributed on the www-svg@w3.org and svg-developers@yahoogroups.com email lists, other Working Groups at the W3C, and the W3C team. Mobile SVG is truly a cooperative effort between the SVG Working Group, the rest of the W3C, and the public and benefits greatly from the pioneering work of early implementers and content developers, feedback from the public, and help from the W3C team.


References

[CSS Mobile Profile]
CSS Mobile Profile 1.0 , Ted Wugofski, Doug Dominiak, Peter Stark, editors, W3C, 24 October 2001 (W3C Candidate Recommendation) Available at 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). Available at http://www.w3.org/TR/SVGMobileReqs.
[RFC2119]
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels Internet Engineering Task Force, 1997. Available at http://www.ietf.org/rfc/rfc2119.txt.
[SRGB]
Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB , IEC. Available at http://www.iec.ch/nr1899.htm.
[SVG 1.0]
Scalable Vector Graphics (SVG) 1.0 Specification , Jon Ferraiolo, editor, W3C, 4 September 2001 (Recommendation). Available at http://www.w3.org/TR/SVG/.
[SVG 1.1/2.0 Requirements]
SVG 1.1/2.0 Requirements , Dean Jackson, editor, W3C, 3 August 2001. Available at http://www.w3.org/TR/SVG2Reqs/.
[SVG 1.1]
Scalable Vector Graphics (SVG) Version 1.1 Specification , Dean Jackson, editor, W3C, 15 February 2002. Available at http://www.w3.org/TR/SVG11/.
[SVG 1.2]
Scalable Vector Graphics (SVG) Version 1.2 Specification , Dean Jackson, editor, W3C. Available at http://www.w3.org/TR/SVG12/.
[SVG 1.2Reqs]
SVG 1.2/1.2/2.0 Requirements , Dean Jackson, editor, W3C. Available at http://www.w3.org/TR/SVG2Reqs/.

Appendix A. UDOM

SVGT 1.2 will support the UDOM as defined in the SVG 1.2 draft.


Appendix B. Element Index

  Color code
SVG1.2 New Elements Element Name
Elements supported by SVGT1.1 Module Name
Elements supported by SVGT1.2 Section Name in SVG1.2 Doc.
Element SVGT1.2
a Hyperlinking
animate Animation
animateColor Animation
animateMotion Animation
animateTransform Animation
audio Multimedia enhancements
circle Shape
defs Basic Structure
desc Basic Structure
ellipse Shape
flowPara Text Enhancements
flowRegion Text Enhancements
flowText Text Enhancements
font-face Basic Font
font-face-name Basic Font
font-face-src Basic Font
foreignObject Extensibility
g Basic Structure
glyph Basic Font
handler XML Events Integration
hkern Basic Font
image Image
line Shape
linearGradient Tiny Gradient?
metadata Basic Structure
missing-glyph Basic Font
mpath Animation
page Multiple Pages
pageSet Multiple Pages
path Shape
polygon Shape
polyline Shape
prefetch Prefetch?
radialGradient Tiny Gradient?
rect Shape
script Scripting
set Animation
solidColor Solid Color?
stop Tiny Gradient
svg Basic Structure
switch Conditional Processing
text Basic Text
title Basic Structure
use Basic Structure
video Video?
vkern Basic Font

Appendix C. Attributes Index

SPEC ISSUE: TO BE ADDED

Appendix D. SVG Tiny 1.2 Schema

SVG Tiny 1.2 Document Fragments MUST conform to the SVG Tiny 1.2 Relax NG schema.

Appendix E. SVG Tiny Conformance Criteria

This appendix is normative.

This section describes conformance criteria for SVG Tiny Document Fragments and User Agents. These criteria take SVG 1.2 conformance criteria as a base, and add or relax restrictions.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]

Fragment Conformance

A conforming SVG Tiny document fragment is a document fragment that requires only the facilities described as mandatory in this specification. Such a document fragment MUST meet all the following criteria:

User Agent Conformance

A conforming SVG Tiny User Agent is a User Agent that requires only the facilities described as mandatory in this specification. Such a User Agent MUST meet all the following criteria:

Dynamic SVGT User Agent Conformance

Specific criteria that apply for only Conforming Dynamic SVGT Viewers:.

SVGT User Agent Compatibility Issues

Specific criteria that apply for behavior when SVGT User Agents encounter elements and attributes that are not recognized, and other compatibility issues: