Это вопрос для гуру инкскейпа и инкскейп-хакеров.
При помощи
straight lines рисуем на листе 2 полигона, один внутри другого. Выделяем оба, потом говорим
Path->Difference. Получаем полигон "с дыркой".
Сохраняем файл, смотрим его структуру (незначимые теги и атрибуты опущены):
<path d="M 145 493.07617 L 145 630.93359 L 275.71484 630.93359 L 275.71484 493.07617 L 151.42773 493.07617 L 145 493.07617 z M 162.85742 520.21875 L 256.42773 520.21875 L 256.42773 606.64844 L 162.85742 606.64844 L 162.85742 520.21875 z ">
Хрень какая-то... не соответствующая
стандарту.
Сдвигаем наш странный полигон на один пиксель и тут же двигаем обратно. Снова сохраняем и смотрим код:
<path d="m 145,493.07617 0,137.85742 130.71484,0 0,-137.85742 -124.28711,0 -6.42773,0 z m 17.85742,27.14258 93.57031,0 0,86.42969 -93.57031,0 0,-86.42969 z">
А вот теперь все выглядит так, как
должно выглядеть. Это уже можно парсить.
Но почему так происходит? Как заставить инкскейп всегда генерировать корректный код путей?
P.S. Формат сохранения - Inkscape SVG или plain SVG ни на что не влияет.