【问题标题】:Inkscape ignores <use>Inkscape 忽略 <使用>
【发布时间】:2019-05-09 14:32:19
【问题描述】:

在 Inkscape 中导入以下 SVG 文件仅显示文本,但忽略 &lt;use&gt; 语句(或它引用的组)。它是错误还是功能?有什么要改变的吗?顺便说一句,&lt;g&gt; 组比示例文件中的组更复杂。该文件在 Chrome 中正确显示。 (Windows 10,Inkscape 最新)

谢谢! 马里奥

<svg width="400" height="200" x="0" y="0"
    xmlns="http://www.w3.org/2000/svg">
<defs>
  <g id="plus">
    <circle cx="40" cy="30" r="20" stroke="#FF0000" fill="none"></circle>
  </g>
</defs>
<svg x="100" y="50">
  <rect x="1" y="1" width="78" height="86" rx="10" ry="10" stroke="#0000FF" fill="none"></rect>
  <use href="#plus"></use>
  <text x="20" y="74" width="68" height="26">ABCD</text>
</svg>
</svg>

【问题讨论】:

    标签: svg inkscape


    【解决方案1】:

    &lt;use href="#plus"&gt; 应该是 &lt;use xlink:href="#plus"&gt;。另外,您需要将xmlns:xlink 属性添加到您的根 SVG 标记。

    <svg width="400" height="200" x="0" y="0"
        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <defs>
      <g id="plus">
        <circle cx="40" cy="30" r="20" stroke="#FF0000" fill="none"></circle>
      </g>
    </defs>
    <svg x="100" y="50">
      <rect x="1" y="1" width="78" height="86" rx="10" ry="10" stroke="#0000FF" fill="none"></rect>
      <use xlink:href="#plus"></use>
      <text x="20" y="74" width="68" height="26">ABCD</text>
    </svg>
    </svg>
    

    如果您进行了这些修复,文件会加载到 Inkscape 中。

    【讨论】:

    • 太棒了!有用!非常感谢。我不得不说这在 SVG 文档中没有明确显示。现在我必须检查导出这些 SVG 的编辑器是否可以简单地修改,以及它是否继续使用这些更改。再次感谢!马里奥
    • section 17.1.5的底部和Appendix G.2中指定。
    • OK 找到,但在 SVG2 xlink:href 被标记为已弃用。无论如何,问题解决了,我很高兴。
    • 老问题,但您可能知道 - Inkscape 是否有用于 &lt;use&gt; 的用户界面,还是保持 XML 编辑器打开的问题?
    • 我相信它在处理符号时会使用 &lt;use&gt; 元素(请参阅 SymbolsDialog。但这可能只是具体的 w.r.t. 符号。我不确定它如何处理引用非的 &lt;use&gt; 元素&lt;symbol&gt; 参考资料。对不起。
    猜你喜欢
    • 2015-04-03
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    相关资源
    最近更新 更多