我需要 SVG 文本元素的“严格”边界。当我使用 时getBBox
,我得到的高度似乎包括字体的全部可能字形高度,而不考虑文本中的特定字符。我得到的宽度因浏览器而异,但通常比字符实际占用的长度多几个单位。有没有办法得到一个只包含我文本中的字符的框?
例如,我希望下面创建的矩形紧紧地包裹文本“.....”但是,在返回的边界框中有很多“剩余”垂直空间getBBox
。谢谢你的帮助。这是我在 StackOverflow 上的第一篇文章,因此我也欢迎对格式/问题演示文稿提出批评。
<svg width="400" height="400">
<text>.....</text>
<rect style="fill:none;stroke:rgb(0,100,100);stroke-width:1"/>
</svg>
<script type="text/javascript">
var layout = function() {
var numB = $("text").get(0).getBBox();
$("rect").attr("x", 0);
$("rect").attr("y", 0);
$("rect").attr("width", numB.width);
$("rect").attr("height", numB.height);
$("text").attr("y", numB.height);
}
document.onreadystatechange = function () {
if (document.readyState == "complete") {
layout();
}
}
</script>