首页 文章

带有笔划的SVG符号在Illustrator中的大小错误

提问于
浏览
1

我'm generating an SVG file on a website and it'应该在Ilustrator中导入 . 我使用 <symbol /> 元素来存储形状定义,并使用"sheet"上的 <use /> 元素引用它 . 用户可以设置形状的大小,并且在导入到Adobe Illustrator时's really crucial that it'的大小完全相同 . 除非我添加笔划,否则它有效 .

<?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

    <use> 上的 width 值应该对 <symbol> 没有影响,因为您的符号没有 viewBox 属性 . 没有viewBox,只有 <use>xy 属性才会执行任何操作 .

    另外,请注意我们've seen a few questions on S.O. in the past, complaining about bugs in Illustrator'的SVG导入过滤器 . 如果 <symbol> 正在运行,那就太好了 . 但是,一般情况下,您可能会发现保持SVG结构简单并避免使用更高级的SVG功能可能是一个好主意 .

相关问题