文本填充的高度取决于字体的设计方式。在你的例子中,'H'不能扩展“em”测量的整个高度。将会出现低于基线的字形(如“y”,“g”等)和达到较高的字形(例如,重音符号)。
您可以通过选择大于所需垂直大小的字体大小来进行补偿。对于特定字体,字体大小与呈现高度的比率应该是不变的。所以一旦你找出正确的比例,你可以用它来处理任何文字。
例如,看看下面的例子
<svg x="0px" y="0px" width="20cm" height="20cm" font-family="Arial">
<!-- text to fit 4cm high rectangle -->
<rect x="0" y="1cm" width="100%" height="4cm" fill="red" fill-opacity="0.2"/>
<text x="0cm" y="5cm" font-family="'Arial'" font-size="4cm">
<tspan font-size="1.4em">Random text</tspan>
</text>
</svg>
我想使文本填充红色矩形的高度。我首先将字体大小设置为4cm,然后使用<tspan>
将字体大小调整为1.4em。对于Arial,这是资本的高度和em尺寸之间的比率。我只是通过实验发现了这一点。
现在我知道这个比例,我可以再次用于不同的字体大小:
<svg x="0px" y="0px" width="20cm" height="20cm" font-family="Arial">
<!-- text to fit 3cm high rectangle -->
<rect x="0" y="7cm" width="100%" height="3cm" fill="red" fill-opacity="0.2"/>
<text x="0cm" y="10cm" font-family="'Arial'" font-size="3cm">
<tspan font-size="1.4em">Random text</tspan>
</text>
</svg>
我已经改变了字体大小3厘米,但我可以重用1.4比例使其适合新尺寸。
Demo fiddle here
可惜,这招只适用于高度,这是为特定的字体大小不变。没有简单的方法让一段文字适合特定的宽度。除了应用自定义transform
或修改font-size-adjust
为每个文本。
你的意思是内部完全拟合[ ascender](http://www.fontshop.com/glossary/)高4厘米? [''](http://www.w3.org/TR/SVG/text。html)只有'textLength'和'lengthAdjust'属性,所以调整'font-size =“151pt”'最接近4cm高 –
2014-10-04 23:29:23