【发布时间】:2014-12-05 01:48:11
【问题描述】:
我正在尝试测量用于使用带有 SVG 文本标签的给定字体呈现给定字符串的确切高度。
我尝试使用getBBox 和getExtentOfChar,但是这两个返回的高度在实际呈现的文本上方(有时下方)包含一些额外的空间。
http://upload.wikimedia.org/wikipedia/commons/3/39/Typography_Line_Terms.svg 使用此图像中的术语,我试图获取正在呈现的文本的大写高度 + 下降高度。或者,如果这是不可能的,只是上限高度。有没有计算这些值的好方法?
这是一个快速代码笔,显示了我正在谈论的额外空间: http://codepen.io/pcorey/pen/amkGl
HTML:
<div>
<svg><text>Hello</text></svg>
<svg><text>Age</text></svg>
</div>
JS:
$(function() {
$('svg').each(function() {
var svg = $(this);
var text = svg.find('text');
var bbox = text.get(0).getBBox();
svg.get(0).setAttribute('viewBox',
[bbox.x,
bbox.y,
bbox.width,
bbox.height].join(' '));
});
});
我知道这是一个相当特定于字体的东西,所以这可能是完全不可能的......
【问题讨论】:
标签: javascript css svg