2017-03-25 20 views
1

我在网站上生成SVG文件,它应该在Ilustrator中导入。我使用<symbol />元素来存储形状定义,并将其与“sheet”上的<use />元素一起引用。用户可以设置形状的大小,导入到Adobe Illustrator中时尺寸完全相同,这一点非常重要。它可以工作,除非我添加中风。在Illustrator中,有中风的SVG符号的大小错误

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg id="SvgjsSvg1000" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs" width="210mm" height="297mm" viewBox="0 0 210 297" viewbox="0 0 210 297"> 
    <defs id="SvgjsDefs1001"> 
     <symbol id="shape_id70" preserveAspectRatio="xMinYMin meet" viewBox="0 0 27.841039657592773 12.2083101272583"> 
      <path id="SvgjsPath1030" d="M26.4405 13.067C25.685728 11.72066 22.49458 8.90142 20.73442 7.678030000000001C22.99088 7.6388854 23.85819 7.6146637 28.738950000000003 7.456081C26.298620000000003 6.628644 23.737080000000002 5.904501 21.418080000000003 4.973881C23.937200000000004 4.5081560000000005 26.519460000000002 4.085806000000001 28.376120000000004 3.7947010000000008C28.376120000000004 3.7946453179000006 19.370760000000004 2.7013810000000005 8.358420000000002 4.414499000000001L9.412540000000002 1.364679000000001L6.497860000000001 3.520859000000001L4.442800000000001 0.858699000000001L4.324531000000001 4.464059000000001L0.897911000000001 5.542179000000001L4.249861000000001 6.913239000000001L4.236664300000001 10.198599000000002L6.192894300000001 7.622079000000001L9.099554300000001 8.802649L8.143547300000002 6.432539C12.463087300000002 6.813516 22.5756473 8.818239 26.440547300000002 13.067009Z" fill="none"></path> 
     </symbol> 
    </defs> 
    <use id="SvgjsUse1034" xlink:href="#shape_id70" x="0" y="0" width="50"></use> 
</svg> 

这在浏览器和Illustrator中都很好。但是当我添加属性stroke-width="0.1" stroke="#000"。在Illustrator中,形状的大小变化为48.951。尽管浏览器仍然是50。我尝试将这些属性添加到<symbol />,<path /><use />元素中,结果相同。

我知道SVG标准没有任何控制如何渲染笔画的属性。我知道有关SVG未来版本的stroke-alignment属性的讨论。但浏览器目前还不支持Adobe Illustrator。

所以我的问题是:有没有什么办法如何调整SVG使插图会使形状与由width属性在<use />元素设置的行程设置

+0

如果你觉得你已经发现了一个bug inkscape最好向[bugtracker]报告(https://bugs.launchpad.net/inkscape) –

回答

0

width无论大小您的<use>上的值应该对您的<symbol>没有影响,因为您的符号没有viewBox属性。没有viewBox,只有<use>xy属性会做任何事情。

另外,请注意,我们在S.O.上看到过几个问题。在过去,抱怨Illustrator的SVG导入过滤器中存在错误。如果<symbol>正在工作,那很好。但是,一般来说,您可能会发现保持SVG结构简单并避免使用更高级的SVG功能可能是一个好主意。

+0

对不起。虽然简化源我删除了太多。我编辑了我的问题并添加了viewBox属性。这只是一个错误。我知道,当我有一个定义的形状(比如说在一个组中,而不是符号),我也可以使用参考()。但在这种情况下,我需要调整定义的大小,这就是我想要避免的。 – Tacud

+0

然后,如果是这样的话,它肯定听起来像是在Illustrator中的错误。您可以尝试向他们报告。 –

+0

与此同时,您可能不得不使用您建议的替代方案,即一个组。您不必调整定义大小。你总是可以在''元素上使用'transform'。 https://jsfiddle.net/gwauq55x/ –