Copyright © 2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
This document defines a mobile profile of SVG 1.2. The profile is called SVG Tiny 1.2 and is defined to be suitable for cellphones.
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 is a W3C Last Call Working Draft. If the feedback is positive, the SVG Working Group plans to submit this specification for consideration as a W3C Candidate Recommendation. Comments for this specification should have a subject starting with the prefix '[SVGT12 Comment]'. 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. Comments are accepted until 17 September 2004.
Issues about this document are documented in the last call issues list maintained by the Working Group.
This document has been produced by the SVG Working Group as part of the W3C Graphics Activity, following the procedures set out for the W3C Process. The authors of this document are listed at the end in the Author List section.
The patent policy for this document is expected to become the 5 February 2004 W3C Patent Policy, pending the Advisory Committee review of the renewal of the XML Query Working Group. Patent disclosures relevant to this specification may be found on the SVG Working Group's patent disclosure page. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) with respect to this specification should disclose the information in accordance with section 6 of the W3C Patent Policy.
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.
15 Linking
Text in light blue boxes describes new SVGT 1.2 features.
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.
There is a single SVG 1.2 Mobile document type called SVG Tiny 1.2 (SVGT 1.2). In this specification, the module definitions are written in RelaxNG.
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.
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 filling and stroking of 'path' elements and basic shapes with solid colors, linear gradients, 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). |
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>
SVGT support the 'title', 'desc' and 'metadata' elements as defined in SVG 1.2.
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".
For SVGT, all referenced objects, except on the 'image', 'audio', 'video', 'font-face-uri' and 'a' elements, must be internal (using the 'data:' URL scheme, and base64 encoding).
SVGT does not support symbols.
Note that, in SVG 1.2, animations on a referenced element will cause the instances to be animated. SVGT also support this feature.
SVGT requires support of the JPEG and PNG formats on the image element.
SVGT requires support for SVG images with the following restrictions. First, the referencing 'image' element's overflow property and the referenced 'svg' overflow property MUST be set to 'visible'. Second, the referenced document should not contain any references to external SVG images. If these restrictions are not met, the document is in error.
These restrictions have been added to protect implementations from most of the implementation cost while still covering important use cases with external svg images. The same use cases could have been covered by allowing external use elements instead, the WG feels that the implementation cost of these two alternatives are equal but are interested in any feedback that proves the difference.
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:
http://example.org/TR/SVG12/feature#CoreAttribute
http://example.org/TR/SVG12/feature#BasicStructure
http://example.org/TR/SVG12/feature#BasicPaintAttribute
http://example.org/TR/SVG12/feature#BasicGraphicsAttribute
http://example.org/TR/SVG12/feature#Hyperlinking
http://example.org/TR/SVG12/feature#XlinkAttribute
http://example.org/TR/SVG12/feature#ConditionalProcessing
http://example.org/TR/SVG12/feature#Shape
http://example.org/TR/SVG12/feature#Image
http://example.org/TR/SVG12/feature#BasicText
http://example.org/TR/SVG12/feature#BasicFont
http://example.org/TR/SVG12/feature#Animation
http://example.org/TR/SVG12/feature#Extensibility
http://example.org/TR/SVG12/feature#TinyBase
indicates the availability of all the static and declarative
animation language capabilities defined for SVG Tiny in Section
2.http://example.org/TR/SVG12feature#TinyInteractivity
indicates the availability of all the base features, as well as
support for interactivity.http://example.org/TR/SVG12/feature#TransformedVideo
indicates the user agent has the ability to perform any transformation
(including scaling) on video content.Note that the above feature strings use the "example.org" domain. In the next version of this specification, the feature strings will use the "www.w3.org" domain. Implementors should use the "www.w3.org" identifier for feature strings.
SVGT 1.2 supports the page and pageSet elements as defined in SVG 1.2. The allowed values for preserveAspectRatio for <page> follow the same resrictions as the <svg> element.
SVGT 1.2 supports the timelineBegin and streamedContents attributes as defined in SVG 1.2
SVGT 1.2 supports the externalResourcesRequired attribute to enable progressive rendering, as defined in SVG 1.2.
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 requiredFormats test attribute, allows content to check for particular audio codecs.
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 allows content to switch to an alternate rendering if the user agent does not support transformed video.
The requiredFormats test attribute, allows content to check for particular video codecs.
SVGT support subsets of SVG 1.2's presentation attributes.
SVGT does not support styling with CSS.
SVGT can introduce constraints on style properties. Properties and attributes are listed in Appendix C.
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.
SVGT supports the transform attribute. The following transform definition types are supported:
SVGT fully supports the 'viewBox' attribute. SVGT has restrictions on allowed preserveAspectRatio attribute values (see below).
SVGT supports the 'preserveAspectRatio' attribute for adapting the content to devices with different display aspect ratios.
In SVGT, the <align> parameter is not restricted but the <meetOrSlice> parameter can only be 'meet'.
SVGT does not allow nested 'svg' elements.
SVGT only supports user units, with two exceptions:
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.
SVGT supports the basic shapes (rectangles, circles, ellipses, lines, polylines, and polygons) as defined in SVG 1.2.
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, and does not support the tref' elements.
SVGT supports a simplified version of the 'tspan' element, where the x, y, dx, dy, rotate, textLength and lengthAdjust attributes are not supported.
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 'flowRoot' element.
SVGT 1.2 shall support the following elements, with the listed restrictions, as specified in SVG 1.2:
Note that children of a flowRegion element are inserted into the rendering tree before the text is drawn, and have the same rendering behavior as if they were children of a g element.
SVG Tiny 1.2 supports the 'editable' attribute with restrictions. SVG Tiny 1.2 supports the 'editable' attrubute on 'text' elements which have no element children. SVG Tiny 1.2 supports the 'editable' attribute on 'flowPara' elements which are the only child of a 'flowRoot' element and which have no element children. If these restrictions are not met, the document is in error.
SVG Tiny 1.2 supports the 'progression-align' property that indicates line progression direction alignment in flowing text.
Value: | before | center | after |
Initial: | before |
Applies to: | flowRoot , flowPara and flowSpan |
Inherited: | yes |
Percentages: | N/A |
Media: | visual |
Animatable: | yes |
An SVG user agent uses this property to align blocks of flowed text within their containing regions. If the line progression direction is left to right, a setting of 'before' will align the block of text at the top of the region. A setting of 'after' will align the text at the bottom of the region. A setting of 'center' will vertically center the block of flowed text. The combined line heights of the entire flowed text is used for alignment (as opposed to maximum glyph extents on the flowed text lines).
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 and background-fill-opacity properties 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.
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.
SVGT supports a subset of the linearGradient and radialGradient elements. The following is not supported:
SVGT 1.2 supports the gradientUnits attribute.
SVGT1.2 supports the solidColor element as defined in SVG 1.2.
SVGT does not support clipping, masking or compositing.
SVGT does not support filter effects.
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. SVGT 1.2 also supports the nav-index property, as defined in SVG 1.2.
SVGT 1.2 supports the pointer-events property.
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.
SVG Tiny 1.2 supports scripting through the integration of XML Events, as defined in SVG 1.2. In particular, a 'handler' element can have children in an arbitrary XML namespace as a way to specify parameters.
SVGT supports the full set of SVG 1.2's declarative animation features:
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.
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 embedded within the same document that uses the font or referenced through the 'font-face-src' and 'font-face-uri' elements.
SVGT supports embedded metadata, as well as elements and attributes from foreign namespaces included within the SVG content.
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.
The authors of this specification are the participants of the W3C SVG Working Group.
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.
SVGT 1.2 will support the UDOM as defined in the SVG 1.2 draft.
SVG Tiny 1.2 Document Fragments MUST conform to the SVG Tiny 1.2 Relax NG schema.
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]
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:
http://www.w3.org/2000/svg.
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:
"http://www.w3.org/TR/SVGMobile/Tiny/feature#base"
."http://www.w3.org/TR/SVGMobile/Tiny/feature#interactivity"
and which support all of the required features for SVGT subset of
DOM described in the SVG 1.1 specification.Specific criteria that apply for only Conforming Dynamic SVGT Viewers:.
Specific criteria that apply for behavior when SVGT User Agents encounter elements and attributes that are not recognized, and other compatibility issues: