2013-04-28 32 views
1

根據Andorid api參考,Textpaint.breakText(String text,boolean measureForward,float maxWidth,float [] measuredWidth)返回測量的字符數。將始終是< = abs(結束 - 開始)。現在我想打破「交通」(其中有7個字符),以測試它的返回值:Textpaint.breakText的返回值

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

在我看來,這應該返回7,但實際上它返回6.爲什麼6除了7?謝謝。

+0

嘗試'mTextPaint.setSubpixelText(真);' – wangyif2 2013-04-28 05:40:57

回答

3

原因是因爲「交通」一詞中的「fi」被視爲一個單位或字形。當你的字體使用ligatures時就是這種情況。

與Paint.breakText()的API參考中提到的相反,該方法計算字形而不是字符。

我會建議使用沒有連字的字體或使用measureText()來確定字符數。

有一個錯誤提交,但修復尚未完成。

參考文獻:

Paint.breakText() counts glyphs, not characters

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