2014-03-27 209 views
1

是否有一个可以智能处理递归(即自引用)svg文件的现有渲染器?渲染递归SVG文件

例如,该代码this question

<svg width="100%" height="100%" viewBox="-100 -100 200 200" version="1.1" 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <circle cx="-50" cy="-50" r="30" style="fill:red" /> 
    <image x="10" y="20" width="80" height="80" xlink:href="recursion.svg" /> 
</svg> 

没有在Firefox,Chrome或Inkscape中呈现正确 - 但它似乎并不 努力使,保持跟踪渲染器它有多少时间打开特定文件,经过迭代的一些理智的数量停止...

(如果不存在,在那里我可以去寻找,如果我想编写一个自己吗?)

+0

根据SVG规范,这些循环依赖关系被视为错误,并且需要UA检测并分离出这样的循环。他们在什么时候没有定义,详见http://www.w3.org/TR/SVGTiny12/linking.html#circular-iri。 –

+0

Phooey。猜猜我会尝试写我自己的,然后... – linkhyrule5

回答

0

为了保护用户的隐私,图像文件必须是独立的。即如果您从图像标记中引用SVG文件,并且该SVG文件本身包含图像,则图像数据必须指定为data URL

您可以使用数据URL尽可能深地嵌套图像,尽管这不是真正的递归,因为每次都必须提供完整的副本,并且数据URL会变得非常大。

+0

对不起,我不太明白这个答案。 – linkhyrule5

+0

首先 - 我不希望在浏览器或HTML文档中使用它,但这是为了独立使用。其次 - 你的数据网址是什么意思?这是否意味着一般情况下,我不能轻松地嵌套复杂的图像文件? – linkhyrule5

+0

下面是SVGs作为数据URL的示例https://codepen.io/tigt/post/optimizing-svgs-in-data-uris 您可以轻松地嵌套复杂的SVG,但不能轻松地完成多层筑巢。 – nHaskins