根据 Andorid api 引用,Textpaint.breakText (String text, boolean measureForwards, float maxWidth, float[] measuredWidth) 返回被测量的字符数。将始终 <= abs(end - start)。现在我想打破“Traffic”(有 7 个字符)来测试它的返回值:
int cnt = mTextPaint.breakText("Traffic", true, 10000, outMeasuredWidth)
在我看来,它应该返回 7,但实际上它返回 6。为什么 6 而不是 7?谢谢。
最佳答案
原因是因为单词Traffic中的“fi”被认为是一个单位或字形。当您的字体使用 ligatures 时就是这种情况。 .
与 Paint.breakText() 的 API 引用中提到的相反,该方法计算字形而不是字符。
我建议使用不带连字的字体或使用 measureText() 来确定字符数。
已提交错误,但尚未进行修复。
引用资料:
关于android - Textpaint.breakText 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259810/