Как пересчитать (а не просто масштабировать / преобразовать) SVG Path, чтобы соответствовать ограничивающей рамке? - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь построить диаграмму изотипа с Vega-Lite .Vega-Lite поддерживает пользовательские строки пути SVG (например, "M10 10 H 90 V 90 H 10 L 10 10") в виде фигур, но рекомендует, чтобы команды рисования контура были отцентрированы в пределах от -1 до 1 для оси x и y ( Спецификация Vega-Lite).)

У меня есть несколько значков, которые я хочу использовать, но они не помещаются в ограничивающую рамку.Я попытался изменить их размер с помощью Inkscape, но он просто добавляет атрибут преобразования к существующему пути.Конечно, это работает для просмотра SVG в браузере (или где-то еще), но поскольку сам путь остается неизменным, диаграмма Vega-Lite отображает SVG слишком большой и смещенный от центра.

Есть ли способ на самом деле пересчитать пути SVG?

Для приведенного выше примера решение, которое я хочу, было бы "M-1 -1 H 1 V 1 H -1 L -1 -1"

1 Ответ

0 голосов
/ 20 марта 2019

Существует дополнение inkscape, обеспечивающее рекурсивное применение преобразования к фигурам. Он удобно назван applytransforms и после установки доступен в меню под Extensions | Modify Path | Apply Transform

Обратите внимание, что это изменит траекторию, и для примера траектории прямые линии станут прямыми кривыми Безье:

"M-1.0 -1.0C-1.0 -1.0 1.0 -1.0 1.0 -1.0C1.0 -1.0 1.0 1.0 1.0 1.0C1.0 1.0 -1.0 1.0 -1.0 1.0C-1.0 1.0 -1.0 -1.0 -1.0 -1.0"

...