Хорошо, так что я не совсем уверен, какое из этих двух представлений является правильным, но я подозреваю, что это то, что отображается в веб-браузерах, потому что я обнаружил ошибки, влияющие на поведение в моем примере как в Inkscape, так и в Eye of GNOME (см. ниже).
Я уже понял, в чем причина того, как я был проинформирован об этой проблеме, в первую очередь: Файл SVG я открыл с помощью Inkscape был <linearGradient>
с атрибутами gradientUnits="userSpaceOnUse"
и x2="1"
(так же, как в моем примере). При сохранении в качестве «оптимизированного SVG» Inkscape «оптимизировал» x2="1"
атрибут, поскольку он интерпретировал его как эквивалентный x2="100%"
, который является x2
атрибутом по умолчанию, как указано в стандарте SVG, и, следовательно, может быть опущен. Однако, интерпретация Inkscape по x2="100%"
⇔ x2="1"
это (возможно) неправильно - это Inkscape ошибка # 1153706 .
В ходе своих исследований по этому вопросу, я столкнулся с различными несогласованности о том, как различное программное обеспечение обрабатывает gradientUnits="userSpaceOnUse"
в сочетании с атрибутами вектор градиента x1
, x2
, y1
и y2
. Ниже приведены сообщения об ошибках, которые либо уже существуют, либо которые я сам подал в результате своих выводов:
- Inkscape - ошибка # 1153706: «GradientUnits userSpaceOnUse использует неправильный видовой экран»
- scour - ошибка № 66: «Градиент на пути отсечения теряется при оптимизации с помощью scour»
- librsvg (используется программным обеспечением GNOME, таким как Eye of GNOME или GIMP) - ошибка # 778187: «SVG: свойство x2 для градиентов обрабатывается некорректно с градиентомUnits =" userSpaceOnUse "»
- ImageMagick - «GrainUnits =« userSpaceOnUse »отображается неправильно» (кажется, что ImageMagick даже не имеет реального средства отслеживания ошибок…)