テキストで任意の幅と高さを正確に埋めたい場合、SVG でそれを行う簡単な方法はありません。<text>
要素の幅と高さを指定することはできません。少なくとも現在の SVG 仕様 (1.1) にはありません。
ただし、この効果を実現する方法はいくつかあります。
あなたが提案したように、1つの方法は変換を使用することです:
<svg>
<text font-size="10px" font-family="Verdana" transform="translate(99,400) scale(3.5,13.7)">SQUASHED TEXT</text>
<rect x="100" y="300" width="300" height="100" fill="none" stroke="red" />
</svg>
2 番目の方法は、内側の<svg>
要素を使用し、テキストの境界に一致するように viewBox を設定することです。次に、 を設定しpreserveAspectRatio="none"
ます。
<svg>
<svg x="100" y="100" width="300" height="100" viewBox="0.2 -7.3 86 7.3" preserveAspectRatio="none" overflow="visible">
<text font-size="10px" font-family="Verdana">SQUASHED TEXT</text>
</svg>
<rect x="100" y="100" width="300" height="100" fill="none" stroke="red" />
</svg>
この方法はより冗長ですが、テキストの一部に適切な viewBox を見つけたら、任意のサイズの四角形に非常に簡単に合わせることができるという利点があります。内側のx
、y
、width
を長方形のサイズに設定するだけです。height
<svg>
デモはこちら: http://jsfiddle.net/ZRgEF/3/