Излезе ново, значително издание на библиотеката за растеризация на SVG — resvg.
Основни промени:
- Напълно нова реализация на рендериране на текст:
- Почти целият стек от символ до Безиева крива сега е реализиран на Rust:
съответствие на шрифтове (font matching and fallback), парсинг на TrueType, подреждане на клъстери от глифове според правилата на SVG (SVG text layout).
Изключение прави шейпинг (text shaping), за който се използва
HarfBuzz. - Текстът сега ще бъде конвертиран в Безиеви криви преди рендериране.
Тоест, бекендът за рендериране вече не е задължен да поддържа текст. - Поддръжка на двупосочен текст (BIDI reordering). Пример.
- Поддръжка на textPath. Пример 1, пример 2.
- Поддръжка на writing-mode (вертикален текст). Пример.
- Коректна поддръжка на word-spacing и letter-spacing. Пример.
- Почти целият стек от символ до Безиева крива сега е реализиран на Rust:
- Нов, експериментален бекенд — Raqote (отделно благодаря на jrmuizel).
Raqote е 2D графична библиотека, написана на Rust.
Тя е в начален етап на разработка, като възможностите й вече са достатъчни за
използване в resvg.
Основното й предимство е, че resvg вече може да бъде сглобен с точно една зависимост, която не е Rust — HarfBuzz. - Поддръжка на shape-rendering, text-rendering и image-rendering.
- Ускорена е рендеризацията на растерни изображения.
- Общият брой тестове достигна 1112.
Броят на успешно преминалите тестове за Inkscape и librsvg падна под 75%. - Множество малки корекции и подобрения.
Резултати от тестването. Сравнителна таблица.
Източник: linux.org.ru
