An Open Source project under GPL license, for converting SVG into VML and GIF and back.
Go to the Home Page of VectorConverter on SourceForge.net
Table of content
1. A brief description
Six converters were actually implemented. XSLT is used to convert SVG documents into VML. Conversion from VML and SVG into GIF is performed by the PHP graphic library. Additionally, raster images can be translated or rather included into a vector image expressed in SVG or VML.
A raster image is a grid of pixels where the color of each pixel is individually defined. Well-known standards like JPEG, GIF and PNG have shown advantages and limits of this approach. Raster images assure high resolution with accurate colors and photographic quality and are widely supported on the Web. On the other hand, they have some evident drawbacks: first of all, they are not scalable (when increasing or reducing their dimension, the quality is compromised); secondly, their internal code is not human-readable and modifiable, so that little changes force users to re-generate the whole image by scratch. Finally, a high-quality raster image has a large byte size, a key factor when transmitting it on slow internet connections.
On the contrary, vector graphics uses mathematical functions to draw shapes and lines, so that scalability, small dimensions and small footprint are guaranteed. Moreover these images are text-based and easily modifiable whenever vector information is expressed through a human-readable language such as XML. Although vector images seem to be more manageable, sizeable and portable, raster images are today by far the most frequent kind on the Web. This is mostly due to the fact that although standards for raster graphics exist that can be reliably used for publishing on the web, no comparably successful standard exist for vector graphics.
Actually different vector languages have been proposed in the last years but none of them has really been successful as
its raster-oriented cousins. PGML (Precision Graphics Markup Language) [ PGML
] is an XML language proposed by Adobe
and IBM on April 1998, based on the imaging model of postscript and PDF. Subsequently, new functionalities have
been added towards a complete integration with other web languages and applications. VML (Vector Markup
Language) [ VML
] was proposed by Microsoft and Macromedia in May 1998. Similar to HTML as to internal structure and
syntax, it relies on CSS for the definition of presentational aspects. VML documents do not actually exist as stand-alone
resources, but they have to be coded within an HTML document, through elements and attributes belonging to a given
The rivalry between PGML and VML has been tackled by the W3C in the 1998, when an initiative started to define a
new format partially based on both proposals: SVG [ SVG1.0
]. SVG strengthens some existing functionalities and offers many
additional features such as animations, advanced management of text fragments and so on. With SVG, even
accessibility requirements are considered, for the first time in the graphic community: metainformation can be added to
the code in order to describe the graphical elements and give alternative descriptions for disabled users. The
development of SVG has not stopped yet: SVG 1.1 [ SVG1.1
] provides modularization, Mobile SVG Profiles customizes
the language for mobile devices and SVG 1.2 [ SVG1.2
] promises to add new interesting functionalities.
Among the others proposals, only VML seems to be a strong antagonist of SVG: being substantially a Microsoft product
directly usable with Internet Explorer and MS Office documents, VML is still used in some contexts and, in some cases,
more successful than SVG. On the contrary, PGML is now (quite) completely dismissed.
Interoperability between SVG and VML is therefore important for allowing complete support for vector graphics across
implementations, operating systems and media types. VML images can be created with little effort by using Microsoft
tools (images editors are integrated within MS Word or MS Power Point, too) but require proprietary viewers; similarly
SVG, even if published as an public standard, requires specific tools to display images: a bidirectional and automatic
conversion would allow users to draw and display images regardless of their original format. Moreover average users
can use well-known applications, such as MS Word or MS Power Point, to create SVG images without the need to
master complex graphic tools or technologies.
A direct conversion further simplifies and speeds up the re-use of existing material. Using legacy VML images in an
SVG-based environment, today, is a manual and difficult task, in particular for inexpert users. On the contrary, more
quick and correct results can be achieved by an automatic converter, in charge of performing translations without
manual user interventions.
Even conversions between raster and vector graphics are worth further investigations. Producing raster from vector
images is really useful to make up for the inadequate support of vector images implemented in current applications:
VML has the same diffusion problems of any other proprietary language, and even SVG, although standard is not yet
widely supported. The inverse conversion, from raster to vector, has evident and undeniable benefits but it is still far
from being fully feasible.
This tool allows easy and automatic conversion between SVG and VML and
a raster format, GIF and makes good translations between the vector languages despite their substantial different
functionalities and expressivity, and can also create, when needed, raster images for unsupported features: actually six
conversions are performed, back and forth each of these formats (although the conversion from GIF to SVG or VML is
really just an inclusion).
Vector Converter paper
A more accurate Vector Converter description can be found in this paper
, wrote by Angelo Di Iorio, Fabio Vitali and Gianluca Zonta.
2. What can Vector Converter translate
At the present moment, March 2007, Vector Converter does not consider some features and does not recognize some properties of VML and of SVG. The following tables specify what the tool can effectively translate at the moment.
SVG -> *
This table describes what we translate starting off an SVG.
| Object || SVG->VML || SVG->GIF |
| SVG || * || |
| G || * || |
| Dimensions and measures || * || * |
| DEFS, SYMBOL e USE || * || * |
| DESC, TITLE || * || |
| IMAGE || * || * |
| STYLE, @STYLE || * || * |
| TRANSFORM || * || * |
| PATH || * || * |
| Predefined figure (rect,...) || * || * |
| TEXT, TSPAN, TREF, TEXTPATH || * || * |
| @STROKE, @FILL || * || * |
| GRADIENT || * || |
| OPACITY || * || |
| A || * || |
| PATTERN || || |
| MARKER || || |
| MASKING || || |
| FILTER || || |
| SCRIPT || || |
| Animations || || |
| FONT || || |
- ELEMENT : SVG translated element
- @ATTRIBUTE : SVG translated attribute
- Objects description : a group of SVG elements
- * : implemented conversion from SVG
VML -> *
This table describes what we translate starting off a VML.
| Object || VML->SVG || VML->GIF |
| GROUP || * || * |
| SHAPE, SHAPETYPE || * || * |
| PATH, @PATH || * || * |
| STROKE, FILL, @STROKE and @FILL || * || * |
| TEXTBOX || * || * |
| TEXTPATH || * || * |
| IMAGE and IMAGEDATA || * || * |
| Predefined figure (rect,...) || * || * |
| BACKGROUND || || |
| SHADOW || || |
| FORMULAS and F || || |
| HANDLES and H || || |
| Dimensions || * || * |
| @STYLE || * || * |
| Transformations (rotate,...) || * || * |
- ELEMENT : VML translated element
- @ATTRIBUTE : VML translated attribute
- Objects description : a group of VML elements
- * : implemented conversion from VML
3. Conversion samples
The following images are intended to show what Vector Converter can translate.
Example of conversion from VML to SVG
Example of conversion from SVG to VML
Example of conversion from SVG to GIF
- [SVG1.1] Ferraiolo J., Jun F., Jackson D. (editors), "Scalable Vector graphics (SVG) 1.1 Specification", W3C Recommendation, 14 January 2003, http://www.w3.org/Graphics/SVG
-- 07 June 2007