1

根据Andorid api reference,Textpaint.breakText(String text, boolean measureForwards, float maxWidth, float[] measureWidth) 返回被测量的字符数。将永远是 <= abs(end - start)。现在我想打破“交通”(有 7 个字符)来测试它的返回值:

int cnt = mTextPaint.breakText("Traffic", true, 10000, outMeasuredWidth)

在我看来,它应该返回 7,但实际上它返回 6。为什么 6 而不是 7?谢谢。

4

1 回答 1

3

原因是“交通”一词中的“fi”被视为一个单位或字形。当您的字体使用连字时就是这种情况。

与 Paint.breakText() 的 API 参考中提到的相反,该方法计算字形而不是字符。

我建议要么使用没有连字的字体,要么使用 measureText() 来确定字符数。

有一个错误已提交,但尚未修复。

参考:

Paint.breakText() 计算字形,而不是字符

https://code.google.com/p/android/issues/detail?id=39365

于 2013-12-04T22:27:02.837 回答