首先,这里是 gist
在 gist 中的 Map.svg 是我正在使用的原始地图,是从维基共享资源中获得的。
现在,在原始 svg 中,德克萨斯州东海岸外有一个陆地。我使用 Inkscape 将其删除后,它以一种奇怪的新方式重新编写了路径。差异包含在 gist 中。
现在,这种新的路径编写方式破坏了我的解析器逻辑,我正在尝试理解发生了什么。我希望这里有人比我更了解 SVG 文件格式。我承认我没有完全阅读 SVG 标准规范,但我阅读的部分没有提到任何关于缺少命令或相对坐标的内容。不过,我可能看错了规范,也不确定。
据我理解,SVG 路径数据非常简单,就像这样:
(M,L,C)[point{n}] .... [Z]
然后重复 ad-nauseum
现在我想要理解的部分是,这个新的 Inkscape 已经写出了一些看起来像是相对坐标的东西,没有像 L 这样的命令,或者 L 被某种方式隐含了。我的直觉告诉我,这里发生的事情对某个人来说是显而易见的。值得一提的是,我的解析器是用 C 编写的。