LINUX.ORG.RU

SVG некорректно рендерится.

 , , ,


0

1

Есть простенькая SVG картинка, нарисованная в новом Inkscape. Она корректно выглядит в Inkscape и Firefox-е, но некорректно отображается в хроме и eog-е. Хочется понять кто виноват и что делать (куда писать багрепорт). Возможно во всяких арчах и федорах уже пофиксили эту проблему, но у меня Ubuntu 16.04.1 со всеми обновлениями.

Файл сохранял по-всякому и в формате «Inkscape SVG» и в формате «простой SVG», разницы в рендеринге не заметил.

Файл прилагаю, это не секрет.

UPD

Решил техническую часть, благодаря проекту RazrFalcon-а, однако багрепорт написать стоит. Вопрос куда остался открытым.

★★★★★

Она корректно выглядит в Inkscape и Firefox-е, но некорректно отображается в хроме и eog-е.

Так у них у всех свои реализации рендера. Не удивительно, что у всех по разному.

Советую прогнать через svgcleaner. Он фиксит отрисовку вашего файла.

В глаза бросается только кривые градиенты. У градиента должно быть как минимум 2-е точки, а у вас она вечно одна. Видимо баг нового ink.

UPD: старый ink такой же файл генерирует. Даже если почистить его через сам ink. То есть баг с самим файлом, видимо.

RazrFalcon ★★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 2)

В plain SVG переводил?

ados ★★★★★ ()

ошибка в строке 185, похоже хром не может в gradientTransform=matrix

trembke ()
Ответ на: комментарий от trembke

Хром может быть и да, а eog вообще синий квадратик отображает.

peregrine ★★★★★ ()

На этом файле проявился баг - при просмотре в eog заголовок окна становится прозрачным. Переключаешься на следующий файл и всё возращается в норму. Сама картинка в eog выглядит как полупрозрачный бирюзовый квадрат со скругленными углами.

Кто может зарепортить баг? Я хз как это делается и даже куда писать

onlybugs ★★ ()
Ответ на: комментарий от onlybugs

EOG от него просто колбасит. Попробуй через консоль запустить и посмотреть на выхлоп ворнингов. У меня даже виджеты GTK не могут понять где им отрисовываться. Похоже надо писать репорт в eog и inkscape (на счет него пока не уверен на 100%).

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Похоже надо писать репорт в eog

Думаю стоит начать с librsvg, который он использует.

RazrFalcon ★★★★★ ()

однако багрепорт написать стоит

Если файл был создан исключительно в Inkscape - то ему.

Я потыкаю, может смогу найти виновника в самом svg.

RazrFalcon ★★★★★ ()

Собственно проблема в градиентах. svgcleaner из master (где я пофиксил баг с неверной обработкой таких градиентов) с --multipass=true удаляет вообще все градиенты из файла. То есть те 100500 linearGradient, в оригинальном файле, вообще не нужны. Зачем они были созданы - не понятно.

Судя по всему, перечисленные приложения не умеют обрабатывать градиенты с одним stop, что нужно транслировать в сплошную заливку, и рисуют муть или вообще ничего. Что мы и видим.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Не только. Даже пофикшенные изображения рендерятся eog-ом не совсем корректно, т.к. «шахматная сеточка» говорящая о прозрачности присутствует не только на уголках изображения, но и на первом слое.

peregrine ★★★★★ ()
Ответ на: комментарий от peregrine

Это на версии из git?

У меня самого EOG нет, но rsvg рисует верно.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

А нет, лёгка прозрачность всё же есть. Но это верно, ибо у вас fill-opacity=".94117647", даже не смотря на то, что в Inkscape прозрачность 100%... Это отдельный баг, и в этот раз уже Inkscape.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от peregrine

Я имел виду свой клинер, но всё равно баг в Inkscape, на этот раз.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

eog 3.20.5

Даже если баги в библиотеке, они не должны вылезать наружу. Сегодня заголовок окна прозрачный, завтра - потрёт корень.

onlybugs ★★ ()
Ответ на: комментарий от onlybugs

Вы бы видели как Gwenview глючит на некторых svg... Проблема в том, что SVG зачастую рисуют не как растр, а прямо поверх окна. Отсюда и приколы.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

В глаза бросается только кривые градиенты. У градиента должно быть как минимум 2-е точки, а у вас она вечно одна. Видимо баг нового ink.

Он свотчи через градиенты делает. В SVG2 вроде исправлено.

AP ★★★★★ ()
Ответ на: комментарий от peregrine

Кому не трудно, подпишитесь под ним.

Уже подтвердили, теперь осталось ждать. Парочка моих багов уже пару лет висит.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Swatches. Он же «образцы цветов».

Посмотри на примеры, которые есть под рукой. Ты увидишь, что у таких градиентов с одной опорной точкой есть атрибут osb:paint со значением solid.

AP ★★★★★ ()
Ответ на: комментарий от AP

Хее... Прикольно. Но как обычно, это никто не умеет по-нормальному.

RazrFalcon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.