1

我正在处理从 SVGO 输出的压缩 SVG 路径数据,但我无法理解相对行到命令的一部分。路径本身看起来像这样(它是一个三角形,并且显示正确):

<path d="M2107.49 3283.96l70.68 81.44 28.54-81.69-99.22.25z"/>

d属性拆分为命令,我们得到:

M: (Start coords) 2107.49 3283.96
l: (Relative line to coords) 70.68 81.44 28.54-81.69-99.22.25
z (close)

我不明白的部分是 line-to 命令的最后一个“对”:据我了解,我们应该有 3 对坐标,它们要么由空格分隔,要么为70.68 81.44负数,没有空格:28.54-81.69= 28.54-81.69. 但是最后一个“对”发生了什么?-99.22.25代表-99.2和?2.25_ 我怎么知道如何拆分它?

SVGO 试图从压缩中挤出每一个最后一个字节,所以它可能利用了一些我找不到参考的隐含解析规则。有谁知道如何处理最后一对?

4

1 回答 1

2

根据SVG 规范中的 BNF

...

类似地,对于字符串“M 0.6.5”,“moveto”的第一个坐标消耗字符“0.6”并在遇到第二个小数点时停止,因为“坐标”的产生只允许一个小数点。结果是第一个坐标为“0.6”,第二个坐标为“.5”。

所以 -99.22.25 是 -99.22 后跟 0.25

于 2020-05-31T07:01:05.247 回答