LINUX.ORG.RU

resvg 0.3 - библиотека отрисовки SVG

 ,


3

6
  • Добавлена поддержка расширенной разметки (advanced layout) текста (списки x, y, dx, dy, rotate). Примеры: 1, 2.
  • Добавлена поддержка элемента symbol.
  • Добавлена поддержка вложенных svg элементов.
  • Добавлена поддержка парсинга элементов из ENTITY.
  • Добавлена поддержка fallback цветов для типа paint. Пример: fill="url(#lg1) red"
  • Добавлена возможность отрисовки внешних и встроенных SVG(Z) файлов.
  • Добавлен Qt-враппер для C-API. Повторяет API и поведение QSvgRenderer.
  • Добавлено почти 100 новых тестов. Всего 634 теста.
  • Множество исправлений.
  • Снижен размер библиотеки. rendersvg с cairo бекендом теперь на 34% меньше, с Qt бекендом - на 19%.
  • Минимальная версия Rust снижена с последней стабильной до 1.22.

Ещё не реализовано:

  • Элементы: filter, marker, textPath.
  • Редко используемые атрибуты.

Результаты тестирования. Сравнительная таблица.

Если исключить dynamic SVG subset, фильтры и маркеры - resvg предоставляет лучшую поддержку SVG среди всех кроссплатформенных, FOSS библиотек. И, в том числе, является самой быстрой реализацией.

>>> Репозиторий

★★★★

Проверено: Shaman007 ()

как вот это :

resvg can be used to render SVG files based on a static SVG Full 1.1 subset, excluding fonts support. In simple terms: no animations, scripting and embedded fonts.

коррелирует с картинкой к новости и текстом новости:

Если исключить dynamic SVG subset, фильтры и маркеры - resvg предоставляет лучшую поддержку SVG?

я про шрифты...

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

Тонкости терминологии SVG... В SVG есть свои «шрифты», и вот они и не поддерживаются. Обычные, внешние шрифты прекрасно работают.

Уточню readme, ибо это уже не впервые спрашивают.

RazrFalcon ★★★★ ()

Новый вид новостей с картинками выглядит отвратно - гигантский скриншот на всю страницу. Ну отрезсайзили бы, показали бы в лайтбоксе по клику...

ins3y3d ★★★★★ ()

Все это здорово, но svg уже сколько лет существует?

Насколько актуальны библиотеки, которые поддерживают его частично?

AVL2 ★★★★★ ()

Наверное имеет смысл упоминать везде в новости “библиотека рендеринга” поскольку у resvg все-таки только задача генерации превьюшек, но не полный спектр чтения/записи/модификации/создания с нуля и трансляции из/в других форматов.

Linfan ★★★★★ ()
Последнее исправление: Linfan (всего исправлений: 1)
Ответ на: комментарий от AVL2

Вполне актуально - у кутей напр. рендеринг SVG с косяками, у гткшного pixbuf свои болячки. А те недостатки, которые у resvg, на фоне вышеперечисленных - просто редко встречающиеся недочеты.

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

Просто у автора библиотеки самомнение зашкаливает. Это же тот самый дартаньян, в белом, который лучше всех знает Qt, C++, KDE и считает свой аргумент «лол» умнейшим.

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

На практике «зафильтрованная» SVG графика не часто попадается. И для функционала просмотрщика resvg вполне подходит. Кутевый svg рендерер и гткшный pixbuf тоже не саппортят фильтры.

Linfan ★★★★★ ()
Последнее исправление: Linfan (всего исправлений: 1)
Ответ на: комментарий от anonymous

же тот самый дартаньян, в белом, который лучше всех знает Qt, C++, KDE

Утверждение, что в Qt откровенно слабая поддержка SVG, не требует особых доказательств. Все тесты это вполне подтверждают.

Ответь себе на вопрос, годится ли QtSvg для создания серьёзных векторных редакторов без допиливания? Если утверждение будет положительным, то где они, редакторы на QtSvg?

Ну и да: http://open-life.org/blog/1880.html

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

И это правильный вопрос. Я как человек официально(по 8 часов в день)проработавший год в Corel Draw, думал об этом: почему никто не пилит 100500 векторных редакторов? Неужели всё упирается именно в инструментарий(библиотеки)? Inkscape нам не подошёл. Тормозит на сложных чертежах больших фасадов(порой до целой улицы с мелкими деталями). И да, я не понимаю почему в некоторых местах принято чертить в кореле, а не в *каде.

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

Насколько актуальны библиотеки

В смысле? У всех перечисленных последние обновления были в этом году.

И какая разница сколько самому SVG лет? JPEG и PNG тоже не вчера появились.

RazrFalcon ★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от Linfan

Чем «рендеринг» отличается от «отрисовки»?

задача генерации превьюшек

Не только.

чтения

Есть

записи

Есть.

модификации

Есть.

создания с нуля

Есть.

трансляции из/в других форматов

Не проблема.

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

у кутей напр. рендеринг SVG с косяками

Он просто убогий. Они даже не пытаются. Тем более его уже лет 6-8 не трогали.

у гткшного pixbuf свои болячки

pixbuf для растра. Для svg - librsvg.

А те недостатки, которые у resvg

Что за недостатки?

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

гткшного pixbuf свои болячки

Гткшный pixbuf использует librsvg. И оно таки умеет фильтры, правда в последних версиях их частично поломали.

Короче, пока не будет фильтров говорить не о чем. Выкинуть здоровый и технически сложный кусок спецификаций и мериться потом как минимум не спортивно.

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

Чем «рендеринг» отличается от «отрисовки»?

Ничем. В тексте надо это упоминать, а не только в названии.

Есть.

Положим. Почему тогда на гитхабе указано только «resvg is an SVG rendering library»?

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

Короче, пока не будет фильтров говорить не о чем. Выкинуть здоровый и технически сложный кусок спецификаций и мериться потом как минимум не спортивно.

Я бы так не сказал. Есть вполне внятное применение resvg - превьювер для win и macos. RazrFalcon если хочешь реального применения resvg, попробуй сделать превьювер, интегрированный в десктопы этих систем.

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

Выкинуть здоровый и технически сложный кусок спецификаций и мериться потом как минимум не спортивно.

Фильтры - это лишь малая часть SVG. И к вектору они вообще мало отношения имеют, так как оперируют растром.

Ну и если на то пошло, то из десятков фильтров используют только размытие. Все остальное встретить в дикой среде почти нереально. Ну и даже Inkscape с librsvg успешно сливают большую часть тестов.

Так что не надо говорить о том, в чём не разбираетесь.

мериться потом как минимум не спортивно.

Вы о чём? У меня два набора тестов. Один официальный, другой мой. Все тесты с фильтрами я у себя помечаю как проваленные, но это не мешает моей либе обгонять остальных.

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

попробуй сделать превьювер, интегрированный в десктопы этих систем

В процессе.

Есть вполне внятное применение resvg - превьювер для win и macos.

resvg нужен не только для привьюшек, а для любой задачи связанной с переводом svg в растр.

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

При чём тут виджеты?

Не виджеты, а виджетсеты Все срачи и противопоставления на ЛОРе на уровне qt vs gtk. Понятное дело, что за SVG в gtk отвечает отдельная либа и сами виджеты тут не причем.

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

В процессе.

Вот это годное дело! Обязательно для венды msi чтобы аппликухи могли включать превьювер в свой бандл инсталляции. Как там для мака хз, но что-то похожее тоже надо.

resvg нужен не только для привьюшек, а для любой задачи связанной с переводом svg в растр.

Превьюхи это и есть перевод SVG в растр. Просто это наиболее востребованная операция для широкого круга «трудящихся». Аналог на QtSvg уже делался (можешь глянуть COMовскую часть), но качество, по понятным причинам, отстойное.

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

Иншаллах! :) Будет msi - попробую прикрутить его в виндовый инсталлер sK1. SVG рендерить и сами умеем неплохо, только для эксплорера нужно отдельную аппликуху ваять.

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

Все тесты с фильтрами я у себя помечаю как проваленные

Ок тогда, тут был не прав.

Ну и если на то пошло, то из десятков фильтров используют только размытие. Все остальное встретить в дикой среде почти нереально.

Вот это уже демагогия. Так можно и про другие либы сказать с поправкой на то, какие фичи у них провалены.

так как оперируют растром.

И, это делает их менее легитимной частью SVG спецификации?

Ну и даже Inkscape с librsvg успешно сливают большую часть тестов

Есть выкладки их тестов конкретно по фильтрам?

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

Вот это уже демагогия. Так можно и про другие либы сказать с поправкой на то, какие фичи у них провалены.

50/50. QtSvg не умеет от слова совсем. У librsvg тонны косяков, считай что не умеет. Inkscape и batik уже неплохо.

Вот когда запилю в своей либе и в своём test suite - тогда мои слова подтвердятся.

И, это делает их менее легитимной частью SVG спецификации?

Тем, что их реализация сильно отличается от обычного svg.

Есть выкладки их тестов конкретно по фильтрам?

В моём test suite фильтров ещё нет, а по SVG Test Suite результаты тут: https://github.com/RazrFalcon/resvg/blob/master/.github/official_chart.svg

Как не сложно заметить, librsvg еле набирает 60% даже с поддержкой фильров. В то время как у resvg 65% без фильтров. Выводы напрашиваются сами собой.

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

Можно узнать зачем вы разрабатываете этот продукт? Для себя? То есть применяете его как-то? Или это продукт для продукта, прокачка скила программирования? Или для людей? Хочется понять мотивацию и вашу заинтересованность в этом проекте.

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

Имелось в виду тесты именно по фильтрам, но нет так нет, все равно это вопрос праздного любопытства. Субъективно я не встречал с этим проблем у Inkscape вообще. У librsvg много чего отвалилось при переходе на rust, последняя c версия вроде 2.40.

В общем, удачи в дальнейшей разработке, лишь высказываю мнение, что отсутствие фильтров является критичным недостатком для некоторых пользователей.

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

Вы про размытие или про фильтры в целом? Ибо в svg два класса фильтров: Filter и Basic Filter.

Имелось в виду тесты именно по фильтрам

В SVG Test Suite есть тесты для фильтров. Какие «именно по фильтрам» тесты вам нужны - не ясно.

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

В SVG Test Suite есть тесты для фильтров. Какие «именно по фильтрам» тесты вам нужны - не ясно.

Тесты ТОЛЬКО по фильтрам, тесты где ничего кроме фильтров, тесты исключительно по функцоиналу фильтров, я не знаю как это яснее сказать.

Вы про размытие или про фильтры в целом? Ибо в svg два класса фильтров: Filter и Basic Filter.

Те которые с примитивами: ‘feBlend’, ‘feColorMatrix’, ‘feGaussianBlur’ и т.д.

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

Тесты ТОЛЬКО по фильтрам, тесты где ничего кроме фильтров, тесты исключительно по функцоиналу фильтров, я не знаю как это яснее сказать.

Да. Именно для этого придумали Test Suite.

Те которые с примитивами: ‘feBlend’, ‘feColorMatrix’, ‘feGaussianBlur’ и т.д.

Это Basic Filters.

RazrFalcon ★★★★ ()

Слушай, а твоя либа может предоставить мне некий DOM, которым я смогу рулить между кадрами отрисовки, чтобы получилось что-то вроде анимации? По-моему отсутствие такой вот фичи - основная причина хейтить QtSVG/rsvg. Нет никакого смысла использовать векторную графику если нет возможности управлять ею на лету. Можно же просто сконвертить её в растр любимым редактором перед использованием и не раздувать свои бинари рендерилкой.

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

Подобрать/написать либы с шейдерами и вуаля.

Иными словами, написать свой cairo, но на OpenGL - действительно, как два пальца об асфальт :) RazrFalcon готов убить 5-10 лет жизни на такое? ;)

Linfan ★★★★★ ()