Illustrator

时间:2017-03-25 21:19:39

标签: svg adobe-illustrator

我正在网站上生成一个SVG文件,它应该在Ilustrator中导入。我使用<symbol />元素来存储形状定义,并使用“工作表”上的<use />元素引用它。用户可以设置形状的大小,并且在导入到Adobe Illustrator时,它的大小完全相同非常重要。除非我添加笔划,否则它有效。

<?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未来版本的笔划对齐属性的讨论。但浏览器还不支持,而且Adobe Illustrator也不支持。

所以我的问题是:有没有办法如何调整SVG,以便Illustrator使用<use />元素中width属性设置的大小渲染形状,而不管笔画设置

1 个答案:

答案 0 :(得分:0)

width上的<use>值应该对您的<symbol>无效,因为您的符号没有viewBox属性。如果没有viewBox,则只有x的{​​{1}}和y属性可以执行任何操作。

另外,请注意我们在S.O.上看过几个问题。在过去,抱怨Illustrator的SVG导入过滤器中的错误。如果<use>正在运行,那就太好了。但是,一般情况下,您可能会发现保持SVG结构简单并避免使用更高级的SVG功能可能是一个好主意。