这是有效的 SVG 路径吗?

Is this a valid SVG path?

我 运行 在使用各种 svg 库渲染以下 SVG 路径时遇到问题:

<path d="M19.35 10.04c-.68-3.45-3.71-6.04-7.35-6.04-2.89 0-5.4 1.64-6.65 4.04-3.01.32-5.35 2.87-5.35 5.96 0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zm-2.35 2.96l-5 5-5-5h3v-4h4v4h3z"/>

具体来说,您可以看到这个街区的一些奇怪之处:

4.04-3.01.32-5.35

这修复了它:

4.04-3.01+0.32-5.35

...就像这样:

4.04-3.01 0.32-5.35

我对 SVG 规范的阅读表明原始路径无效,但由于该图标正好来自 Google 的 material 设计图标 (https://github.com/google/material-design-icons) - 而且有很多类似的"errors",我有点怀疑我读BNF

谁能提供第二意见?

4.04-3.01.32-5.35 有效。 SVG path specification grammar 表示我们正在处理这个

curveto-argument comma-wsp? curveto-argument-sequence

那个?在 comma-wsp 之后表示其中的 0 或 1。在这种情况下,我们有 0.

通过 BNF 进行追踪,我们最终到达了关于在任何求幂字符之前解析数字的部分,即

digit-sequence? "." digit-sequence.

一旦我们看到一个句号,我们就不能再看到了,除非我们看到一个指数,因此第二个句号必须是其他东西的一部分,即下一个数字。

所以上面的字符序列对应的值是:4.04 -3.01 .32 -5.35