我目前正在开发一个使用HTML5画布作为渲染目标的JavaScript项目。为了让我的代码能够很好地使用我提供的(严格指定的)接口,我需要能够获取字体并提取该字体的上升和下降高度。这将允许客户更准确地定位文本。我知道我可以通过设置textBaseline
属性来更改文本绘制的位置,但实际上我需要描述这些不同高度的数值。有一个简单的方法吗?如果没有,是否有一个(希望轻量级)库可以为我处理它?我发现的大多数提议的解决方案都是重量级的字体渲染库,这对于这个问题来说似乎是一种大规模的过度杀伤。
答案 0 :(得分:4)
简短的回答是,没有内置的方式,而且你自己也很好。
因此,大多数人只是估计它们。有些人预先计算了所有的值,如果你只使用几种字体,这不是太多的工作。
第三种方法是在内存中制作画布并打印一些字母(例如,Q
和O
)并以编程方式尝试使用每像素碰撞确定上升和下降。这是一种痛苦,可能会很慢,具体取决于字体的数量和您想要的准确度,但如果您不想预先计算这些值,这是最准确的方法。
答案 1 :(得分:4)
getBoundingClientRect()
为某些人获取正确的浮点值浏览器)。
答案 2 :(得分:0)
在此作为参考: 可以使用以下方法测量文本的宽度:
ctx.measureText(txt).width