SVG-Dateien aus Designprogrammen enthalten häufig mehr Code als für die Darstellung nötig ist: Kommentare, Editorinformationen, überflüssige Gruppen, sehr viele Dezimalstellen oder feste Abmessungen.
Eine gute Optimierung reduziert diese Daten, ohne den sichtbaren Inhalt oder die Wiederverwendbarkeit zu beschädigen.
Mit dem SVG-Optimierer von Bethemesh lassen sich typische Bereinigungsschritte direkt im Browser durchführen.
Erst verstehen, dann optimieren
Der Leitfaden SVG: das Vektorformat verstehen erklärt die Grundstruktur.
Wichtige Bestandteile können sein:
viewBox,- Formen und Pfade,
- Gruppen,
- IDs und Klassen,
<defs>,- Verläufe,
- Masken,
- Clip-Pfade,
- Filter,
- Texte.
Eine Optimierung darf Referenzen zwischen diesen Elementen nicht zerstören.
Kommentare entfernen
Kommentare sind für den Browser meist nicht nötig:
<!-- exported from ... -->
Sie können in Produktionsdateien entfernt werden, sofern sie keine bewusst benötigte Dokumentation enthalten.
Metadaten entfernen
Editoren speichern teilweise Metadaten über Anwendung, Version, Dokument oder Bearbeitung.
Für die reine Webausgabe sind solche Informationen oft entbehrlich.
Das Entfernen kann Dateigröße und Informationsleck reduzieren.
Editor-spezifische Daten
Programme wie Illustrator, Inkscape oder andere Vektoreditoren können eigene Namespaces und Attribute hinzufügen.
Wenn das SVG nur ausgeliefert und nicht wieder im Originaleditor weiterbearbeitet werden soll, können viele dieser Angaben entfernt werden.
Wichtig: Bewahre eine Originaldatei für die Bearbeitung separat auf.
Leerzeichen minimieren
XML kann für Menschen formatiert sein:
<path
d="..."
fill="#2563eb"
/>
Für die Übertragung kann unnötiger Whitespace reduziert werden.
Die Einsparung ist bei kleinen Icons gering, bei vielen Dateien aber kumulativ.
Dezimalstellen reduzieren
Exportierte Koordinaten enthalten oft unnötig hohe Präzision:
12.3456789123
Eine begrenzte Rundung kann die Datei verkleinern.
Aber: Zu aggressive Rundung kann:
- Kurven verändern,
- Kanten verschieben,
- kleine Details zerstören,
- Pfade sichtbar voneinander trennen.
Deshalb sollte die Präzision schrittweise reduziert und visuell geprüft werden.
viewBox unbedingt verstehen
Ein SVG kann beispielsweise enthalten:
width="512"
height="512"
viewBox="0 0 512 512"
Für responsive Verwendung können feste width und height häufig entfernt werden, wenn viewBox korrekt vorhanden bleibt.
Ohne viewBox kann die Skalierung dagegen problematisch werden.
Feste Abmessungen nicht blind löschen
In manchen Komponenten sind feste Maße bewusst Teil des Layouts. Eine allgemeine Optimierungsregel sollte nicht automatisch jede Dimension entfernen.
Die richtige Entscheidung hängt von der Einbettung ab.
Gruppen vereinfachen
Mehrere verschachtelte <g>-Elemente können redundant sein.
Eine Gruppe darf aber Eigenschaften wie:
transform,opacity,clip-path,filter,fill
an ihre Kinder vererben.
Darum ist Zusammenführen nur sicher, wenn die Semantik erhalten bleibt.
Redundante Attribute
Wenn ein Attribut bereits geerbt wird oder dem Standardwert entspricht, kann es möglicherweise entfernt werden.
Beispiel: Wiederholtes fill auf vielen Kind-Elementen könnte auf eine Gruppe verschoben werden.
Solche Strukturänderungen sind wirkungsvoll, aber komplexer als das Entfernen von Kommentaren.
Farben verkürzen
Manche Farbwerte können kompakter dargestellt werden:
#ffffff → #fff
Auch unnötige Präzision in numerischen Farbwerten kann reduziert werden.
Der sichtbare Farbwert muss dabei identisch bleiben.
Pfade zusammenführen?
Mehrere Pfade mit gleichen Eigenschaften lassen sich manchmal kombinieren. Das kann Markup reduzieren.
Es kann jedoch die spätere Bearbeitung, Animation oder individuelle Ansprache erschweren.
Für eine Produktionsdatei kann das sinnvoll sein; für eine Designquelle möglicherweise nicht.
IDs vorsichtig behandeln
IDs werden oft referenziert:
url(#gradient1)
url(#clip1)
Wer IDs umbenennt oder entfernt, muss jede Referenz aktualisieren.
Bei Inline-SVG können außerdem ID-Kollisionen mit anderen SVGs im selben Dokument auftreten.
