一个值中包含多个点的SVG路径数据

时间:2018-07-31 07:34:55

标签: parsing svg

我不得不编写自己的SVG路径解析器,发现无法解析来自Wikipedia的某些文件,例如Skull_and_crossbones.svg。 在第二个路径的数据中,我发现-24.57.56只是无效值,我看不到如何解析它。

2 个答案:

答案 0 :(得分:2)

如果您查看spec for the grammar of path data,则会在下面找到以下说明:

  

对BNF的处理必须消耗尽可能多的给定BNF产生量,直到遇到不再满足该产生量的字符时为止……对于字符串M 0.6.5,第一个坐标“ moveto”的字符消耗0.6字符,并在遇到第二个小数点时停止,因为“ coordinate”的产生仅允许一个小数点。结果是第一个坐标为0.6,第二个坐标为.5

以您的示例为例,-24.57.56等于-24.57, 0.56

您还可以说:在点,逗号和空格之前的前导零是始终可选的。编写路径数据的作者只能使用它们来避免歧义,并确保您可以解析为一个数字的长度符合他们的意图。

答案 1 :(得分:0)

这不是无效值。这是两个有效值。第一个值为-24.57,第二个值为.56

path data grammar不需要坐标值之间有空格。但是,如果结果是错误的,则有时是必需的。例如,1 0.5不能缩写为10.5