Intereting Posts

Пользовательский шрифт в Android отличается по-разному в разных API

Я использую пользовательский шрифт .ttf в моем приложении для Android. Я загружаю его обычным способом:

myTypeface = Typeface.createFromAsset( getAssets(), "myTypeface.ttf"); 

Затем я назначаю свой шрифт в своей деятельности … довольно простой материал:

 TextView tv = (TextView) findViewById(R.id.sample_text); tv.setTextSize(12); tv.setTypeface(App.myTypeface); 

Проблема, с которой я сталкиваюсь, заключается в том, что на некоторых устройствах, использующих более поздние API (я специально заметил это в эмуляторе для Asus Transformer), текст выглядит немного более смелым, менее однородным по ширине и более перемешанным по вертикали. Под этой последней частью я имею в виду, что некоторые персонажи размещаются вертикально немного выше или ниже других, придавая немного текстуру ролика.

Рассмотрим снимки экрана ниже

Это текст, отображаемый на эмуляторе с таким же разрешением и разрешением dpi, как и Transformer, но с использованием уровня API Google 8.

i45.tinypic.com/142toud.png

Выглядит довольно стандартный, не так ли?

Теперь рассмотрим текст, отображаемый в эмуляторе с тем же разрешением и разрешением dpi, но используя уровень API Google 15:

i47.tinypic.com/24zhekn.png

Сначала текст может выглядеть схожим, хотя вы можете заметить, что это кажется немного более смелым. Однако посмотрите «c» на «быстрый». Вы заметите, что он сидит ниже и выше, чем «c» в первом рендеринге. Вы также заметите, что если вы посмотрите на нижнюю часть символов в слове «быстрый», они не выровнены внизу.

Эти проблемы могут показаться небольшими, но на экранах с большим количеством текста он начинает выглядеть действительно непрофессиональным.

Кто-нибудь видел это или объяснил? Я бы хотел, чтобы текст выглядел единообразно в более поздних API.

Большое спасибо за ваше время!

Solutions Collecting From Web of "Пользовательский шрифт в Android отличается по-разному в разных API"

Хорошо, так что, похоже, в обоих случаях применяются только следующие флаги:

 Paint.DEV_KERN_TEXT_FLAG Paint.ANTI_ALIAS_FLAG 

Попробуйте сделать это и посмотрите, не являются ли результаты разными (не обязательно улучшены, но даже заметны вообще):

 textView.setPaintFlags(textView.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG);