SVGテキスト要素の「タイトな」境界が必要です。を使用するgetBBox
と、テキスト内の特定の文字に関係なく、フォントの可能な完全なグリフの高さを含むように見える高さが得られます。幅で得られるものはブラウザごとに異なりますが、通常、文字が実際に占める長さよりも数単位多く含まれています。テキスト内の文字のみを正確にラップするボックスを取得する方法はありますか?
たとえば、下に作成したrectでテキスト「.....」をしっかりとラップしたいのですが、。によって返されるバウンディングボックスには「残り」の垂直方向のスペースがたくさんあります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>