Scalable Vector Graphics

Scalable Vector Graphics (SVG) is an specification and  for describing two-dimensional, both static and. SVG can be purely declarative or may include scripting. Images can contain hyperlinks using outbound simple s. It is an created by the 's.

Overview
SVG was developed during the period 1999–2000 by a group of companies within the after the competing standards  (developed from Adobe's ) and  (developed from Microsoft's ), both submitted to W3C in 1998, could not gain enough support for. SVG was initially based on both those formats.

SVG allows three types of graphic objects:
 * (see Outline image, at right)
 * (see Bitmap image, at right)
 * Text

Graphical objects can be grouped, styled, transformed, and composited into previously objects. SVG does not directly support z-indices that separate drawing order from document order for objects, which is a drawback with respect to other vector markup languages like. Text can be in any suitable to the application, which enhances searchability and  of the SVG graphics. The feature set includes nested s, s, s, s, template objects and.

Printing
While being primarily designated as a, the specification is also designed with the basic capabilities of a , like. It contains provisions for rich graphics, and is also compatible with the specification's properties for styling purposes; thus, unlike  and  which are layout-oriented languages, SVG is a fully presentational language. A much more print-specialized subset of SVG is currently a W3C Working Draft.

Scripting and animation
SVG drawings can be dynamic and interactive. Time-based modifications to the elements can be described in, or can be programmed in a language (e.g., ). The W3C explicitly recommends SMIL as the standard for animation in SVG, however it is more common to find SVG animated with ECMAScript because it is a language that many developers already understand, and it is more compatible with existing renderers. A rich set of s such as onmouseover and onclick can be assigned to any SVG graphical object.

Compression
SVG images, being XML, contain many repeated fragments of text and are thus particularly suited to by, though other compression methods may be used effectively. Once an SVG image has been compressed by gzip it may be referred to as an "SVGZ" image; with the corresponding filename extension. The resulting file may be as small as 20% of the original size.

Development history
SVG was developed by the  starting in 1998, after  and  introduced  (VML) whereas  and  submitted a competing format known as. The was chaired by  of the W3C.


 * SVG 1.0 became a  on,.
 * SVG 1.1 became a W3C Recommendation on, . The SVG 1.1 specification is modularized in order to allow subsets to be defined as profiles. Apart from this, there is very little difference between SVG 1.1 and SVG 1.0.
 * SVG Tiny and SVG Basic (the Mobile SVG Profiles) became W3C Recommendations on, . These are described as profiles of SVG 1.1.
 * SVG Tiny 1.2 became a W3C Candidate Recommendation on, .  SVG Full 1.2 is a W3C Working Draft. SVG Tiny 1.2 was initially released as a profile, and later refactored to be a complete specification, including all needed parts of SVG 1.1 and SVG 1.2. A similarly refactored draft for SVG 1.2 Full has not yet been released. A notable feature addition in the SVG Full 1.2 W3C Working Draft (absent from SVG Tiny 1.2) is syntax for multipage documents; the semantics of multiple pages with respect to non-hardcopy rendering are however undefined.

Mobile profiles
Because of industry demand, two mobile profiles were introduced with SVG 1.1: SVG Tiny (SVGT) and SVG Basic (SVGB). These are subsets of the full SVG standard, mainly intended for s with limited capabilities. In particular, SVG Tiny was defined for highly restricted mobile devices such as s, and SVG Basic was defined for higher-level mobile devices, such as.

Neither mobile profile includes support for the full DOM, while only SVG Basic has optional support for scripting, but because they are fully compatible subsets of the full standard most SVG graphics can still be rendered by devices which only support the mobile profiles.

Example
SVG is an application of. An SVG file is therefore a simple, which can be viewed and edited as with any other markup.



Filter effects
A filter effect consists of a series of graphics operations that are applied to a given source vector graphic to produce a modified result.

Filter effects are defined by filter elements. To apply a filter effect to a graphics element or a container element the 'filter' property is set on a given element. Each 'filter' element contains a set of filter primitives as its children. Each filter primitive performs a single fundamental graphical operation (e.g., a or a lighting effect) on one or more inputs, producing a graphical result. Because most of the filter primitives represent some form of image processing, in most cases the output from a filter primitive is a single bitmap image (however, it will be regenerated if a higher resolution is called on).

The original source graphic or the result from a filter primitive can be used as input into one or more other filter primitives. A common application is to use the source graphic multiple times. For example, a simple filter could replace one graphic by two by adding a black copy of original source graphic offset to create a. In effect, there are now two layers of graphics, both with the same original source graphics.

List of SVG filter primitives
The following table lists the filter primitives available in SVG 1.0 and SVG 1.1. SVG Tiny does not support filter effects, while SVG Basic supports only those filter primitives indicated by SVGB.

Support for SVG in web browsers
The use of SVG on the web is in its infancy; there is a great deal of inertia due to the long-time use of pure raster formats and other formats like or s, and browser support for SVG is still uneven. Web sites which serve SVG images typically also provide the images in a raster format, either automatically by  or allowing the user to directly choose the file.

Native support
There are several advantages to native support, among which are no need for the installation of a plugin, the ability to freely mix SVG with other formats in a single document, and rendering scripting between different document formats considerably more reliably. At this time all major browsers have committed to some level of SVG support except for Internet Explorer, yet the implementations are lacking in consistency and completeness. See for further details.


 * The web browser (since 8.0) has support for the SVG 1.1 Tiny specification while Opera 9 includes SVG 1.1 Basic support and some of SVG 1.1 Full. Since 9.5 alpha 1 Opera has partial SVG Tiny 1.2 support.
 * Browsers based on the version 1.8 (such as, , ,  and ), all have incomplete support for the SVG 1.1 Full specification. The Mozilla site has an overview of the modules which are supported in Firefox 1.5 and an overview of the modules which are in progress in the development version of Firefox. Gecko 1.9 will be included in the upcoming  and will add support for more of the SVG specification (including some filters).
 * 's has a fairly complete SVG plugin called . KSVG2 is slated to be rolled into KDE 4 core which could make it native rendering for Konqueror some time in the future. KDE 4 will also feature system-wide support and use of SVG for graphics. Elsewhere in KDE the format is finding greater use, and from version 3.4 onwards SVG  are supported.
 * 's browser ported KSVG2 into, initiating work on incorporating native support of SVG into Safari.   of Safari and the Safari 3.0 beta include SVG support.  The Safari beta's SVG support still is not perfect, though.
 * 's 5.5 browser, which is based on a later version of Apple's / than that used in the current public release of Safari, has partial support for SVG.
 * has partial SVG support.

Plugin support
In current versions of a  is needed to view SVG content.

The most widely available SVG plugin on the desktop is from and supports most of SVG 1.0/1.1. Adobe's SVG download page now says Adobe will discontinue support for Adobe SVG Viewer on January 1, 2008." while its End Of Life page now says "Please note that Adobe has announced that it will discontinue support for Adobe SVG Viewer on January 1, 2009." . For Safari, the Adobe plugin supports only the platform. For Safari on Intel machines, Safari must run under  for the Adobe plugin to work.

Another plugin, called the Renesis Player, exists for Internet Explorer and the platform. Renesis aims to support full SVG 1.2, as well as interactivity capabilities. There are indications that a plugin may also be in the works. The Renesis version 0.7 is available as of July 4, 2007.

A plugin was once offered from.

The SVG Map Consortium released a plugin on September 6, 2007 that runs in Internet Explorer for Windows.

Support in applications
Images are usually automatically rasterised using a library such as, which provides a quick but incomplete implementation of SVG, or , which implements nearly all of SVG 1.1 but requires the. Some viewers are listed in below.
 * is a / SVG drawing program for, and.
 * The can be used by Java programs to render, generate, and manipulate SVG graphics.
 * allows import and export of SVG drawings.
 * The project has had integrated SVG support throughout the desktop since.
 * Images drawn in can be exported as SVG. Import filters are available to import SVG images into  documents.
 * supports both the import and export of SVG images.
 * has an SVG export and import filter.
 * Sketsa is a cross-platform SVG drawing package.
 * has an SVG export and import filter in its free/open source Linux version.
 * has very weak SVG support.
 * can save files in the SVG format as well as the SVG compressed format. Graphs created in or figures from  can be cut and pasted into  documents.
 * EVE (Embedded Vector Editor) can import and export vector and SVG graphics.
 * IVEO Viewer is a self-voicing tactile-audio system with native SVG support.
 * Portal generates diagrams exclusively in SVG.
 * The Flame Project is an -like editor to create SVG animation on Linux and Windows.

Also some programing languages and scientific plotting programs can be used to create SVG plots:
 * figures can be exported to SVG with help of plot2svg function available on MATLAB File Exchange
 * figures can be exported to SVG with help of Packages: RSvgDevice or Cairo.
 * can save plots to SVG. See examples at Commons:Category:Gnuplot diagrams

Mobile support
On mobile, the most popular implementations for mobile phones are by and, while for PDAs, Bitflash and  have implementations. by optionally supports SVG Tiny since version 1.1. At the 2005 conference,  demonstrated a mobile implementation of SVG Tiny 1.1 for the CLDC platform. Mobile SVG players from Ikivo and BitFlash come pre-installed, i.e., the manufacturers burn the SVG player code in their mobiles before shipping to the customers. Mobiles also can include full web browsers (such as and the 's Safari) which include SVG support.

The level of SVG Tiny support available varies from mobile to mobile, depending on the manufacturer and version of the SVG engine installed. Many of the new mobiles support additional features beyond SVG Tiny 1.1, like gradient and opacity; this standard is often referred as SVGT 1.1+.

has built-in support for SVG. For example, all icons are rendered using the platform's SVG engine. Nokia has also led the JSR 226: Scalable 2D Vector Graphics API expert group which defines Java ME API for SVG presentation and manipulation. This API has been implemented in S60 Platform 3rd Edition Feature Pack 1 onward. Some Series 40 phones also support SVG (such as ).

Most phones beginning with  (by release date) support SVG Tiny 1.1. Рhones beginning with also support such features as opacity and gradients. Phones with -8 have support for JSR 226.