在JavaScript中获取字体指标?

时间:2011-05-28 23:19:48

标签: javascript canvas fonts

我目前正在开发一个使用HTML5画布作为渲染目标的JavaScript项目。为了让我的代码能够很好地使用我提供的(严格指定的)接口,我需要能够获取字体并提取该字体的上升和下降高度。这将允许客户更准确地定位文本。我知道我可以通过设置textBaseline属性来更改文本绘制的位置,但实际上我需要描述这些不同高度的数值。有一个简单的方法吗?如果没有,是否有一个(希望轻量级)库可以为我处理它?我发现的大多数提议的解决方案都是重量级的字体渲染库,这对于这个问题来说似乎是一种大规模的过度杀伤。

3 个答案:

答案 0 :(得分:4)

简短的回答是,没有内置的方式,而且你自己也很好。

因此,大多数人只是估计它们。有些人预先计算了所有的值,如果你只使用几种字体,这不是太多的工作。

第三种方法是在内存中制作画布并打印一些字母(例如,QO)并以编程方式尝试使用每像素碰撞确定上升和下降。这是一种痛苦,可能会很慢,具体取决于字体的数量和您想要的准确度,但如果您不想预先计算这些值,这是最准确的方法。

答案 1 :(得分:4)

一些关于HTML5排版度量标准的{p> This article讨论了问题和part solution using CSS - 尽管offsetTop等的整数舍入是一个问题(可能会使用getBoundingClientRect()为某些人获取正确的浮点值浏览器)。

答案 2 :(得分:0)

在此作为参考: 可以使用以下方法测量文本的宽度:

ctx.measureText(txt).width

http://www.w3schools.com/tags/canvas_measuretext.asp