我们的一位开发人员遇到了Paint.breakText()
(其中表示计算“字符”)的问题实际上是在计算字形。
想象一下,你只包裹一个单词"fit"
。它将适合该行,因此您希望breakText()
返回3.在某些设备上,它会;在其他人身上,“fi”形成一个连字,breakText()
返回 2 。这导致你画画
fi
t
......这不是你想要的!
有吗
breakText()
的标志是否计算Java字符,而不是字形?或"fi"
将被视为单个字形的方法是什么?答案 0 :(得分:2)
这似乎有些次优,但我们处理它的方式是使用paint.breakText("fit", true, 1000, null) == 2
作为bugExists
标志,然后使用measureText()
检查结果。
答案 1 :(得分:0)
我在这里找到了如何做得好:Android: is Paint.breakText(...) inaccurate?
我的代码是:
on onCreate:
paintOfText.setSubpixelText(true);
breakTextNumber = paintOfText.breakText(textToBreak, true,
maximumSizeOfText, null);
在渲染类:
if (breakTextNumber < textToBreak.length()) {
while (textToBreak.charAt(breakTextNumber) != ' ') {
breakTextNumber--;
}
myCanvas.drawText(textToBreak.substring(0, breakTextNumber),
placeToDrawX, placeToDrawY, paintOfText);
myCanvas.drawText(
textToBreak.substring(breakTextNumber+1),
placeToDrawX, placeToDrawY2,, paintOfText);
}
}
这只是将文本分成2行,用空格剪切字符串。 希望它有所帮助。