![Gradiente linear SVG exibido de forma diferente por software diferente quando o atributo x2 não está presente](https://rvso.com/image/1520694/Gradiente%20linear%20SVG%20exibido%20de%20forma%20diferente%20por%20software%20diferente%20quando%20o%20atributo%20x2%20n%C3%A3o%20est%C3%A1%20presente.png)
Recentemente importei e editei um arquivo emInkscape. Salvei a imagem como “SVG otimizado” no Inkscape, mas quando abri o arquivo resultante em programas diferentes, alguns o exibiram da mesma forma que o Inkscape, enquanto outros não aplicaram um gradiente linear específico (enquanto todas as outras partes da imagem , incluindo gradientes, estavam funcionando bem).
Até agora, para a história de fundo. Condensei minha imagem original em um exemplo mínimo e determinei qual parte da fonte SVG faz com que diferentes visualizadores se comportem de maneira diferente. Este é meu arquivo SVG de exemplo:
<?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>
Isto é o que parece no Inkscape e noVisualizador de imagens GNOME (“Eye of GNOME”):
Esta é a aparência nos navegadores Firefox e Chromium:
Contudo, notei quese você adicionar o atributo x2="1"
ao <linearGradient>
elemento, a imagem terá a mesma aparência em todos esses visualizadores.
Infelizmente, não estou familiarizado o suficiente com os detalhes do formato de arquivo SVG ePadrão SVG, mas me parece claro queuma dessas interpretações do meu arquivo deve estar errada (ou seja, viola o padrão). Alguém sabe de quem é o lado certo (ou seja, para quais programas devo registrar um relatório de bug)?
Responder1
OK, então ainda não tenho certeza de qual das duas representações está correta, mas suspeito que seja a exibida pelos navegadores da web porque descobri bugs que afetam o comportamento em meu exemplo no Inkscape e no Eye do GNOME (veja abaixo).
EUterdescobri o motivo pelo qual tomei conhecimento desse problema: O arquivo SVG que abri com o Inkscape tinha um <linearGradient>
com os atributos gradientUnits="userSpaceOnUse"
e x2="1"
(assim como no meu exemplo). Ao salvar como “SVG otimizado”, o Inkscape “otimizou” o x2="1"
atributo porque interpretou isso como equivalente a x2="100%"
, que é o padrão para o x2
atributoconforme especificado pelo padrão SVGe, portanto, poderia ser omitido.No entantox2="100%"
, a interpretação de ⇔ do Inkscape x2="1"
está (provavelmente) incorreta – isso éBug do Inkscape #1153706.
Em minha pesquisa sobre esse assunto, encontrei várias inconsistências sobre como diferentes softwares lidam gradientUnits="userSpaceOnUse"
em combinação com os atributos do vetor gradiente x1
, x2
e . A seguir estão relatórios de bugs que já existiam ou que eu mesmo arquivei como resultado de minhas descobertas:y1
y2
- Inkscape –bug #1153706: “gradientUnits userSpaceOnUse usando viewport errado”
- limpar –bug nº 66: “Gradiente no traçado de recorte perdido ao otimizar com limpeza”
- librsvg (usado por software GNOME como Eye of GNOME ou GIMP) –bug #778187: “SVG: propriedade x2 em gradientes tratados incorretamente com gradienteUnits="userSpaceOnUse"”
- ImagemMagick –“gradientUnits="userSpaceOnUse" renderizado incorretamente”(parece que o ImageMagick nem tem um rastreador de bugs real…)