2014-03-27 208 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