SVG in Firefox

  • Revision slug: SVG_in_Firefox
  • Revision title: SVG in Firefox
  • Revision id: 58908
  • Created:
  • Creator: Bzbarsky
  • Is current revision? No
  • Comment /* Element implementation status */

Revision Content

Firefox 1.5 marks the first official release of a browser from Mozilla that includes Scalable Vector Graphics (SVG) functionality. The road this project has taken to release has been long, and we're excited to get it in the hands of content developers to see what they produce.

Firefox SVG is a subset of SVG 1.1, but not any of the official profiles (Tiny, Basic, Full). A full list of the elements and whether they've been implemented for 1.5 can be found at the end of this document. The rest of this document attempts to provide you with information about our implementation's limitations.

We realize that the pecularities of our implementation can be bothersome when developing content, but we ask for your forbearing as we work towards a full implementation of this large specification.

Reading through this document, you might be wondering when these implementation details might change. Unfortunately the current roadmap puts the public release of Firefox based on the next version of Gecko a fair ways into the future, in the first quarter of 2007. However if you want to start experimenting with the new functionality, nightly builds of the current development are available.

Performance

All platforms that Firefox ships for use the same rendering backend, cairo, so their performance characteristics will generally be similar. Performance on linux is the hardest to predict, as it will vary due to various X servers' implementation of the RENDER extension.

Coordinate range

If your content has geometry with a large coordinate range, you need to watch out for problems caused by cairo's internal use of a 16.16 bit fixed point representation for calculations. Cairo doesn't clip primitives before rasterization, so final coordinates after transformation that exceed the range -32678 to 32677 will cause rendering errors and possibly very slow performance.

Text on Win98

An unfortunate side effect of using cairo as the rendering backend on Windows is that text rendering does not work on Windows 98 machines. In fact it's even more serious than that, in that once any text is encountered during rendering of SVG content all further drawing will stop.

Font selection

If you're familiar with CSS you probably know that it allows you to specify fallback fonts for the font properties in case glyphs are unavailable in particular font. The current SVG rendering backend will only try using the first font specified, and if it doesn't exist will use a platform font. The fallback fonts are never used so, for example, font-family="Arial,LucidaSansUnicode" won't result in LucidaSansUnicode being used if Arial is not available.

Printing

Currently printing is unfortunately not done using the vector properties of SVG to generate extremely crisp output, but instead rendered at screen resolution and then output as an image.

Font sizes when printing on MS-Windows will be much larger than specified for SVG.

Group opacity

The group opacity property "opacity" allows SVG container objects to be treated as a partially transparent layer, and is separate from the "fill-opacity" and "stroke-opacity" properties. The current implementation of "opacity" is fairly expensive, so should be used sparingly. "fill-opacity" and "stroke-opacity" are much faster, and depending on your content can yield the same results.

Group opacity is currently only implemented for <g> and not for <text> or <svg>.

Stroking fonts

On the MS-Windows and OS-X platforms, the stroke of the text will not exactly match the fill. The error is typically quite small, and can be covered by using a slightly thicker stroke. An example of this difference:

Image:text-fill-stroke.png

<image>

<image> does not support SVG images in Firefox 1.5, only the raster image formats handled by Firefox.

All instances of <image> have a separate copy of the image being used, which is something to keep in mind if your content is using multiple copies of an image for an icon or such. Unfortunately <use> of <image> content counts as another copy in this case.

Additionally, heavy use of raster images in SVG can badly degrade performance in Firefox 1.5.

Events

We support the SVG event attributes with the exception of "onfocusin", "onfocusout", and "onactivate".

Our "onload" handling is currently somewhat nonstandard, but hopefully not in a way that hurts its use. While the code specified by the "onload" attribute will be called for each element, a SVGLoad event is only firsted for the root <svg> element. Some DOM methods will return garbage or an error if called before the corresponding element has been rendered, which you may need to take into account when writing onload code. Such methods are getBBox, getScreenCTM, etc.

We do not support the Adobe specific key events ("onkeydown", "onkeyup").

Interoperability

If you're working with current SVG content, you may encounter problems loading it into Firefox. Most of the problems tend to be fairly trivial, and are the result of Firefox being a stricter implementation. Jonathan Watt's SVG Authoring Guidelines explains the common problems.

SVG usage situations

Firefox 1.5 handles SVG as entire documents or when referenced by embed/object/iframe. It cannot currently be used as source for a html/xhtml img element or for CSS properties that take an image reference.

Animation

Firefox 1.5 does not implement declarative animation, but does support dynamic scripting. Doug Shepers has used this to create SmilScript, a small Javascript library that implements a subset of SVG's declarative animation.

Element implementation status

Element Notes
Structure Module
svg
  • Implemented.
  • currentScale and currentTranslate DOM attributes are implemented, but there is no pan and zoom user interface.
  • SVGSVGElement
    • Unimplemented attributes: contentScriptType, contentStyleType, viewport, useCurrentView, currentView
    • Unimplemented bindings: pauseAnimations, unpauseAnimations, animationsPaused, getCurrentTime, setCurrentTime, getIntersectionList, getEnclosureList, checkIntersection, checkEnclosure, deselectAll, createSVGAngle, getElementById
g
  • Implemented.
defs
  • Implemented.
desc
  • Implemented.
  • Only stored in the DOM, no user interface.</td>
title
  • Implemented.
metadata
  • Implemented.
  • Only stored in the DOM, no user interface.</td>
symbol
  • Implemented.
use
  • Implemented.
  • Only works for internal document references (bug 269482).
  • Doesn't completely follow <svg:use> cascading rules (bug 265894).
  • Doesn't deliver events to a SVGElementInstance tree (bug 265895).
Conditional Processing Module
switch
  • Implemented.
Image Module
image
  • Implemented.
  • Only works for raster images (bug 272288).
Style Module
style
  • Implemented.
Shape Module
path
  • Implemented.
  • SVGPathElement Interface
    • Unimplemented attributes: pathLength, normalizedPathSegList, animatedPathSegList, animatedNormalizedPathSegList
    • Unimplemented bindings: getTotalLength, getPointAtLength, getPathSegAtLength
  • SVGPathSegList Interface
    • Unimplemented bindings: replaceItem()
rect
  • Implemented.
circle
  • Implemented.
line
  • Implemented.
ellipse
  • Implemented.
polyline
  • Implemented.
polygon
  • Implemented.
Text Module
text
  • Implemented.
  • SVGTextElement
    • Unimplemented attributes: rotate, textLength, lengthAdjust
    • Unimplemented bindings: getNumberOfChars, getSubStringLength, getStartPositionOfChar, getEndPositionOfChar, getRotationOfChar, getCharNumAtPosition, selectSubString
    • Bindings not functional at onload time: getExtentOfChar
tspan
  • Implemented.
  • SVGTSpanElement
    • Unimplemented attributes: rotate, textLength, lengthAdjust
    • Unimplemented bindings: getNumberOfChars, getComputedTextLength, getSubStringLength, getStartPositionOfChar, getEndPositionOfChar, getExtentOfChar, getRotationOfChar, getCharNumAtPosition, selectSubString
tref
  • Not implemented.
textPath
  • Not implemented.
altGlyph
  • Not implemented.
altGlyphDef
  • Not implemented.
altGlyphItem
  • Not implemented.
glyphRef
  • Not implemented.
Marker Module
marker
  • Implemented.
Color Profile Module
color-profile
  • Not implemented.
Gradient Module
linearGradient
  • Implemented.
radialGradient
  • Implemented.
stop
  • Implemented.
Pattern Module
pattern
  • Not implemented.
Clip Module
clipPath
  • Implemented.
  • Won't handle clip paths with have elements with different clip-rule properties or that reference other clipPaths. (bug 267224).
Mask Module
mask
  • Not implemented.
Filter Module
filter
  • Not implemented.
feBlend
  • Not implemented.
feColorMatrix
  • Not implemented.
feComponentTransfer
  • Not implemented.
feComposite
  • Not implemented.
feConvolveMatrix
  • Not implemented.
feDiffuseLighting
  • Not implemented.
feDisplacementMap
  • Not implemented.
feFlood
  • Not implemented.
feGaussianBlur
  • Not implemented.
feImage
  • Not implemented.
feMerge
  • Not implemented.
feMergeNode
  • Not implemented.
feMorphology
  • Not implemented.
feOffset
  • Not implemented.
feSpecularLighting
  • Not implemented.
feTile
  • Not implemented.
feTurbulence
  • Not implemented.
feDistantLight
  • Not implemented.
fePointLight
  • Not implemented.
feSpotLight
  • Not implemented.
feFuncR
  • Not implemented.
feFuncG
  • Not implemented.
feFuncB
  • Not implemented.
feFuncA
  • Not implemented.
Cursor Module
cursor
  • Not implemented.
Hyperlinking Module
a
  • Implemented as an XBL binding - object is not of type SVGAElement.
  • Only xlink:href and xlink:show attributes implemented.
  • For target attribute, see bug 300868
View Module
view
  • Not implemented.
Scripting Module
script
  • Implemented.
Animation Module
animate
  • Not implemented.
set
  • Not implemented.
animateMotion
  • Not implemented.
animateTransform
  • Not implemented.
animateColor
  • Not implemented.
mpath
  • Not implemented.
Font Module
font
  • Not implemented.
font-face
  • Not implemented.
glyph
  • Not implemented.
missing-glyph
  • Not implemented.
hkern
  • Not implemented.
vkern
  • Not implemented.
font-face-src
  • Not implemented.
font-face-uri
  • Not implemented.
font-face-format
  • Not implemented.
font-face-name
  • Not implemented.
definition-src
  • Not implemented.
Extensibility Module
foreignObject
  • Implemented, but not built.

Revision Source

<p><a href="en/Firefox_1.5">Firefox 1.5</a> marks the first official release of a browser from Mozilla that includes <a class="external" href="http://www.w3.org/Graphics/SVG/">Scalable Vector Graphics (SVG)</a> functionality.  The road this project has taken to release has been long, and we're excited to get it in the hands of content developers to see what they produce.
</p><p>Firefox SVG is a subset of <a class="external" href="http://www.w3.org/TR/SVG11/">SVG 1.1</a>, but not any of the official profiles (Tiny, Basic, Full).  A full list of the elements and whether they've been implemented for 1.5 can be found at the end of this document.  The rest of this document attempts to provide you with information about our implementation's limitations.
</p><p>We realize that the pecularities of our implementation can be bothersome when developing content, but we ask for your forbearing as we work towards a full implementation of this large specification.
</p><p>Reading through this document, you might be wondering when these implementation details might change.  Unfortunately the <a class="external" href="http://www.mozilla.org/roadmap/gecko-1.9-roadmap.html">current roadmap</a> puts the public release of Firefox based on the next version of Gecko
a fair ways into the future, in the first quarter of 2007.  However if you want to start experimenting with the new functionality, <a class="external" href="http://www.mozilla.org/developer/#builds">nightly builds</a> of the current development are available.
</p>
<h2 name="Performance"> Performance </h2>
<p>All platforms that Firefox ships for use the same rendering backend, <a class="external" href="http://cairographics.org/">cairo</a>, so their performance characteristics will generally be similar. Performance on linux is the hardest to predict, as it will vary due to various X servers' implementation of the RENDER extension.
</p>
<h2 name="Coordinate_range"> Coordinate range </h2>
<p>If your content has geometry with a large coordinate range, you need to watch out for problems caused by cairo's internal use of a 16.16 bit fixed point representation for calculations.  Cairo doesn't clip primitives before rasterization, so final coordinates after transformation that exceed the range -32678 to 32677 will cause rendering errors and possibly very slow performance.
</p>
<h2 name="Text_on_Win98"> Text on Win98 </h2>
<p>An unfortunate side effect of using cairo as the rendering backend on Windows is that text rendering does not work on Windows 98 machines. In fact it's even more serious than that, in that once any text is encountered during rendering of SVG content all further drawing will stop.
</p>
<h2 name="Font_selection"> Font selection </h2>
<p>If you're familiar with CSS you probably know that it allows you to specify fallback fonts for the font properties in case glyphs are unavailable in particular font.  The current SVG rendering backend will only try using the first font specified, and if it doesn't exist will use a platform font.  The fallback fonts are never used so, for
example, font-family="Arial,LucidaSansUnicode" won't result in LucidaSansUnicode being used if Arial is not available.
</p>
<h2 name="Printing"> Printing </h2>
<p>Currently printing is unfortunately not done using the vector properties of SVG to generate extremely crisp output, but instead rendered at screen resolution and then output as an image.
</p><p>Font sizes when printing on MS-Windows will be much larger than specified for SVG.
</p>
<h2 name="Group_opacity"> Group opacity </h2>
<p>The group opacity property "opacity" allows SVG container objects to be treated as a partially transparent layer, and is separate from the "fill-opacity" and "stroke-opacity" properties.  The current implementation of "opacity" is fairly expensive, so should be used sparingly.  "fill-opacity" and "stroke-opacity" are much faster, and depending on your content can yield the same results.
</p><p>Group opacity is currently only implemented for &lt;g&gt; and not for &lt;text&gt; or &lt;svg&gt;.
</p>
<h2 name="Stroking_fonts"> Stroking fonts </h2>
<p>On the MS-Windows and OS-X platforms, the stroke of the text will not exactly match the fill.  The error is typically quite small, and can be covered by using a slightly thicker stroke.  An example of this difference:
</p><p><img alt="Image:text-fill-stroke.png" src="File:en/Media_Gallery/Text-fill-stroke.png">
</p>
<h2 name=".3Cimage.3E"> &lt;image&gt; </h2>
<p>&lt;image&gt; does not support SVG images in Firefox 1.5, only the raster image formats handled by Firefox.
</p><p>All instances of &lt;image&gt; have a separate copy of the image being used, which is something to keep in mind if your content is using multiple copies of an image for an icon or such.  Unfortunately &lt;use&gt; of &lt;image&gt; content counts as another copy in this case.
</p><p>Additionally, heavy use of raster images in SVG can badly degrade performance in Firefox 1.5.
</p>
<h2 name="Events"> Events </h2>
<p>We support the SVG event attributes with the exception of "onfocusin", "onfocusout", and "onactivate".
</p><p>Our "onload" handling is currently somewhat nonstandard, but hopefully not in a way that hurts its use.  While the code specified by the "onload" attribute will be called for each element, a SVGLoad event is only firsted for the root &lt;svg&gt; element.  Some DOM methods will return garbage or an error if called before the corresponding element has been rendered, which you may need to take into account when writing onload code.  Such methods are getBBox, getScreenCTM, etc.
</p><p>We do not support the Adobe specific key events ("onkeydown", "onkeyup").
</p>
<h2 name="Interoperability"> Interoperability </h2>
<p>If you're working with current SVG content, you may encounter problems loading it into Firefox.  Most of the problems tend to be fairly trivial, and are the result of Firefox being a stricter implementation.  Jonathan Watt's <a class="external" href="http://jwatt.org/svg/authoring/">SVG Authoring Guidelines</a> explains the common problems.
</p>
<h2 name="SVG_usage_situations"> SVG usage situations </h2>
<p>Firefox 1.5 handles SVG as entire documents or when referenced by embed/object/iframe.  It cannot currently be used as source for a html/xhtml img element or for CSS properties that take an image reference.
</p>
<h2 name="Animation"> Animation </h2>
<p>Firefox 1.5 does not implement declarative animation, but does support dynamic scripting.  Doug Shepers has used this to create <a class="external" href="http://www.vectoreal.com/smilscript/">SmilScript</a>, a small Javascript library that implements a subset of SVG's declarative animation.
</p>
<h2 name="Element_implementation_status"> Element implementation status </h2>
  <table border="1" cellpadding="2px;" cellspacing="0" rules="all" style="margin:5px;">
   <tbody><tr>
    <th><b>Element</b></th>
    <th><b>Notes</b></th>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#basic-structure-mod">Structure Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#SVGElement">svg</a></td>
    <td>
      <ul>
        <li>Implemented.
        </li><li><code>currentScale</code> and <code>currentTranslate</code>
		DOM attributes are implemented, but there is no pan and zoom user
		interface.
   </li><li>SVGSVGElement
    <ul>
     <li>
      Unimplemented attributes: contentScriptType, contentStyleType, viewport,
      useCurrentView, currentView
     </li>
     <li>
      Unimplemented bindings: pauseAnimations, unpauseAnimations,
      animationsPaused, getCurrentTime, setCurrentTime, getIntersectionList,
      getEnclosureList, checkIntersection, checkEnclosure, deselectAll,
      createSVGAngle, getElementById
     </li>
    </ul>
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#GElement">g</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#DefsElement">defs</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#DescElement">desc</a></td>
    <td>
      <ul>
        <li>Implemented.
        </li><li>Only stored in the DOM, no user interface.&lt;/td&gt;
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#TitleElement">title</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/metadata.html#MetadataElement">metadata</a></td>
    <td>
      <ul>
        <li>Implemented.
	</li><li>Only stored in the DOM, no user interface.&lt;/td&gt;
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#SymbolElement">symbol</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#UseElement">use</a></td>
    <td>
    <ul>
      <li>Implemented.
      </li><li>Only works for internal document references (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=269482">bug 269482</a>).
      </li><li>Doesn't completely follow &lt;svg:use&gt; cascading rules (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=265894">bug 265894</a>).
      </li><li>Doesn't deliver events to a SVGElementInstance tree (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=265895">bug 265895</a>).
   </li></ul>
      </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#conditional-mod">Conditional Processing Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#SwitchElement">switch</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#image-mod">Image Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/struct.html#ImageElement">image</a></td>
    <td>
      <ul>
        <li>Implemented.
        </li><li>Only works for raster images (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=272288">bug 272288</a>).
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/styling.html#style-mod">Style Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/styling.html#StyleElement">style</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#shape-mod">Shape Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/paths.html#PathElement">path</a></td>
    <td>
      <ul>
        <li>Implemented.</li>
   <li>SVGPathElement Interface
    <ul>
     <li>
      Unimplemented attributes: pathLength, normalizedPathSegList,
      animatedPathSegList, animatedNormalizedPathSegList
     </li>
     <li>
      Unimplemented bindings: getTotalLength, getPointAtLength, getPathSegAtLength
     </li>
    </ul>
    </li>
    <li>SVGPathSegList Interface
      <ul>
        <li>Unimplemented bindings: replaceItem()</li>
      </ul>
    </li>
    </ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">rect</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#CircleElement">circle</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#LineElement">line</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#EllipseElement">ellipse</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#PolylineElement">polyline</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/shapes.html#PolygonElement">polygon</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/text.html#text-mod">Text Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#TextElement">text</a></td>
    <td>
      <ul>
        <li>Implemented.
   </li><li>SVGTextElement
    <ul>
     <li>
      Unimplemented attributes: rotate, textLength, lengthAdjust
     </li>
     <li>
      Unimplemented bindings: getNumberOfChars, getSubStringLength,
      getStartPositionOfChar, getEndPositionOfChar, getRotationOfChar,
      getCharNumAtPosition, selectSubString
     </li>
     <li>
      Bindings not functional at <code>onload</code> time: getExtentOfChar
     </li>
    </ul>
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#TSpanElement">tspan</a></td>
    <td>
      <ul>
        <li>Implemented.
   </li><li>SVGTSpanElement
    <ul>
     <li>
      Unimplemented attributes: rotate, textLength, lengthAdjust
     </li>
     <li>
      Unimplemented bindings: getNumberOfChars, getComputedTextLength,
      getSubStringLength, getStartPositionOfChar, getEndPositionOfChar,
      getExtentOfChar, getRotationOfChar, getCharNumAtPosition, selectSubString
     </li>
    </ul>
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#TRefElement">tref</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#TextPathElement">textPath</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#AltGlyphElement">altGlyph</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#AltGlyphDefElement">altGlyphDef</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#AltGlyphItemElement">altGlyphItem</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/text.html#GlyphRefElement">glyphRef</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/painting.html#marker-mod">Marker Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/painting.html#MarkerElement">marker</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/color.html#color-profile-mod">Color Profile Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/color.html#ColorProfileElement">color-profile</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#gradient-mod">Gradient Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#LinearGradientElement">linearGradient</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#RadialGradientElement">radialGradient</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#StopElement">stop</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#pattern-mod">Pattern Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/pservers.html#PatternElement">pattern</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/masking.html#clip-mod">Clip Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/masking.html#ClipPathElement">clipPath</a></td>
    <td>
      <ul>
        <li>Implemented.
        </li><li>Won't handle clip paths with have elements with
   different clip-rule properties or that reference other clipPaths. (<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=267224">bug 267224</a>).
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/masking.html#mask-mod">Mask Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/masking.html#MaskElement">mask</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#filter-mod">Filter Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#FilterElement">filter</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feBlendElement">feBlend</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feColorMatrixElement">feColorMatrix</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement">feComponentTransfer</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feCompositeElement">feComposite</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

    </tr>
    <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feConvolveMatrixElement">feConvolveMatrix</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feDiffuseLightingElement">feDiffuseLighting</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feDisplacementMapElement">feDisplacementMap</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feFloodElement">feFlood</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feGaussianBlurElement">feGaussianBlur</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feImageElement">feImage</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feMergeElement">feMerge</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feMergeNodeElement">feMergeNode</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feMorphologyElement">feMorphology</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feOffsetElement">feOffset</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feSpecularLightingElement">feSpecularLighting</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feTileElement">feTile</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feTurbulenceElement">feTurbulence</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feDistantLightElement">feDistantLight</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#fePointLightElement">fePointLight</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feSpotLightElement">feSpotLight</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feFuncRElement">feFuncR</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feFuncGElement">feFuncG</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feFuncBElement">feFuncB</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/filters.html#feFuncAElement">feFuncA</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/interact.html#cursor-mod">Cursor Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/interact.html#CursorElement">cursor</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/linking.html#hyperlinking-mod">Hyperlinking Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/linking.html#AElement">a</a></td>
    <td>
      <ul>
	<li>Implemented as an XBL binding - object is not of type
	   SVGAElement.</li>
	<li>Only <code>xlink:href</code> and <code>xlink:show</code>
	   attributes implemented.</li>
        <li>For <code>target</code> attribute, see <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=300868">bug 300868</a></li>
      </ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/linking.html#view-mod">View Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/linking.html#ViewElement">view</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/script.html#scripting-mod">Scripting Module</a></th>
   </tr>

   <tr style="color:black; background-color:lightgreen">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/script.html#ScriptElement">script</a></td>
    <td>
      <ul>
        <li>Implemented.
      </li></ul>
    </td>

   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#animation-mod">Animation Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#AnimateElement">animate</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#SetElement">set</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#AnimateMotionElement">animateMotion</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#AnimateTransformElement">animateTransform</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#AnimateColorElement">animateColor</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>

   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/animate.html#mpathElement">mpath</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#font-mod">Font Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceElement">font</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceNameElement">font-face</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#GlyphElement">glyph</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#MissingGlyphElement">missing-glyph</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#HKernElement">hkern</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#VKernElement">vkern</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceSrcElement">font-face-src</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
  </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceNameElement">font-face-uri</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceNameElement">font-face-format</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#FontFaceNameElement">font-face-name</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>
   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/fonts.html#DefinitionSrcElement">definition-src</a></td>
    <td>
      <ul>
        <li>Not implemented.
      </li></ul>
    </td>
   </tr>

   <tr>
    <th colspan="2"><a class="external" href="http://www.w3.org/TR/SVG11/extend.html#extensibility-mod">Extensibility Module</a></th>
   </tr>

   <tr style="color:black; background-color:salmon">
    <td><a class="external" href="http://www.w3.org/TR/SVG11/extend.html#ForeignObjectElement">foreignObject</a></td>
    <td>
      <ul>
        <li>Implemented, but not built.
      </li></ul>
    </td>
   </tr>
  </tbody></table>
Revert to this revision