Zum Inhalt springen

Scalable Vector Graphics

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. Mai 2005 um 17:05 Uhr durch BeeDotGee (Diskussion | Beiträge) (Programme, die SVG unterstützen: Alphabetische Liste). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Scalable Vector Graphics (SVG) ist eine Sprache zur Beschreibung zweidimensionaler Vektorgrafiken in XML. SVG unterstützt mittels SMIL Animationen. Manipulation des SVG-DOM sind mit Hilfe eingebetteter Funktionen beispielsweise via ECMAScript (JavaScript) [1] oder Tcl) möglich.

SVG wurde im September 2001 vom W3C als Empfehlung eingestuft.
Von der nächsten Generation der Webbrowser wird es wahrscheinlich nativ unterstützt werden. Zur Zeit ist dazu noch ein Plugin wie z.B. der SVG Viewer [2] von Adobe notwendig.
Eine Variante der Mozilla Suite unterstützt bereits eine Teilmenge von SVG ([3]). Opera enthält seit Version 8.0b3 ebenfalls eine partielle Implementierung.

Da SVG eine XML-Anwendung ist, kann diese mit einem Texteditor geöffnet und bearbeitet werden und wie jedes andere Dateiformat von geieigneten Programmen geöffnet werden, z. B. die freien Vektorgrafik-Programme Sodipodi und Inkscape, die es als ihr natives Datenformat einsetzen.

Eine SVG-Datei besitzt die Dateiendung *.svg und wenn diese mit gzip gepackt ist *.svgz.

SVG Grundstrukturen

Grundgerüst

Jede SVG-Datei beginnt, wie es bei XML-basierten Sprachen üblich ist, mit der XML-Deklaration und der Dokumenttypdeklaration, die den benutzten Namensraum beschreibt. Dazu wird bei letzterem ein Verweis auf die entsprechende DTD-Datei eingefügt. Danach kann schon das Starttag <svg> kommen. Die SVG-Datei wird durch das abschließende Endtag </svg> abgeschlossen.

<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>  
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     width="300" height="300">	 


</svg>	 

Beim SVG-Starttag (<svg>) wird auch gleich die Breite und Höhe des Ausgabebildschirms definiert.

Graphische Primitiven

Alle graphischen Objekte in SVG bauen auf einfachen graphischen Grundelementen auf. Komplexere Objekte sind dabei aus mehreren einfachen Objekten zusammengesetzt.

Pfad

Der Pfad ist das eigentliche Grundelement in SVG. Aus ihm können alle anderen Objekte (Kreise, Rechtecke, Polygone etc.) aufgebaut werden. Da das aber teilweise sehr umständlich ist, hat man diese häufigen Formen extra mit eigenen Beschreibungen versehen, die im Anschluss aufgeführt werden.

Der Pfad wird im Attribut (d) entweder durch Koordinatenpaare (absolut) oder durch Vektoren (relativ) beschrieben. Großbuchstaben werden von Koordinaten gefolgt, Kleinbuchstaben von Vektoren. Diese Koordinaten und Vektoren geben die Anweisung wie der Pfad gezeichnet werden soll.

  • M/m - moveto = Stift dorthin bewegen
  • L/l - lineto = mit Stift dorthin zeichnen
  • Q/q - quadratische Bézierkurve (zwei Wertepaare: ein Stützpunkt, ein Zielpunkt)
  • C/c - kubische Bézierkurve (drei Wertepaare: zwei Stützpunkte, ein Zielpunkt)


Beispiel: Der absolut beschriebene Pfad...

<path d="M 10 10 L 20 20 18 22 C 24 28 14 25 10 40 Q 20 45 15.33 60" />

ist identisch mit dem relativen

<path d="M 10 10 l 10 10 -2  2 c  6  6 -4  3 -8 18 q 10  5  5.33 20" />

Für horizontale und vertikale Linien existiert eine entsprechend vereinfachte Notation, für Ellipsen und Kreise ist eine spezielle Notation mit sieben Werten erforderlich.

  • H/h - horizontal line = horizontale Linie zeichnen (X-Wert)
  • V/v - vertical line = vertikale Linie zeichnen (Y-Wert)
  • A - elliptical arc = Bogenkurve

Kreis

Der Kreis wird mindestens durch den Radius (r) definiert. Optional kann die Position des Mittelpunktes durch die Atribute cx und cy festgelegt werden. Füllung, Art der Umrisslinie oder Transparenz werden durch das Attribut style definiert.

<circle cx="100" cy="100" r="50" />   

Ellipse

Die Ellipse wird durch die zwei Halbachsenradien definiert (rx und ry). Alle anderen Attribute sind die gleichen wie beim Kreis.

<ellipse cx="100" cy="100" rx="50" ry="20" />

Rechteck

Ein Rechteck kann auf nur eine konforme Art definiert werden. Diese Möglichkeit ist die Beschreibung durch die obere linke Ecke mit den Koordinaten (x und y) und die Breite (width) und Höhe (height).

<rect x="100" y="100" width="100" height="200" />

Möchte man die Ecken des Rechtecks abrunden, kann man das mit Hilfe der Attribute (rx und ry) bewerkstelligen.

Linie

Eine einfache gerade Linie wird durch die beiden Endpunkte in SVG beschrieben.

<line x1="100" y1="100" x2="200" y2="200" />

Polyline

Um eine Linie über mehrere Stützpunkte zu definieren, benutzt man die Beschreibung als Polylinie. Dabei werden die einzelnen Koordinatenpaare der Stützpunkte einfach fortlaufend hintereinander geschrieben. Die Linie wird von ersten Punkt aus zum zweiten gezogen und von dort weiter zum dritten Stützpunkt und so weiter.

<polyline points="100 100 200 200 300 40" />

Polygon

Ein Polygon (Vieleck) wird durch seine Eckpunkte beschrieben. Wie bei der Polyline werden auch hier alle Koordinatenpaare einfach hintereinander geschrieben.

<polygon points="100 100 100 200 150 200" />

Text

Zeichen, Text können mit Hilfe des Elements <text> definiert werden.

<text x="100" y="100" style="font-size:40">Hallo Welt!</text>

SVG-Viewer


SVG-Editoren

Freie Software

Konvertierung SVG -> Bitmap

Proprietäre Software

Programme, die SVG unterstützen


Das Vektorprogramm Freehand unterstützt SVG nicht, vermutlich weil es von der Firma Macromedia kommt, das Flash (ein Macromedia-Produkt) vorzieht.

SVG-Unterstützung in Browsern

Betriebssystem Browser Plugin Grundformen Animationen Animationen mit absoluter Zeitangabe (Wallclock) Scripting
Windows Internet Explorer nativ nein nein nein nein
Adobe SVG-Viewer ja ja nein ja
Mozilla 1.7.7/Firefox 1.0.3 nativ nein nein nein nein
Adobe SVG-Viewer instabil instabil nein instabil
Firefox 1.1 (nightly builds) nativ ja nein nein ja
Opera nativ ja ja nein ja
Linux Konqueror nativ ja nein nein nein
Mozilla 1.7.7/Firefox 1.0.3 nativ nein nein nein nein
Adobe SVG-Viewer nein nein nein nein
Firefox 1.1 (nightly builds) nativ nein nein nein nein
Opera nativ ja ja nein ja

Konferenzen

SVG Open organisierte schon dreimal eine internationale Konferenz, die sich mit allem rund um das Thema SVG beschäftigte.

Nächste SVG Open ist vom 15.-18. August 2005 in Enschede in den Niederlanden.

Varianten

  • Eine Variante von SVG ist das NEVA-Dateiformat (.nva), welches vor allem bei Sharp-Handys eingesetzt wird. Dieses Format ist noch platzsparender als SVG.

Literatur

Siehe auch