gpt4 book ai didi

javascript - 为什么 Text 元素上的 SVG bbox 方法在不同的浏览器中给出不同的结果?

转载 作者:数据小太阳 更新时间:2023-10-29 05:38:50 25 4
gpt4 key购买 nike

我有一个 SVG 文本元素。我在 IE9、Chrome 和 Firefox 中得到了它的 bbox,它们三个都给了我不同的值。

我创建了一个非常简单的 jsfiddle显示 SVG 文本及其大小,以便您明白我的意思。我还尝试了客户端 rect,看看它是否更好。

HTML/SVG

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="75px">
<text font-size="8pt" id="text_name" x="30" y="44" fill="#000000" stroke-width="0pt" font-family="Arial,Helvetica,sans-serif" text-anchor="middle" visibility="inherit">
<tspan x="30" y="44" dy="8">Text Content</tspan></text>
</svg>
<div id="size"></div>

测试javascript

var bbox1 = document.getElementById("text_name").getBBox();
var f = document.getElementById("text_name").getClientRects();
document.getElementById("size").innerHTML = "<p>Width:" + bbox1.width + " Height: " + bbox1.height + "<br>" + "Width:" + f[0].width + " Height: " + f[0].height + "</p>";

如您所见,使用的字体是常见的Arial,在三个测试的浏览器中都存在,并且还指定了字体大小。因此,我希望文本在所有三种浏览器中具有相同的边界。我需要计算文本边界,以便可以将其导出并在另一个工具中重复使用,因此我需要一个一致的值。

如果我能找出值不同的原因,我就可以进行适当的调整以确保边界在所有情况下都适用。

这里是getBBox()在不同浏览器中的结果:

IE9 : Width:61.029998779296875 Height: 12.260002136230468
Chrome: Width:61 Height: 14
Firefox: Width:64.63671875 Height: 13

最佳答案

我会考虑设置基本 SVG 的视口(viewport)以获得更好的结果。可能需要查看装箱以确保文本元素大小调整结果一致。链接的文章详细介绍了这些内容。

<svg height="14" width="61" ...

参见 SVG Viewport and View Box

关于javascript - 为什么 Text 元素上的 SVG bbox 方法在不同的浏览器中给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com