文本填充的高度取決於字體的設計方式。在你的例子中,'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