![Der lineare SVG-Farbverlauf wird von unterschiedlicher Software unterschiedlich angezeigt, wenn das x2-Attribut nicht vorhanden ist](https://rvso.com/image/1520694/Der%20lineare%20SVG-Farbverlauf%20wird%20von%20unterschiedlicher%20Software%20unterschiedlich%20angezeigt%2C%20wenn%20das%20x2-Attribut%20nicht%20vorhanden%20ist.png)
Ich habe vor kurzem eine Datei importiert und bearbeitet inInkscape. Ich habe das Bild in Inkscape als „optimiertes SVG“ gespeichert, aber als ich die resultierende Datei in verschiedenen Programmen öffnete, wurde es in einigen Programmen genauso angezeigt wie in Inkscape, während andere keinen bestimmten linearen Farbverlauf anwendeten (während alle anderen Teile des Bildes, einschließlich der Verläufe, einwandfrei funktionierten).
Soviel zur Vorgeschichte. Ich habe mein Originalbild zu einem Minimalbeispiel komprimiert und ermittelt, welcher Teil der SVG-Quelle bei verschiedenen Betrachtern zu unterschiedlichem Verhalten führt. Dies ist meine Beispiel-SVG-Datei:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" height="982" width="982" version="1.1"
viewBox="0 0 982 982">
<defs>
<linearGradient id="a" gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-62.075 1070.8 1070.8 62.075 521.8 -42.09)">
<stop stop-color="#bbb9c2" offset="0"/>
<stop stop-color="#3f3" offset="1"/>
</linearGradient>
</defs>
<path fill="url(#a)" d="m0 491.11c0 271.12 219.78 490.89 490.85 490.89 271.13 0 490.92-219.77 490.92-490.89 0-271.07-219.79-490.86-490.92-490.86-271.07 0-490.85 219.79-490.85 490.86"/>
</svg>
So sieht es in Inkscape aus und dieGNOME-Bildbetrachter („Eye of GNOME“):
So sieht es in den Webbrowsern Firefox und Chromium aus:
Ich bemerkte jedoch, dassWenn Sie das Attribut x2="1"
zum <linearGradient>
Element hinzufügen, sieht das Bild in allen diesen Viewern gleich aus.
Leider bin ich nicht vertraut genug mit den Details des SVG-Dateiformats und derSVG-Standard, aber es scheint mir klar, dasseine dieser Interpretationen meiner Datei muss falsch sein (d. h. gegen den Standard verstoßen). Weiß jemand, wer Recht hat (also für welche Programme ich einen Fehlerbericht einreichen sollte)?
Antwort1
OK, ich bin mir also noch nicht ganz sicher, welche der beiden Darstellungen richtig ist, aber ich vermute, dass es die ist, die von den Webbrowsern angezeigt wird, da ich sowohl in Inkscape als auch in Eye of GNOME Fehler entdeckt habe, die das Verhalten in meinem Beispiel beeinträchtigen (siehe unten).
ICHhabenhabe herausgefunden, warum ich überhaupt auf dieses Problem aufmerksam geworden bin: Die SVG-Datei, die ich mit Inkscape geöffnet hatte, hatte ein <linearGradient>
mit den Attributen gradientUnits="userSpaceOnUse"
und x2="1"
(genau wie in meinem Beispiel). Beim Speichern als „optimiertes SVG“ hat Inkscape das Attribut „wegoptimiert“, x2="1"
weil es dies als gleichwertig mit interpretiert hat x2="100%"
, was die Standardeinstellung für das x2
Attribut istgemäß SVG-Standardund könnte daher weggelassen werden.Jedoch, Inkscapes Interpretation von x2="100%"
⇔ x2="1"
ist (wahrscheinlich) falsch – dies istInkscape-Fehler #1153706.
Bei meinen Recherchen zu diesem Problem bin ich auf verschiedene Inkonsistenzen gestoßen, was die Handhabung gradientUnits="userSpaceOnUse"
der Gradientenvektorattribute x1
, x2
, y1
und in unterschiedlicher Software betrifft y2
. Im Folgenden finden Sie Fehlerberichte, die entweder bereits vorhanden waren oder die ich aufgrund meiner Erkenntnisse selbst eingereicht habe:
- Inkscape –Fehler Nr. 1153706: „gradientUnits userSpaceOnUse verwendet falsches Ansichtsfenster“
- durchkämmen –Fehler Nr. 66: „Farbverlauf im Beschneidungspfad geht bei der Optimierung mit Scour verloren“
- librsvg (wird von GNOME-Software wie Eye of GNOME oder GIMP verwendet) –Fehler Nr. 778187: „SVG: Eigenschaft x2 bei Farbverläufen wurde mit gradientUnits="userSpaceOnUse" falsch behandelt“
- ImageMagick –„gradientUnits="userSpaceOnUse" falsch gerendert“(es scheint, als ob ImageMagick nicht einmal einen richtigen Bugtracker hat …)