Незакрытый путь SVG закрыт

Я пишу кое-что с d3, и я столкнулся с причудливой проблемой. Пути, которые закрыты с символом "Z", но каждый путь, который я делаю, закрывает (и заполняет) независимо от того, включаю ли я Z или нет. Даже в изоляции с примерами, скопированными из спецификации, это происходит. Например:

<svg>
    <path d="M 40 60 L 10 60 L 40 42.68 M 60 60 L 90 60 L 60 42.68"/>
</svg>

Я озадачен тем, что может быть проблемой. Я был бы признателен за любую проницательность.

Ответ 1

Соответствующая строка из спецификации SVG, касающаяся путей заполнения:

Операция заполнения заполняет открытые подпуты, выполняя операцию заполнения, как если бы добавлена ​​дополнительная команда "closepath", чтобы связать последнюю точку подпути с первой точкой подпути.

Итак, что касается fill, там подразумевается "Z" в конце. Однако для штриха не подразумевается закрытие, поэтому он не будет нарисовать штрих, соединяющий последнюю точку с первой точкой, если вы явно не добавите "Z".

Если вы хотите применить штрих, используйте CSS для отключения заполнения:

path {
  fill: none;
  stroke: #000;
  stroke-width: 1.5px;
}

(Я вижу, вы ответили на свой вопрос, но я думал, что другие могут найти полезное объяснение.)

Ответ 2

Я проголосовал за ответ, но иногда css не является вариантом, когда вы пытаетесь преобразовать SVG в холст и хотите, чтобы путь svg не был заполнен или закрыт. Эквивалентно решению css, но без css...

<svg fill="white" fill-opacity="0" stroke="#000" stroke-width="1.5">
    <path d="M 40 60 L 10 60 L 40 42.68 M 60 60 L 90 60 L 60 42.68"/>
</svg>