【问题标题】:Is there an SVG path d convention for using z instead of coordinate with other segments?是否有使用 z 而不是与其他段坐标的 SVG 路径 d 约定?
【发布时间】:2022-11-23 06:23:23
【问题描述】:

我试图探索一个名为svgelements 的用于 SVG 解析的 python 库。还有一个我在任何 SVG 文档中都找不到的不寻常的概念,海豚文件浏览器、firefox 和 gimp 都不能使用它来渲染 svg 文件。 pathd 中有一个 z 解析为坐标并传递给 Path 以创建带有 z_point 的曲线或直线(最后一次移动操作的结束)。所以zLQTCS一起使用来替换坐标。 它是 SVG 的标准吗?为什么许多其他应用程序不能处理这个?

我已经探索了这段用于路径 d 解析的代码 https://github.com/meerk40t/svgelements/blob/master/svgelements/svgelements.py#L408

有一部分用z作为数字处理

【问题讨论】:

  • 如果我没理解错的话,它允许像 M0,0 2,0 Q 1,1 z 这样的路径字符串,用 0,0 代替 z,这样闭合路径是贝塞尔曲线,而不是直线?
  • @ccprog 是的,这个解析器正是这样做的。所以它将处理M0,0 2,0 Q 1,1 zM0,0 2,0 Q 1,1 0,0。但是 librsvg 或 qt 的 qsvgrenderer 都不会处理 Q 1,1 z 部分。并且在 svgrerequirements 中没有关于此的信息。那么我应该认为这是这个 python 库中的错误吗?

标签: python parsing svg


【解决方案1】:

该库正在实现一些实际上属于 SVG 2 规范的部分:Segment-completing close path operation。 Chromium 测试套件中有一个(显然失败的)test 举例说明了其含义。它给出了测试路径元素:

 <path d="M 10 10 z m 20 70 h 10 v 10 h -10 l z M 70 30 q 20 0 20 20 t -20 20 t -20 -20 T z" />

明确一点:自 SVG 1.0 以来,z 命令会关闭直线上的任何路径。这个变体可以将闭合线段定义为曲线。

不幸的是,规范的那部分看起来有点像死胡同。来自八月的 W3C SVG 工作组的 This issue 说:

Segment-completing close path 操作命令的规范是 4 年前添加的,尚未被任何浏览器实现。 (https://svgwg.org/svg2-draft/paths.html#PathDataClosePathCommand)。目前它只存在于规范中,并且作为失败的 wpt 测试。

考虑从规范中删除它?

到目前为止,似乎还没有进一步的讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多