在 Canvas 上测量文本时,通常会看到如下代码:

w = c.measureText(d.text + "m").width

https://github.com/jasondavies/d3-cloud/blob/master/d3.layout.cloud.js#L233

人们为什么在测量文本时会加上“m”。

最佳答案

我的猜测是,这里使用它来添加等于m字符宽度的额外填充。

在JavaScript中,对字符串使用+运算符可将其连接起来(如果尚未将其转换为字符串):

"Abc" + "m" // "Abcm"
1 + "m" // "1m"

这意味着,如果d.text的值为“Hello,world!”,则d.text + "m"将等于:
"Hello, world!m"
w = c.measureText("Hello, world!m").width

假设m字符的宽度为5个像素,则该方法的替代方法是:
w = c.measureText(d.text).width + 5

但是,我认为d.text不一定是固定的字体大小,因此使用固定的值可能会引起问题。

10-06 07:03