SVG auf der Seite, dem Telefon und im Druck
Eine SVG-Datei zu schreiben und sie von einem bestimmten Programm zeichnen zu lassen sind zwei verschiedene Probleme. Das Format war spezifiziert, Jahre bevor sich sicher annehmen ließ, dass der Browser eines Besuchers es zeigen würde.
Browser
Konqueror war der erste Browser, der SVG in einer veröffentlichten Version unterstützte, Version 3.2, im Februar 2004. Bis 2011 hatte jeder große Browser für den Desktop, und viele kleinere, ein gewisses Maß an Unterstützung. Die Implementierungen waren nicht gleich weit fertig. Ein paar Einzelheiten aus den unbequemen Jahren verdienen es, behalten zu werden, weil alte Seiten noch die alten Gewohnheiten benutzen.
Firefox von 1.5 bis 3.6, und einige andere Browser jener Zeit, zeigten SVG innerhalb einer Seite nur, wenn es mit object oder iframe eingebettet war, nicht mit dem gewöhnlichen Element img. SVG ließ sich auch über XML-Namensräume in XHTML aufnehmen. Tim Berners-Lee, der das Web erfunden hat, kritisierte den frühen Internet Explorer öffentlich dafür, dass er das Format überhaupt nicht unterstützte. Opera hat SVG Tiny seit Version 8. Opera 9 fügte SVG Basic hinzu und einen Teil der vollen Sprache 1.1. Opera 9.5 unterstützte Tiny 1.2 teilweise und zeichnete komprimierte SVGZ-Dateien. Browser auf der Engine Gecko, Firefox darunter, unterstützen die volle Spezifikation 1.1 seit 2005 unvollständig. Gecko 1.9, in Firefox 3.0, fügte ein weiteres Stück hinzu, Filter eingeschlossen. Pale Moon, auf der Engine Goanna, einer Abspaltung von Gecko, unterstützt SVG. Browser auf WebKit, darunter Safari, Chrome und OmniWeb, haben seit 2006 eine unvollständige Unterstützung des vollen 1.1. Amaya hatte eine teilweise Unterstützung.
Internet Explorer 8 und älter zeichnen kein SVG. IE9, veröffentlicht am 14. März 2011, unterstützt den grundlegenden Merkmalssatz. IE10 fügte die Filter von SVG 1.1 hinzu. Microsoft Edge Legacy unterstützt SVG 1.1. Der Maxthon Cloud Browser ebenso. Native Unterstützung, sobald sie tatsächlich vollständig ist, hat drei Vorteile, die Plugins nie ganz geliefert haben. Nichts Zusätzliches muss installiert werden. SVG lässt sich in einem Dokument frei mit anderem Inhalt mischen. Rendern und Skripten werden erheblich verlässlicher, weil eine Engine arbeitet und nicht zwei miteinander verhandeln.
Telefone
Auf einem Telefon war die Unterstützung oft auf SVG Tiny begrenzt, oder sie war durch das Betriebssystem begrenzt und nicht durch die Ambitionen des Browsers. Adobe Flash Lite konnte Tiny ab Version 1.1 wahlweise zeichnen. Auf der Konferenz SVG Open 2005 zeigte Sun eine Implementierung von Tiny 1.1 für die Connected Limited Device Configuration, eine kleine Java-Plattform. Opera Mobile und der Browser auf dem iPhone enthielten SVG. Der Browser von Android tat das vor Version 3.0, Honeycomb, nicht, obwohl dieser Browser WebKit benutzte. Vor Honeycomb war Firefox Mobile 4.0 Beta 2 der erste auf Android laufende Browser, der SVG standardmäßig unterstützte.
Wie viel von Tiny ein gegebenes Telefon implementierte, hing von der Engine ab, mit der es ausgeliefert wurde. Viele spätere Telefone ergänzten Verlauf und Deckkraft über Tiny 1.1 hinaus. Mitunter wurde das „SVGT 1.1+“ genannt. Eine solche Norm gibt es nicht. BlackBerry hat Tiny 1.1 seit OS 5.0 eingebaut, und der auf WebKit beruhende Browser Torch behielt es in OS 6 und 7. Die Plattform S60 von Nokia zeichnet mit SVG. Symbole auf dieser Plattform werden im Allgemeinen von der SVG-Engine gerendert. Nokia leitete die Gruppe, die JSR 226 schrieb, die API von Java ME zum Darstellen und Bearbeiten von SVG, implementiert ab S60 3rd Edition Feature Pack 1. Einige Telefone der Series 40, darunter das Nokia 6280, zeichnen es ebenfalls. Die meisten Telefone von Sony Ericsson ab dem K700 unterstützen Tiny 1.1. Ab dem K750 kommen Deckkraft und Verläufe hinzu. Telefone auf der Java Platform 8 von Sony Ericsson unterstützen JSR 226. Windows Phone unterstützt SVG seit Version 7.5. Geräte von Motorola, Samsung, LG und BenQ-Siemens sind ebenfalls damit ausgeliefert worden. eSVG, eine Bibliothek zum Rendern für eingebettete Geräte, taucht auf einigen dieser Plattformen auf.
2003 übernahm die 3GPP, die Partnerschaft, die die mobile Telekommunikation spezifiziert, SVG Tiny als verbindliches Vektorformat für die nächste Generation von Telefonen. Tiny ist vorgeschrieben und Basic optional, für Multimedia-Nachrichten und für paketvermitteltes Streaming. Später wurde es für Vektorgrafik im IP Multimedia Subsystem vorgeschrieben. Keines der mobilen Profile enthält das volle Dokumentobjektmodell (DOM). Nur Basic hat optionales Skripten. Weil die Profile echte Teilmengen sind, zeichnet ein großer Teil des gewöhnlichen SVG auch auf einem Gerät, das nur das Profil implementiert. Tiny 1.2 fügt ein Mikro-DOM hinzu, Gestaltung und Skripten, und einige Merkmale, die 1.1 nicht hat, darunter Striche, die nicht mit der Zeichnung skalieren. Einige Implementierungen von 1.1, darunter Opera, Firefox und WebKit, haben diese Striche trotzdem aufgenommen. Als Browser auf dem Telefon und Browser auf dem Desktop denselben Code zu teilen begannen, verdrängte das volle SVG 1.1 in der Praxis Tiny 1.2. Das kleine Profil war eine Brücke gewesen. Die Brücke war nicht mehr der Weg.
Kompression, Bearbeitung und andere Programme
SVG ist XML, also wiederholt es sich. Ein Tagname, der zweihundertmal vorkommt, ist ein Geschenk an einen verlustfreien Kompressor. Ist die Datei mit gzip komprimiert, heißt sie SVGZ und benutzt die Endung .svgz. Ein konformer Betrachter für SVG 1.1 zeigt die komprimierte Datei an. Eine SVGZ hat typischerweise 20 bis 50 Prozent der ursprünglichen Größe. Das W3C veröffentlicht SVGZ-Dateien als Teil seiner Konformitätstests, sodass „öffnet der Betrachter eine komprimierte Datei“ eine Frage mit einer bekannten richtigen Antwort ist.
Das Markup lässt sich von Hand schreiben. Es geht auch ein Vektoreditor: Inkscape, Adobe Illustrator, Adobe Animate, CorelDRAW. Dieselben Programme können das Ergebnis nach PNG rastern. Inkscape und Boxy SVG können ein Rasterbild zu Bézier-Kurven nachzeichnen, mit Engines wie potrace, autotrace und imagetracerjs. Die Nachzeichnung ist eine neue Zeichnung, nicht die Fotografie in einer geschickteren Speicherung. Feines Detail wird zu einer politischen Entscheidung darüber, wie viele Kurven behalten werden sollen.
Bibliotheken zeichnen SVG innerhalb anderer Programme. librsvg ist bei GNOME seit 2000 in Gebrauch. Batik ist die Implementierung in Java. ThorVG, von 2020, zielt auf leichtere Systeme. ImageMagick, der Konverter für die Kommandozeile, benutzt librsvg und kann auf der anderen Seite die üblichen Rasterformate schreiben. Für eine Anwendung im Web ist der wichtige Modus Inline-SVG: ein Element svg im HTML-Dokument. Die Zeichnung teilt dann die Ereignisse der Seite und deren CSS. Deshalb benutzt man SVG für Teile der Oberfläche und für Illustrationen. Ein Knopf, der eine Zeichnung ist, lässt sich mit demselben Stylesheet gestalten wie der Text daneben.
Außerhalb des Browsers ist SVG in die Textverarbeitung eingebettet, LibreOffice als ein Fall, und in das Desktop-Publishing, Scribus als ein Fall. gnuplot kann es ausgeben. Pfade lassen sich in den GIMP oder in Blender importieren. Microsoft 365 und Office 2019 können SVG importieren, exportieren und bearbeiten. Auf Systemen von Apple lautet der Typbezeichner public.svg-image, und er entspricht sowohl public.image als auch public.xml, was das ganze Format knapp zusammenfasst. Es gibt sogar ein Verfahren vom Küchentisch, das mit der Verketten-Funktion (concatenate) einer Tabellenkalkulation Zahlen und Tagnamen zu einem fertigen SVG-Dokument klebt. Es funktioniert. Es erinnert daran, dass die Datei Text ist.
Unter Windows zeichnet der Datei-Explorer seit Jahren SVG-Miniaturen nicht von selbst. Ergänzt wird eine Erweiterung für die Vorschau, oder benutzt wird eine Dateiverwaltung, die das Format schon versteht. Ein Browser ist eine andere Frage. Der Browser zeichnet die Datei. Die Shell des Desktops oft nicht, und die beiden Tatsachen überraschen jeden, der ihnen am selben Nachmittag begegnet.
Ein Dokument, keine Momentaufnahme
SVG kann ein Skript beherbergen oder ein Stylesheet, so wie ein HTML-Dokument es kann. Zum Problem wird das, wenn eine fremde Person eine SVG hochladen kann, ein Profilbild zum Beispiel, und die Seite den Upload als gewöhnliches Bild behandelt. Wird diese Datei danach als Hintergrund in CSS benutzt, oder als Logo, oder in einer Galerie, kann der Browser das Skript ausführen, wenn er das Bild lädt. Eine bösartige Datei kann den Browser lahmlegen, indem sie ein absurdes Maß an Arbeit erzwingt. Sie kann auch zu eingeschleustem HTML führen (HTML Injection) und zu seitenübergreifendem Skripten (Cross-Site-Scripting). Das W3C stellt deshalb zusätzliche Anforderungen an den Fall, in dem SVG schlicht als Bild benutzt wird.
Inline-SVG, ein Element svg, das Teil der Seite ist, ist ein anderer Fall. Das W3C behandelt ihn als geringere Überraschung, weil der Inhalt Teil eines größeren Dokuments ist und Skript auf dieser Seite erwartet wird. Die praktische Regel ist kurz. Eine hochgeladene SVG nicht annehmen und als vertrauenswürdiges Bild wieder ausliefern, sofern die Datei nicht geprüft worden ist. Die Einzelheiten dieser Prüfungen stehen in den Regeln des W3C für SVG als Bild.
Ein Verwandter unter den Normen verdient eine Nennung. MPEG-4 Teil 20, Lightweight Application Scene Representation und das Simple Aggregation Format, beruht auf SVG Tiny. Veröffentlicht wurde es als ISO/IEC 14496-20:2006. Es fügt hinzu, was ein mobiler Dienst haben will: dynamische Aktualisierungen, eine binäre Kodierung, einen kompakten Weg, Schriften mitzuführen. SVG erscheint auch in MPEG-4 Teil 11, in der textuellen Darstellung XMT. Das Format für das Web und das Format für mobiles Multimedia sind Verwandte. Was die Datei enthält, ist so oder so dasselbe Vokabular. Wo Grafik zum Gebrauch kommt, ist der ältere Grund, aus dem sich das Normieren gelohnt hat: ein kleines, scharfes Bild, wiederholt überall, wo eine Seite ein Zeichen braucht.
