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)

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

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

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

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

peregrine ★★★★★ ()

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

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

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

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

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

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

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

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

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

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

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

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

AP ★★★★★ ()