Android: ¿es Paint.breakText (…) impreciso?

Tengo una vista que dibuja un rectángulo con una línea de texto dentro de él. La vista utiliza texto de ruptura para garantizar que ningún texto se extiende fuera del rectángulo; Ignora cualquier texto que lo haga. Esto funciona bien para algunos personajes, pero a menudo las cuerdas compuestas de 's y' f se extienden fuera del rectángulo. Por lo tanto, estoy en la necesidad de un control de la cordura aquí: ¿Hay alguna falla obvia en mi código de abajo, o es posible que Paint.breakText (…) es inexacta?

public void onDraw(Canvas canvas) { int MARGIN = 1; int BORDER_WIDTH = 1; Paint p = new Paint(); p.setAntiAlias(true); p.setTextSize(12); p.setTypeface(Typeface.create(Typeface.SERIF, Typeface.NORMAL)); RectF rect = getRect(); float maxWidth = rect.width() - MARGIN - BORDER_WIDTH * 2; String str = getText(); char[] chars = str.toCharArray(); int nextPos = p.breakText(chars, 0, chars.length, maxWidth, null); str = str.substring(0, nextPos); float textX = MARGIN + BORDER_WIDTH; float textY = (float) (Math.abs(p.getFontMetrics().ascent) + BORDER_WIDTH + MARGIN); canvas.drawText(str, textX, textY, p); p.setStrokeWidth(BORDER_WIDTH); p.setStyle(Style.STROKE); canvas.drawRect(rect, p); } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.