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