3

在画布中测量文本时,看到如下代码是很常见的

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

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

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

4

1 回答 1

3

我的猜测是,这里使用它来添加等于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是什么都不一定具有固定的字体大小,因此使用固定值可能会导致问题。

于 2013-11-01T15:21:30.523 回答