Mozilla + SVG Status

Elements

A quick overview of the SVG 1.1 elements and the current status of the native support. Green is supported, orange is in progress, and red is not currently supported. Most of the unimplemented portions fall into three major modules: fonts, filters, and animation.

Element Notes W3C SVG 1.1 Source
Structure Module
svg W3C nsSVGSVGElement.cpp
g W3C nsSVGGElement.cpp
defs Bug 246857 W3C nsSVGDefsElement.cpp
desc Bug 268426 W3C nsSVGDescElement.cpp
title Bug 268426 W3C nsSVGTitleElement.cpp
metadata Bug 268426 W3C nsSVGMetadataElement.cpp
symbol Bug 237020 W3C
use Bug 237020 W3C
Conditional Processing Module
switch Bug 216562 W3C
Image Module
image Bug 216568 W3C nsSVGImageElement.cpp
Style Module
style Bug 238327 W3C nsSVGStyleElement.cpp
Shape Module
path W3C nsSVGPathElement.cpp
rect W3C nsSVGRectElement.cpp
circle W3C nsSVGCircleElement.cpp
line W3C nsSVGLineElement.cpp
ellipse W3C nsSVGEllipseElement.cpp
polyline W3C nsSVGPolylineElement.cpp
polygon W3C nsSVGPolygoneElement.cpp
Text Module
text W3C nsSVGTextElement.cpp
tspan W3C nsSVGTSpanElement.cpp
tref W3C
textPath W3C
altGlyph W3C
altGlyphDef W3C
altGlyphItem W3C
glyphRef W3C
Marker Module
marker Bug 238530 W3C
Color Profile Module
color-profile W3C
Gradient Module
linearGradient Bug 244917 W3C nsSVGGradientElement.cpp
radialGradient Bug 244917 W3C nsSVGGradientElement.cpp
stop Bug 244917 W3C nsSVGStopElement.cpp
Pattern Module
pattern W3C
Clip Module
clipPath Bug 193825 W3C
Mask Module
mask W3C
Filter Module
filter W3C
feBlend W3C
feColorMatrix W3C
feComponentTransfer W3C
feComposite W3C
feConvolveMatrix W3C
feDiffuseLighting W3C
feDisplacementMap W3C
feFlood W3C
feGaussianBlur W3C
feImage W3C
feMerge W3C
feMergeNode W3C
feMorphology W3C
feOffset W3C
feSpecularLighting W3C
feTile W3C
feTurbulence W3C
feDistantLight W3C
fePointLight W3C
feSpotLight W3C
feFuncR W3C
feFuncG W3C
feFuncB W3C
feFuncA W3C
Cursor Module
cursor W3C
Hyperlinking Module
a W3C svgBindings.xml
View Module
view W3C
Scripting Module
script Bug 235826 W3C nsSVGScriptElement.cpp
Animation Module
animate W3C
set W3C
animateMotion W3C
animateTransform W3C
animateColor W3C
mpath W3C
Font Module
font W3C
font-face W3C
glyph W3C
missing-glyph W3C
hkern W3C
vkern W3C
font-face-src W3C
font-face-uri W3C
font-face-format W3C
font-face-name W3C
definition-src W3C
Extensibility Module
foreignObject W3C nsSVGForeignObjectElement.cpp

Implementation Notes

onload event does not respect externalResourcesRequired attribute. (bug 277955)

object space gradients will be incorrect for container elements.

a element implemented as an XBL binding - object is not of type SVGAElement.

pan-and-zoom user interface not implemented

<svg:use> only works for internal document references (bug 269482), doesn't completely follow <svg:use> cascading rules (bug 265894), and doesn't deliver events to a SVGElementInstance tree (bug 265895).

<svg:image> only works for raster images (bug 272288).

<svg:clipPath> won't handle clip paths with have elements with different clip-rule properties or that reference other clipPaths. (bug 267224).

SVGSVGElement
  • Unimplemented attributes: contentScriptType, contentStyleType, viewport, useCurrentView, currentView
  • Unimplemented bindings: pauseAnimations, unpauseAnimations, animationsPaused, getCurrentTime, setCurrentTime, getIntersectionList, getEnclosureList, checkIntersection, checkEnclosure, deselectAll, createSVGAngle, getElementById
SVGPathElement
  • Unimplemented attributes: pathLength, normalizedPathSegList, animatedPathSegList, animatedNormalizedPathSegList
  • Unimplemented bindings: getTotalLength, getPointAtLength, getPathSegAtLength
SVGTextElement
  • Unimplemented attributes: dx, dy, rotate, textLength, lengthAdjust
  • Unimplemented bindings: getNumberOfChars, getSubStringLength, getStartPositionOfChar, getEndPositionOfChar, getRotationOfChar, getCharNumAtPosition, selectSubString
SVGTSpanElement
  • Unimplemented attributes: dx, dy, rotate, textLength, lengthAdjust
  • Unimplemented bindings: getNumberOfChars, getComputedTextLength, getSubStringLength, getStartPositionOfChar, getEndPositionOfChar, getExtentOfChar, getRotationOfChar, getCharNumAtPosition, selectSubString

Backends

libart

  • Group opacity not implemented.
  • Text selection not implemented.
  • Clipping not implemented.
  • Can not be shipped as the mozilla.org SVG backend because changes are needed to the LGPL libart library, and all binary bits shipped by mozilla.org must be useable under the tri-license.

GDI+

  • Fully functional.

cairo

  • Dashed curves show solid (not implemented in cairo yet)
  • Font face/size has quirks.
  • Text selection not implemented.

Quartz