Мне очень нравится библиотека Raphael Javascript, которая очень полезна для работы с SVG с помощью JavaScript.
Однако есть смещение, которое добавляется в сгенерированный SVG-код, который я не понимаю. Кто-нибудь знает, откуда он и как его избежать?
Вот мой код JS:
var paper = Raphael("canvas", 510, 510);
paper.clear();
paper.rect(0, 0, 500, 500, 10).attr({fill: "#fff", stroke: "black"});
Сгенерированный код SVG
<div id="canvas">
<svg width="510" height="510">
<desc>Created with Raphaël</desc>
<defs/>
<rect x="0.5" y="0.5" width="500" height="500" r="10" rx="10" ry="10" fill="#ffffff" stroke="#000000"/>
</svg>
</div>
Почему атрибуты x и y в прямоугольнике равны 0,5, а не 0?
Обновление: кажется, что значения округлены с кодом ниже:
var round = function (num) {
return +num + (~~num === num) * .5;
};
Кто-нибудь знает причину?