Gradiente linear SVG exibido de forma diferente por software diferente quando o atributo x2 não está presente

0

Eu importei e editei recentemente um arquivo no Inkscape . Salvei a imagem como “SVG otimizado” no Inkscape, mas quando abri o arquivo resultante em programas diferentes, alguns exibiam o mesmo que o Inkscape, enquanto outros não aplicavam 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. Eu resumi minha imagem original em um exemplo mínimo e determinei qual parte da origem do SVG faz com que diferentes espectadores se comportem de maneira diferente. Este é o 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>

Isso é o que parece no Inkscape e no visualizador de imagens do GNOME (“Eye of GNOME”) :

IstoéoqueparecenosnavegadoresFirefoxeChromium:

Noentanto,noteiquesevocêadicionaroatributox2="1" ao elemento <linearGradient> , a imagem terá a mesma aparência em todos esses visualizadores .

Infelizmente, não estou familiarizado com os detalhes do formato de arquivo SVG e com o padrão SVG , mas Parece claro para mim que uma dessas interpretações do meu arquivo deve estar errado (ou seja, viola o padrão) . Alguém sabe de quem é o lado certo (por exemplo, para quais programas devo enviar um relatório de bug)?

    
por Socob 02.02.2017 / 14:32

1 resposta

0

OK, então eu não estou totalmente certo ainda qual das duas representações está correta, mas eu suspeito que é o exibido pelos navegadores da web, porque eu descobri erros que afetam o comportamento no meu exemplo em ambos Inkscape e Eye of GNOME (veja abaixo).

Eu tenho descoberto o motivo de como eu estava ciente desse problema: O arquivo SVG que eu tinha aberto com o Inkscape tinha um <linearGradient> com os atributos gradientUnits="userSpaceOnUse" e x2="1" (como no meu exemplo). Ao salvar como "SVG otimizado", o Inkscape "otimizou" o atributo x2="1" porque interpretou isso como equivalente a x2="100%" , que é o padrão para o atributo x2 conforme especificado pelo padrão SVG e, portanto, pode ser omitido. No entanto , a interpretação do Inkscape de x2="100%"x2="1" é (provavelmente) incorreta - isso é Inkscape bug # 1153706 .

Em minha pesquisa sobre esse problema, encontrei várias inconsistências sobre como diferentes softwares lidam com gradientUnits="userSpaceOnUse" em combinação com os atributos de vetor de gradiente x1 , x2 , y1 e y2 . A seguir, relatos de bugs que já existiam ou que eu arquivei como resultado de minhas descobertas:

por 05.02.2017 / 03:15