2013-06-10 8 views
0

У меня есть странное поведение на моем Nexus 7Nexus 7 4.2.2 холст DrawText буквы F и J обыкновение дисплей

Я использую Сассун Primary TTF нарисовать одну букву с помощью DrawText по центру холста в моей собственный вид. Это работает отлично на всех моделях я испытал, кроме моего Nexus 7.

все буквы по-прежнему работают, за исключением строчной е и J

Я проверил на 4.2.2 эмулятор и он работает отлично, а также 4.0.3, 4.1.2 и 2,3

для хорошей меры я установить его обратно по умолчанию шрифт и теперь он рисует F, но не J.

кто-нибудь была такая же проблема или может воссоздать?

Моя краска

 textPaint = new Paint(); 
     textPaint.setColor(Color.WHITE); 
     textPaint.setTextSize(650); 
     textPaint.setAntiAlias(true); 
     textPaint.setTextAlign(Align.CENTER); 
     textPaint.setTypeface(font); 
     textPaint.setDither(true); 

команда OnDraw

  canvas.drawText(letter, center, center, textPaint); 

EDIT: оказывается, его размер 650, который мне нужно, чтобы это было. Когда это опустилось, это сработало. Как я могу сохранить его на нужном мне размере?

Благодаря

ответ

2

Вы используете размер шрифта, что это слишком большой, чтобы поместиться в кэш шрифтов. Вы можете использовать комбинацию меньшего размера шрифта и масштабного преобразования на Canvas для достижения желаемого эффекта. Вы также можете использовать программный уровень (см. View.setLayerType()) в представлении, которое рисует букву.

+0

Спасибо, но как это работает на всех других версиях, включая эмулятор 4.2.2? просто играя с setLayerType – RuAware

+0

setLayerType (View.LAYER_TYPE_SOFTWARE, null); работал благодарю вас – RuAware

+0

Эмулятор по умолчанию работает с программным рендерингом. –