SVG和字体度量

18
有没有办法在SVG中获取字体度量?我需要的是下降、上升、最大高度和前进。(descent, ascent, max height, advance)
我需要这个来同时绘制文本和图形,比如流程图。
例如,我需要在文本周围画一个框,并从“x”字母大小的中部而不是框侧面的中心画连接器线。
1个回答

5
如果您有DOM访问权限,则有许多SVG DOM方法用于文本元素。然后,大多数svg元素都可用getBBox方法。
如果您正在处理SVGFonts,则数据已经以普通属性的xml格式可用,例如ascent,descent等。
对于您的用例,我建议使用getBBox,因为它也可以处理图形元素(以防您想要将更多内容添加到图表中)。

3
我绝对不建议使用 getBBox,因为它只考虑文本的绝对边界。然而,为了正确地放置文本,必须尊重上升和下降。SVGTextElement 元素的 y 属性指定了 基线 的垂直位置。因此,仅使用 BBox 并不能帮助很多。问题是,SVG DOM 方法不允许查询上升和下降信息!我不知道规范为什么会缺少这个功能。 - radlan
4
为了计算下降,这是我所做的。将SVG中文本元素的“y”设置为零。现在你的基线在零点。然后从getBBox获取“y2”属性,那将是你的“下降”高度。 - Chad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接