解释压缩的 SVG 路径命令语法
Interpreting compressed SVG path command syntax
我正在处理从 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命令的最后'pair':据我了解,我们应该有3对坐标,它们之间用[=32=分隔] 70.68 81.44
,或者负数,没有 space:28.54-81.69
= 28.54
,-81.69
。但是最后 'pair' 是怎么回事? -99.22.25
代表-99.2
和2.25
吗?我怎么知道如何拆分?
SVGO 正试图从其压缩中挤出每个最后一个字节,因此它可能利用了一些我找不到参考的隐含解析规则。有谁知道如何处理最后一对?
根据 BNF in the SVG specification
...
Similarly, for the string "M 0.6.5", the first coordinate of the "moveto" consumes the characters "0.6" and stops upon encountering the second decimal point because the production of a "coordinate" only allows one decimal point. The result is that the first coordinate will be "0.6" and the second coordinate will be ".5".
所以 -99.22.25 是 -99.22 后跟 .25
我正在处理从 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命令的最后'pair':据我了解,我们应该有3对坐标,它们之间用[=32=分隔] 70.68 81.44
,或者负数,没有 space:28.54-81.69
= 28.54
,-81.69
。但是最后 'pair' 是怎么回事? -99.22.25
代表-99.2
和2.25
吗?我怎么知道如何拆分?
SVGO 正试图从其压缩中挤出每个最后一个字节,因此它可能利用了一些我找不到参考的隐含解析规则。有谁知道如何处理最后一对?
根据 BNF in the SVG specification
...
Similarly, for the string "M 0.6.5", the first coordinate of the "moveto" consumes the characters "0.6" and stops upon encountering the second decimal point because the production of a "coordinate" only allows one decimal point. The result is that the first coordinate will be "0.6" and the second coordinate will be ".5".
所以 -99.22.25 是 -99.22 后跟 .25