【问题标题】:Interpreting compressed SVG path command syntax解释压缩的 SVG 路径命令语法
【发布时间】:2020-05-31 05:50:50
【问题描述】:

我正在处理从 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 命令的最后一个“对”:据我了解,我们应该有 3 对坐标,它们由空格 70.68 81.44 分隔,或者是负数, 没有空格:28.54-81.69 = 28.54, -81.69。但是最后一个“对”发生了什么? -99.22.25 是否代表 -99.22.25?我怎么知道如何拆分它?

SVGO 试图从压缩中挤出每个最后一个字节,因此它可能利用了一些我找不到参考的隐含解析规则。有谁知道如何处理最后一对?

【问题讨论】:

    标签: svg svgo


    【解决方案1】:

    根据BNF in the SVG specification

    ...

    同样,对于字符串“M 0.6.5”,“moveto”的第一个坐标消耗字符“0.6”并在遇到第二个小数点时停止,因为“坐标”的产生只允许一个小数点.结果是第一个坐标为“0.6”,第二个坐标为“.5”。

    所以 -99.22.25 是 -99.22 后跟 .25

    【讨论】:

    • 啊,太好了。谢谢 - 我没有考虑过可以省略前导零。
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2011-09-29
    相关资源
    最近更新 更多