LINUX.ORG.RU

resvg 0.5 — библиотека отрисовки SVG

 , ,


4

4

resvg — это библиотека для отрисовки SVG, прямыми аналогами которой являются librsvg и QtSvg. Но в отличие от них, resvg поддерживает отрисовку с помощью нескольких бэкендов (Qt и cairo) и обеспечивает более полную поддержку стандарта. Также resvg является модульным, что позволяет использовать лишь нужные функции.

Основные изменения:

  • Это bugfix релиз, поэтому в нём множество исправлений.
  • Добавлена поддержка marker.
  • Добавлена частичная поддержка baseline-shift, letter-spacing и word-spacing.
  • Добавлены плагины для использования resvg в качестве генератора превью в Dolphin и в Windows Explorer.
  • Добавлено 143 новых теста. Общее количество достигло 958-и.

Результаты тестирования. Сравнительная таблица. Список нереализованных возможностей.

Так как marker был успешно реализован, до полной поддержки static SVG осталось реализовать textPath, Unicode BIDI (left-to-right, top-to-bottom, glyph orientation и т.д.) и несколько фильтров.

>>> GitHub

★★★★★

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

с помощью нескольких бэкендов (Qt и cairo)

Какой бэкенд отрисовывает быстрее?

P.S. привью => превью

EXL ★★★★★
()

Добавлены плагины для использования resvg в качестве генератора привью в... Windows Explorer.

Весчь! Надо бы утащить в инсталлер sK1 для винды :)

Linfan ★★★★★
()
Ответ на: комментарий от RazrFalcon
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- sK1 2 0
00000540 -->
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" width="300" height="300">
<image y="0.0"  x="0.0" xlink:href="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAAABmJLR0QA/wD/AP+gvaeTAAADpElEQVR4nO3WsUkEARRF0b8ykbLJRoJYgGy4PRhsM9ZiMwb2YCgWYCIIgoimYxk3mHMqeMmFt1vXdYDORT0Atk6EEBMhxEQIMRFCTIQQEyHERAgxEUJMhBATIcRECDERQkyEEBMhxEQIMRFCTIQQEyHERAgxEUJMhBATIcRECDERQkyEEBMhxEQIMRFCTIQQEyHERAgxEUJMhBATIcRECDERQkyEEBMhxEQIMRFCTIQQEyHERAgxEUJMhBATIcRECDERQkyEEBMhxEQIMRFCTIQQEyHERAgxEUJMhBATIcRECDERQkyEEBMhxEQIMRFCbJmZp5e316+/eglszvFweT7dLTPz/P7z+H1d74HNefj9OJ/cUaiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKILTNzf7u/ufqsl8DmHA/7mdmt61ovgU1zRyEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIISZCiIkQYiKEmAghJkKIiRBiIoSYCCEmQoiJEGIihJgIIfYP4UUXFWVcr+cAAAAASUVORK5CYII=
"  height="300" width="300" />
<!-- Encapsulated SK2
obj('Document')
set_field('styles',{'Default Style': [[], [0, 0.28346456692913385, ['CMYK', [0.0, 0.0, 0.0, 1.0], 1.0, 'Black'], [], 1, 0, 10.433, 0, 0, []], [], []], 'Default Text Style': [[1, 0, ['CMYK', [0.0, 0.0, 0.0, 1.0], 1.0, 'Black']], [], ['Sans', 'Regular', 12.0, 0, [], True]]})
set_field('doc_units','mm')
set_field('metainfo',['', '', '', ''])
set_field('doc_origin',1)
set_field('resources',{})
obj('Pages')
set_field('page_counter',1)
set_field('page_format',['A4', (595.275590551181, 841.8897637795275), 0])
obj('Page')
set_field('name','Page 1')
set_field('page_format',['A4', (595.275590551181, 841.8897637795275), 0])
set_field('layer_counter',1)
obj('Layer')
set_field('style',[[], [0, 0.28346456692913385, ['RGB', [0.19607843137254902, 0.3215686274509804, 0.6352941176470588], 1.0, ''], [], 1, 0, 10.433, 0, 0, []], [], []])
set_field('name','Layer 1')
set_field('color',[0.19607843137254902, 0.3215686274509804, 0.6352941176470588, 1.0])
set_field('properties',[1, 1, 1, 1])
obj('Rectangle')
set_field('style',[[1, 0, ['CMYK', [1.0, 0.0, 0.0, 0.0], 1.0, 'Cyan']], [0, 0.28346456692913385, ['CMYK', [0.0, 0.0, 0.0, 1.0], 1.0, 'Black'], [], 1, 0, 10.433, 0, 0, []], [], []])
set_field('width',434.376252867)
set_field('corners',[0.0, 0.0, 0.0, 0.0])
set_field('stroke_trafo',[])
set_field('height',243.860352486)
set_field('start',[-239.0974549769873, -50.48671360071844])
set_field('fill_trafo',[])
set_field('trafo',[1.0, 0.0, 0.0, 1.0, 0.0, 0.0])
obj_end()
obj_end()
obj_end()
obj_end()
obj('DesktopLayers')
obj_end()
obj('MasterLayers')
obj_end()
obj('GridLayer')
set_field('style',[[], [0, 0.28346456692913385, ['RGB', [0.0, 0.0, 1.0], 0.15, ''], [], 1, 0, 10.433, 0, 0, []], [], []])
set_field('name','GridLayer')
set_field('color',[0.0, 0.0, 1.0, 0.15])
set_field('grid',[0.0, 0.0, 2.8346456692913384, 2.8346456692913384])
set_field('properties',[0, 0, 0, 1])
obj_end()
obj('GuideLayer')
set_field('style',[[], [0, 0.28346456692913385, ['RGB', [0.0, 0.3176470588235294, 1.0], 1.0, ''], [], 1, 0, 10.433, 0, 0, []], [], []])
set_field('name','GuideLayer')
set_field('color',[0.0, 0.3176470588235294, 1.0, 1.0])
set_field('properties',[1, 1, 0, 0])
obj_end()
obj_end()
-->
</svg>
Linfan ★★★★★
()
Ответ на: комментарий от EXL

Это смотря на каком языке читать. В английском буква «e» называется «и» и читается в этом слове также.

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

Это смотря на каком языке читать. В английском буква «e» называется «и» и читается в этом слове также.

Устоявшаяся форма написания этого слова в русском языке – превью. Форма чтения см. по https://ru.wiktionary.org/wiki/превью, через звук ʲɪ.

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

Почти все слова иностранные, а язык русский. Парадокс.

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

Может быть посмотрим на твой код?

сперва добейся, ага

раз про код либы возразить нечего - молча обтекай, хоть лицо сохранишь

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

Попробовал виндовый превьюшник - на Win10pro 64bit не завелся. Перезагрузка не помогла. Где-то логи пишутся?

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

На Win7pro 64bit тоже не срабатывает - IE продолжает генерит привьюхи (весьма отвратительно)

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

раз про код либы возразить нечего

Поскольку мсье стал в позицию растоманского гуру, ждем от него детализации и конкретики, а не просто «фу-фу-фу». Делать полный код ревью необязательно - приведите наиболее существенные замечания по коду.

Linfan ★★★★★
()

а его можно научить в многопоточный рендеринг? Если нет, то есть ли такой отрисовщик, который так умеет?

QtSVG с некоторыми файлами очень долго ворочается.

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

В теории - да. Но, как я понимаю, там очень мало средств для 2D графики, поэтому многое придётся писать самому.

То есть для начала кто-то должен запилить нормальные либы для кривых Безье и текстовый layout (по типу pango).

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

Покажите файл, который долго рендерится.

Проблема в том, что за многопоточную отрисовку придётся заплатить оперативкой. А учитывая что у нас битмапы - это будут сотни мегабайт.

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

Логов нет. У меня на чистой десяточке - УМВР.

Нужно сбросить кеш иконок (хз как). Для теста попробуйте скопировать SVG файл, тогда он отрисуется заново.

оригинальный SVG Explorer Extension тоже не работает

УМВР

IE продолжает генерит привьюхи

Я не знал что он вообще это умеет. У меня, по умолчанию, вообще нет привью. Видимо что-то накрутили уже.

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

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

Там можно все, тк compute, но смысла наверное нет, тк у видеокарт вполне конкретная архитектура под конкретные задачи.

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

Шрифты то можно, а вот с либами типа pango - беда.

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

«Сперва добейся»

Это называется «репутация». Пока о тебе относительно Rust-а известно только одно: мощно влепил себе в ник на ЛОРе.

Раз тебе нечего показать — замолчи свой рот.

frob ★★★★★
()

Растаманская подделка.

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

Может быть посмотрим на твой код?

сперва добейся, ага

да ты не стесняйся, эксперт. щас был ответ труса-бестолкового-крикуна. Критикуешь — предлагай, иначе — грош тебе цена

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

А Qt на C++. И? Без профилера не понять.

Так плюсы тоже тормоза :)

// да шучу я, там же смайлик

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

Логов нет. У меня на чистой десяточке - УМВР.

Такое негодится. У подавляющего большинства юзеров десяточка не чистая.

Скорее всего неразбериха с оформлением SVG формата в регистри. Но это на уровне предположений. Кеш тут врядли роялит - у меня иконки SVG это лого Инкскейпа.

Я не знал что он вообще это умеет. У меня, по умолчанию, вообще нет привью. Видимо что-то накрутили уже.

На Win7 стоит IE 11. Он в футере проводника показывает превью и инфо по файлу.

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

Я думал это легаси. Как минимум в десяточке отдельная папка для баз привьюшек.

Да и в жопу тогда вашу десяточку ) они все меняют быстрее, чем я успеваю разбираться. Таким макаром всю жизнь будешь учиться и все равно ничего знать не будешь. Фу.

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

Да и в жопу тогда вашу десяточку )

Оно то хорошо бы, но какбэ потенциальных пользователей плагина для эксплорера эдак на 3-4 порядка больше, чем таковых для плагина Дельфина.

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

Как минимум в десяточке отдельная папка для баз привьюшек.

Смотрю, тут, на Лоре, тусуются знатоки винды. Что вы тут делаете, болезненные?

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

Что мешает знать винду? Религиозный фанатизм?

И да, я вообще гентушник.

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