Inkscape: почему координаты в GUI и XML различаются?

На рисунке ниже у меня есть, например, прямоугольник.

снимок экрана, показывающий координаты в графическом интерфейсе и XML

В графическом интерфейсе Inkscape говорит, что прямоугольник находится в позиции Y 0, но в XML для этого элемента указано 873. Почему это так и как мне получить «настоящее» число?

Фон: при экспорте изображения (по сценарию) я хочу добавить 10-пиксельную границу со всех четырех сторон. Я думал, что могу просто найти самые большие/наименьшие координаты в XML и добавить 10 пикселей для границы, но в итоге я экспортирую полностью белый фон вместо изображения. Работа с XML здесь становится естественной, потому что я получаю от этого другую (мета) информацию.

Я могу запросить происхождение изображения с помощью inkscape -Xи inkscape -Yи размеры изображения с помощью inkscape -Hи inkscape -W. Это также дает мне цифры из графического интерфейса. Экспорт с этими значениями работает. Однако для этого требуется разветвление нового процесса Inkscape 4 раза для каждого изображения, что замедляет весь экспорт. (Много изображений на старом оборудовании.)

Это Inkscape 0.91 для Linux, если это имеет значение.

Ответы (1)

Обычно единицы SVG выражаются в пикселях , и если координаты Inkscape заданы в пикселях, то они должны совпадать (см. также здесь и здесь ).

В вашем примере разница в ширине (236,185 против 234,869) и высоте (180,000 против 178,6805) связана с шириной границы прямоугольника, которая включена в Inkscape W и H и не включена в ширину и высоту SVG.

Например, с обводкой границы 1 пиксель:

прямоугольник с краем

Тот же прямоугольник без рамки:

прямоугольник без рамки

Обратите внимание, что граница располагается по центру контура. В моем примере имеем:

Inkscape W = ширина SVG (199 пикселей) + половина штриха влево (0,5 пикселей) + половина штриха вправо (0,5 пикселей) = 200 пикселей

штрих центрируется на пути

Имейте в виду, что координата Y в Inkscape имеет ноль внизу документа, а в SVG ноль находится вверху документа.

Y = 0 в Inkscape означает объект внизу документа:

Y=0 в Inkscape

Y = 0 в SVG означает объект в верхней части документа:

Y=o в SVG

Это означает, что ваш «настоящий» номер выглядит примерно так:

Координата Y в SVG (px) = высота страницы (px) - координата Y в Inkscape (px) - высота объекта и границ (px)

(Обратите внимание, что инверсия оси Y будет исправлена ​​в будущем в соответствии с этой проблемой .)