Firefox 1.5 marca la publicación del primer navegador de Mozilla que soporta el formato de gráficos vectoriales escalables (SVG). El camino de este proyecto ha sido largo, nos satisface poner a disposición de los desarrolladores esta tecnologia y estamos impacientes por ver sus frutos.
Firefox SVG es un subconjunto de SVG 1.1, pero no es ninguno de los perfiles oficiales (Tiny, Basic, Full). En este documento se puede encontrar una lista completa de los elementos que han sido implementados en Firefox 1.5. Además encontrará información sobre las limitaciones en su implementación.
La peculiar implementación que hemos realizado puede dificultar el creación de contenidos, le pedimos que tenga paciencia mientras trabajamos en la implementación completa de esta extensa especificación.
Mientras lee esto, usted puede preguntarse cuandos de estos detalles sobre de la implementación pueden haber cambiado. Por desgracia el mapa de ruta actual situa la publicación de Firefox con Gecko 1.9 en el primer trimestre de 2007. Sin embargo si usted desea comenzar a experimentar con las nuevas funcionalidades, tiene a su disposición en las nightly builds las últimas evoluciones, y si lo desea puede consultar la tabla actualizada sobre la implementación de SVG en la versión de desarrollo. Como podreis comprobar, la cosa avanza a buen ritmo ☺.
Performance
Firefox usa el mismo motor de renderizado, cairo, en todas las plataformas en las que navega. Por lo tanto sus características de interpretación serán similares. La Performance en linux es la más difícil de predecir, esto es debido a las distintas implementaciones que hacen los diversos servidores X de la extensión RENDER.
En Windows el renderizado de SVG es bastante más rápido que en otras plataformas.
Coordinate range
Si tu contenido posee geometría con un gran rango de coordenadas, necesitarás tener cuidado con los problemas causados por el uso interno de cairo de una representación en punto fijo de 16.16 bit para sus cálculos. Cairo no clip primitives antes de la rasterización, por lo que las coordenadas finales tras la transformación que excedan el rango desde -32678 a 32677 causarán errores de renderizado y posiblemente un funcionamiento bastante lento.
Texto en Windows 98
Un lamentable efecto secundario de usar Cairo como backend de renderizado en Windows es que el renderizado del texto no funcionará en Windows 98. En realidad la cosa es aun peor, si aparece cualquier texto durante la visualización de contenidos SVG, todo el dibujo se parará.
Selección de fuente
Si usted está familiarizado con CSS probablemente sabrá que puede especificar fuentes alternativas para las propiedades 'font' por si los glifos de una fuente concreta no estén disponibles. El actual motor de renderizado de SVG sólo tratará de usar la primera fuente especificada, y si esta no existe, usará una fuente del sistema. Las fuentes secundarias nunca son usadas, por ejemplo, font-family="Arial,LucidaSansUnicode" no generará una fuente LucidaSansUnicode, aun en el caso de que Arial no esté disponible.
Impresión
Por desgracia, actualmente en la impresión no se aprovechan las propiedades vectoriales de SVG para generar una salida óptima, por contra, se renderiza según la resolución de la pantalla y luego la salida se hace como imagen.
Al imprimir en MS-Windows, el tamaño de la fuente será mucho más grande que el especificado por SVG.
Opacidad de grupo
La propiedad de opacidad de grupo "opacity" permite que los objetos contenedores SVG puedan ser tratados como capas semi-transparentes, y sea separado de propiedades "fill-opacity" y "stroke-opacity" La implementacion actual de "opacity" consume bastantes recursos, debería ser usada con mesura. "fill-opacity" y "stroke-opacity" son mucho más rápidas, y dependiendo de su contenido pueden aportar los mismos resultados.
Actualmente la opacidad de grupo está implementado solo para <g> pero no para <text> o <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>
<image> no soporta imágenes SVG en Firefox 1.5, sólo los formatos de imagen rasterizados que Firefox maneja.
Todas las instancias de <image> tienen una copia separada de la imagen que está siendo usada, lo cual es algo a tener en cuenta si tu contenido está usando múltiples copias de una imagen para un icono o algo parecido. Desafortunadamente, <use> en contenido <image> cuenta como otra copia en este caso.
De manera adicional, un uso intensivo de imágenes rasterizadas en SVG puede degradar de sobremanera el rendimiento en Firefox 1.5.
Eventos
Soportamos los atributos de SVG para eventos, a excepción de "onfocusin", "onfocusout", y "onactivate".
Nuestro manejo del evento "onload" es actualmente no-estándar, pero creemos que aún así no impide su uso correcto. Mientras que el código especificado por el atributo "onload" será llamado para cada elemento, un evento SVGLoad es llamado únicamente para el elemento <svg> raíz. Algunos métodos DOM devolverán basura o error si son llamados antes de que el elemento correspondiente haya sido renderizado, algo que tendrás que tener en cuenta al escribir código "onload". Dichos métodos son getBBox, getScreenCTM, etc.
No damos soporte a los eventos para el teclado específicos de Adobe ("onkeydown", "onkeyup").
Interoperabilidad
Si está trabajando con contenidos SVG actuales, puede encontrar problemas al cargarlos en Firefox. La mayoría de los problemas suelen ser triviales, y son el resultado de una implementación más estricta en Firefox. En SVG Authoring Guidelines Jonathan Watt's explica los problemas comunes.
Situaciones del uso
Firefox 1.5 maneja SVG como un documento entero, o como referencia para los elementos embed, object, e iframe. Actualmente no puede ser usado como fuente del elemento img, ni para las propiedades CSS relativas a las imágenes.
Animación
Firefox 1.5 no implementa la animación declarativa, pero soporta scripting dinámico. Doug Shepers lo ha usado para crear SmilScript, una pequeña biblioteca de Javascript que implementa parte de la animación declarativa de SVG.
Elementos, estado de la implementación
Elemento | Notas |
---|---|
Módulo Estructura | |
svg |
|
g |
|
defs |
|
desc |
|
title |
|
metadata |
|
symbol |
|
use |
|
Conditional Processing Module | |
switch |
|
Image Module | |
image |
|
Style Module | |
style |
|
Shape Module | |
path |
|
rect |
|
circle |
|
line |
|
ellipse |
|
polyline |
|
polygon |
|
Módulo Texto | |
text |
|
tspan |
|
tref |
|
textPath |
|
altGlyph |
|
altGlyphDef |
|
altGlyphItem |
|
glyphRef |
|
Módulo Marker | |
marker |
|
Módulo Color-Profile | |
color-profile |
|
Módulo Gradientes | |
linearGradient |
|
radialGradient |
|
stop |
|
Módulo Pattern | |
pattern |
|
Módulo Clip | |
clipPath |
|
Módulo Mask | |
mask |
|
Módulo Filtro | |
filter |
|
feBlend |
|
feColorMatrix |
|
feComponentTransfer |
|
feComposite |
|
feConvolveMatrix |
|
feDiffuseLighting |
|
feDisplacementMap |
|
feFlood |
|
feGaussianBlur |
|
feImage |
|
feMerge |
|
feMergeNode |
|
feMorphology |
|
feOffset |
|
feSpecularLighting |
|
feTile |
|
feTurbulence |
|
feDistantLight |
|
fePointLight |
|
feSpotLight |
|
feFuncR |
|
feFuncG |
|
feFuncB |
|
feFuncA |
|
Módulo Cursor | |
cursor |
|
Módulo hiperenlace | |
a |
|
Módulo visión | |
view |
|
Módulo Script | |
script |
|
Módulo Animación | |
animate |
|
set |
|
animateMotion |
|
animateTransform |
|
animateColor |
|
mpath |
|
Módulo Fuentes | |
font |
|
font-face |
|
glyph |
|
missing-glyph |
|
hkern |
|
vkern |
|
font-face-src |
|
font-face-uri |
|
font-face-format |
|
font-face-name |
|
definition-src |
|
Módulo Extensibilidad | |
foreignObject |
|