SVG

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 21 de enero de 2019; las comprobaciones requieren 25 ediciones .
Gráficas vectoriales escalables
Extensión .svgo.svgz
tipo MIME imagen/svg+xml
Desarrollador Consorcio Mundial de la red
Último lanzamiento SVG Tiny 1.2
SVG 1.1 (Segunda edición)
SVG 2
Tipo de formato Gráficos vectoriales
Expandido desde XML
formato abierto ?
Sitio web w3.org/Graphics/SVG/svgwg.org
_
 Archivos multimedia en Wikimedia Commons

SVG (del inglés  Scalable V ector Graphics  - gráficos vectoriales escalables ) es un lenguaje de marcado de gráficos vectoriales escalable creado por el World Wide Web Consortium (W3C) e incluido en un subconjunto del lenguaje de marcado extensible XML , diseñado para describir dos vector dimensional y vector mixto / rastergráficos en formato XML. Admite gráficos interactivos fijos y animados, o, en otros términos, declarativos y con secuencias de comandos. No admite descripciones de objetos tridimensionales (no confundir con la simulación de tridimensionalidad por claroscuro). Es un estándar abierto recomendado por el W3C, la organización detrás de estándares como HTML y XHTML . SVG se basa en los lenguajes de marcado VML y PGML . Desarrollado desde 1999. En 2001, se lanzó la versión 1.0, en 2011, la versión 1.1, que sigue siendo relevante hasta el día de hoy. La versión 2 se encuentra actualmente en desarrollo activo.

Características del lenguaje

< relleno de ruta= "ninguno" trazo= "negro" d= "M 228 238 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" />
  • Descripción de formas geométricas básicas (polígonos, rectángulos, círculos, etc.).
  • Una amplia gama de propiedades visuales que se pueden aplicar a formas y trazados: coloración, transparencia, esquinas redondeadas, etc.
  • interactividad _ En cada elemento individual y en la imagen completa, puede colgar un controlador de eventos (clic, mover, pulsar una tecla, etc.), para que el usuario pueda controlar la imagen (por ejemplo, mover algunos elementos con el mouse [1] ).
  • Animación y guiones. Usando ECMAScript o JavaScript , puede describir incluso los escenarios más complejos relacionados con los cálculos matemáticos de las coordenadas y proporciones de las formas. Junto con la interactividad y la animación SMIL , esto brinda una gama muy amplia de posibilidades para los desarrolladores de gráficos web.

Ventajas de la

  • Formato de texto: los archivos SVG se pueden leer y editar (con algunas habilidades) utilizando editores de texto comunes . Al ver documentos que contienen gráficos SVG, tiene acceso para ver el código del archivo que se está viendo y la capacidad de guardar el documento completo. Además, los archivos SVG tienden a ser más pequeños que las imágenes JPEG o GIF comparables y se comprimen bien.
  • Escalable-SVG es un formato vectorial . Es posible ampliar cualquier parte de una imagen SVG sin perder calidad. Además, es posible aplicar filtros a los elementos de un documento SVG, modificadores especiales para crear efectos similares a los que se utilizan al procesar imágenes de mapa de bits (desenfoque, extrusión, sistemas de transformación complejos, etc.). En el texto del código SVG, los filtros se describen mediante etiquetas que representa el espectador, lo que no afecta el tamaño del archivo de origen, al tiempo que proporciona la expresividad ilustrativa necesaria.
  • El uso de gráficos de mapa de bits en documentos SVG está ampliamente disponible. Puede insertar elementos con imágenes PNG, GIF o JPG.
  • El texto de un gráfico SVG es texto, no una imagen, por lo que se puede seleccionar y copiar, los motores de búsqueda lo indexan y no es necesario crear metarchivos adicionales para los robots de búsqueda .
  • La animación está implementada en SVG usando el lenguaje SMIL (Synchronized Multimedia Integration Language), también desarrollado por el consorcio W3C. Se admiten lenguajes de secuencias de comandos basados ​​en la especificación ECMAScript . Los elementos SVG se pueden manipular con JavaScript . El uso de scripts y animaciones en SVG te permite crear gráficos dinámicos e interactivos. En SVG, se proporciona un modelo de eventos, se rastrean los eventos ( carga de la página, cambio de sus parámetros, mouse, eventos del teclado, etc. ). La animación se puede desencadenar por un evento específico (por ejemplo , "onmouseover" o "onclick" ), lo que hace que los gráficos sean interactivos. Cada elemento tiene sus propios eventos a los que se pueden adjuntar scripts individuales.
  • SVG es un estándar abierto. A diferencia de otros formatos, SVG no es propietario.
  • Los documentos SVG se integran fácilmente con documentos HTML y XHTML. Los SVG externos se conectan a través de la etiqueta <object> , el valor del atributo de datos es el nombre del archivo con la extensión ".svg" que contiene el marcado SVG y tiene el tipo MIME image/svg+xml. Los atributos de ancho y alto definen las dimensiones horizontales y verticales del área SVG. Los elementos SVG son compatibles con HTML y DHTML.
  • Compatibilidad con CSS ( English  Cascading Style Sheets ). La visualización (formato y decoración) de los elementos SVG se puede controlar a través de la hoja de estilo CSS 2.0 y sus extensiones, o directamente a través de los atributos de los elementos SVG.
  • SVG proporciona todos los beneficios de XML :
    • Capacidad para trabajar en diversos entornos.
    • Internacionalización (soporte para Unicode ).
    • Amplia disponibilidad para diversas aplicaciones.
    • Fácil modificación a través de API estándar  como DOM . SVG es compatible con el modelo de objeto de documento W3C estandarizado DOM, que brinda acceso a cualquier elemento, lo que brinda amplias oportunidades para cambiar dinámicamente los elementos, sus atributos y eventos.
    • Fácil conversión con hojas de estilo XSLT . Como cualquier formato basado en XML, SVG le permite usar tablas de transformación (XSLT) para procesarlo. Al convertir datos XML a SVG usando XSL simple , puede obtener fácilmente una representación gráfica de cualquier dato, por ejemplo, visualizar moléculas químicas descritas en CML .

Desventajas del formato

  • No hay soporte para gráficos 3D en absoluto.
  • SVG hereda todas las desventajas de XML , como un gran tamaño de archivo (sin embargo, esto último se compensa con la existencia de un formato SVGZ comprimido , pero actualmente su uso es difícil, ya que SVGZ no tiene un tipo MIME propio ).
  • Difícil de usar en grandes aplicaciones cartográficas debido a que el documento debe leerse en su totalidad para poder visualizar correctamente una pequeña parte de la imagen.
  • Cuantos más detalles finos haya en la imagen, más rápido crecerá el tamaño de los datos SVG. Un caso extremo es cuando la imagen es ruido blanco . En este caso, SVG no solo no ofrece ninguna ventaja en cuanto al tamaño del archivo, sino incluso una pérdida en comparación con el formato de mapa de bits. En la práctica, SVG deja de ser rentable mucho antes de que la imagen alcance la etapa de ruido blanco.

Estructura de un documento SVG

La primera línea es un encabezado XML estándar, una declaración ( eng.  Declaración XML ), que indica la versión de XML (versión) ( generalmente "1.0" ) y la codificación de caracteres (codificación):

<?versión xml="1.0" codificación="UTF-8" standalone="no"?>

La segunda y tercera líneas deben contener el encabezado DOCTYPE , que define el tipo de documento ( Definiciones de tipo de documento ) DTD : 

<!DOCTYPE svg PÚBLICO "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

Desafortunadamente, en algunos casos, cuando se usa Mozilla Firefox con un visor SVG incorporado, el contenido de la declaración DOCTYPE puede ser una fuente de errores. Hay recomendaciones para no usar la declaración DOCTYPE en las versiones 1.0 de SVG. En su lugar, se recomienda incluir el atributo baseProfile en el elemento raíz <svg> con un valor de "full" [2] .

Si por alguna razón se requiere una declaración DOCTYPE en un documento, se recomienda utilizar una declaración vacía, como en el ejemplo.

<!DOCTYPE svg [ <!-- sus datos --> ]>

La cuarta línea es el elemento raíz del documento con el espacio de nombres SVG .

<svg version= "1.1" baseProfile= "full" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink" xmlns: ev= "http://www.w3.org/2001/xml-events" ancho= "100%" alto= "100%" >

Luego viene el resto del texto del documento, anidado en el elemento raíz, donde se ubican los elementos que describen el contenido de la escena codificada.

El documento siempre termina con la etiqueta raíz de cierre </svg>.

Ejemplos

  • Un documento SVG estático simple con un contorno cuadrado de 400 px y tres círculos semitransparentes de 104 px en el centro del cuadrado, cada círculo desplazado del centro del cuadrado en aproximadamente medio radio.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg version = "1.1" baseProfile= "full" xmlns = "http://www.w3.org/2000/svg " xmlns:xlink = "http://www.w3.org/1999/xlink" xmlns:ev = "http://www.w3.org/2001/xml-events" alto = "400px" ancho = "400px " > <rect x= "0" y= "0" ancho= "400" alto= "400" relleno= "ninguno" trazo= "negro" ancho de trazo= "5px" opacidad de trazo= "0.5" /> <g fill-opacity= "0.6" stroke= "black" stroke-width= "0.5px" > <circle cx= "200px" cy= "200px" r= "104px" fill= "red" transform= "translate( 0,-52)" /> <circle cx= "200px" cy= "200px" r= "104px" fill= "blue" transform= "translate( 60, 52)" /> <circle cx= "200px" cy = "200 píxeles" r = "104 píxeles" relleno = "verde" transformar = "traducir (-60, 52)" /> </g> </svg>

Nota: este código se ejecuta igual en Mozilla Firefox 2.0.0.11 y en Internet Explorer 6.0.2900.2180 (SVG Document Adobe Systems Inc.)

  • Otro ejemplo es un rectángulo con esquinas redondeadas que ocupa toda el área de visualización:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3. org/Graphics/SVG/1.1/DTD/svg11.dtd"> < versión svg= "1.1" baseProfile= "completo" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http ://www.w3.org/1999/xlink" xmlns:ev= "http://www.w3.org/2001/xml-events" width= "100%" height= "100%" > <rect fill = "blanco" x= "0" y= "0" ancho= "100%" alto= "100%" /> <rect fill= "plata" x= "0" y= "0" ancho= "100% " altura = "100%" rx = "1em" /> </svg>
  • estrella amarilla:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width= "198" height= "188" viewBox= "0 0 198 188" version= "1.1" baseProfile= " completo" xmlns= "http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink" xmlns:ev= "http://www.w3 .org/2001/xml-events" > <g id= "Página-1" trazo= "ninguno" ancho de trazo= "1" relleno= "ninguno" regla-relleno= "par-impar" > <polígono id= Trazo "Star-1" = "#979797" ancho de trazo = "3" relleno = "#F8E81C" puntos = "99 154 40 185 51 119 4 73 69 64 99 3 128 64 194 73 147 119 158 185 " > < /polígono> </g> </svg>

SVGZ

Dado que el código SVG ocupa bastante espacio, se creó un "envoltorio" SVGZ donde el SVG se comprime con gzip y el archivo resultante recibe la extensión ".svgz".

SVG se comprime bien porque es un documento de texto XML con una estructura regular.

Compatibilidad con navegador

navegador versión
explorador de Internet 9+ [3]
Mozilla Firefox 1.5+ [4]
Netscape Navigator 9.0+
Google Chrome 3.0+
safari 4.0+
Ópera 8.0+

Especificaciones de la norma

Software

Aplicaciones

Herramientas y bibliotecas

  • Batik  es una biblioteca Java para generar, renderizar y varias manipulaciones de imágenes en formato SVG y un navegador SVG basado en esta biblioteca: Squiggle [5] .
  • MetaPost  es un lenguaje de programación utilizado para crear ilustraciones gráficas.
  • librsvg  es una biblioteca utilizada por MediaWiki para trabajar con SVG [6] [7] .
  • SVG Viewer Extension para Windows Explorer  es una extensión para Windows Explorer que le permite ver archivos SVG como miniaturas.
  • Snap  es una biblioteca de JavaScript para trabajar con  SVG.
  • SVG.js : una biblioteca liviana para manipular y animar gráficos SVG, no tiene dependencias y pretende ser lo más pequeña posible.

Notas

  1. Un ejemplo de una página que le permite crear y editar SVG en el navegador Archivado el 19 de mayo de 2010 en Wayback Machine  (ruso)
  2. Directrices de creación de SVG: no incluir una declaración DOCTYPE . Archivado el 14 de abril de 2008 en Wayback Machine . 
  3. Notas de la versión preliminar de la plataforma Windows Internet Explorer Archivado el 19 de abril de 2010.  (Inglés)
  4. Brockmeier, Joe . Revisión: Firefox 1.5 y Thunderbird 1.5  , Linux.com (  30 de noviembre de 2005). Consultado el 30 de noviembre de 2009.
  5. Squiggle Archivado el 7 de noviembre de 2009 en Wayback Machine .
  6. Manual:Administración de imágenes - MediaWiki Archivado el 18 de noviembre de 2008 en Wayback Machine . 
  7. Sin embargo, la distribución predeterminada de MediaWiki viene con ImageMagick, lo que provoca errores en la conversión de SVG a PNG, como bordes no válidos y sin fondo transparente en el archivo PNG resultante. Eliminado con $wgSVGConverter = 'rsvg'.

Enlaces

Literatura