首页 > 解决方案 > 一个值中有多个点的 SVG 路径数据

问题描述

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

标签: parsingsvg

解决方案


如果您查看路径数据语法的规范,您会发现以下解释:

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

对于您的示例,产生-24.57.56式等效于-24.57, 0.56.

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


推荐阅读