Android, Paint.getTextWidths () возвращает 0 для символа «i», если он следует за «f». Зачем? - PullRequest
0 голосов
/ 16 марта 2019

Мы используем Paint.getTextWidths () для измерения смещения символов в строке (чтобы отобразить их как спрайты в Open GL). Работает на 99% кроме одного удивительного случая. Когда символ «i» следует за «f».

myPaint.getTextWidths ("fioo", myWidthContainer) возвращает

[30.0, 0.0, 31.0, 31.0]

С другой стороны myPaint.getTextWidths ("eioo", myWidthContainer) возвращает

[30.0, 13.0, 31.0, 31.0]

Что не так с реализацией Paint.getTextWidth ()? Есть обходные пути?

Шрифт "sans-serif", который на моем устройстве - "Roboto" (Google Pixel 2).

Так настроен myPaint.

Typeface typeface = Typeface.create("sans-serif", Typeface.NORMAL);        
myPaint.setTypeface(typeface);
myPaint.setAntiAlias(true);
myPaint.setColor(Color.WHITE);
myPaint.setTextSize(54);

Android P

...