android - Textpaint.breakText 的返回值

标签 android

根据 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() 来确定字符数。

已提交错误,但尚未进行修复。

引用资料:

Paint.breakText() counts glyphs, not characters

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

关于android - Textpaint.breakText 的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259810/

相关文章:

iphone - 智能手机可以从几英尺的距离(不是 NFC)读取 RFID 标签吗?

java - Android Studio 应用程序在真实设备上崩溃,但在模拟器上运行

javascript - 安卓。网页 View 。使用 Javascript 显示页面的一部分

java - 如何将 Java 对象转换为 JSONObject?

java - 切换 LinearLayout 的不可见和可见

android - GL_TRIANGLES 的问题

java - Android - 计算每个缩放级别的 map 距离,例如 Gmaps 比例尺

java - Eclipse Jar 导出脚本

java - 如何在 Mat 对象中插入一条线或矩形(openCV)

Android线程问题,为什么当我使用工作线程时ui仍然阻塞?