【发布时间】:2013-03-04 00:52:52
【问题描述】:
已知盒子大小。文本字符串长度未知。在不破坏其纵横比的情况下使文本适合框。
经过一晚上的谷歌搜索和阅读 SVG 规范,我很确定如果没有 JavaScript,这是不可能的。我能得到的最接近的方法是使用 textLength 和 lengthAdjust 文本属性,但这只会沿一个轴拉伸文本。
<svg width="436" height="180"
style="border:solid 6px"
xmlns="http://www.w3.org/2000/svg">
<text y="50%" textLength="436" lengthAdjust="spacingAndGlyphs">UGLY TEXT</text>
</svg>
我知道SVG Scaling Text to fit container 和fitting text into the box
【问题讨论】:
-
我最终在 javascript 中创建了一个循环来增加字体大小,直到 getBBox 显示它不再适合。丑,所以还是希望有别的办法。
-
我也一直在尝试让同样的功能发挥作用。我找到的最好的方法和你做的一样。循环浏览 JS 并更改字体直到适合。但即使在字体中,上下仍有一些空白,因此您似乎无法正确使用它。
-
这太糟糕了,这似乎是一个基本的东西,但规范很清楚它只向一个方向延伸。在玩了之后,我可以通过使用变换仅修改 Y 比例来接近它,又名:
transform="scale(0,5)"- jsfiddle.net/G5L8W -
我正在尝试考虑是否有一种方法可以计算应用于 x 轴上的文本的比例并将其应用于 y 轴,但这也意味着添加检查确保你没有过度缩放 Y,然后你又回到使用 JS。我敢打赌你可以更好地使用 JS 的变换/缩放。
标签: svg