Проблемы с кернингом в Android Textview


У меня есть интересная вещь (ошибка?), С которой я столкнулся при работе с TextView в Android.

У меня есть текстовое представление со следующими атрибутами (вырезано для краткости):

<TextView
    android::id="@+id/myId"
    android:text="Some Temporary Text 1234"
    android:textSize="7sp"
    android:typeface="monospace"
    ...
/>

Это отображает как ожидалось, за исключением того, что кернинг отличается от текстового представления, которое устанавливает эти свойства следующим образом:

TextView textView = (TextView) xxx.findViewByID(R.id.myId);
textView.setTextSize(7);
textView.setTypeface(Typeface.MONOSPACE);

Я бился головой о стену, пытаясь понять, почему при переходе от построения представления в коде к XML результат был другим. Трудно было сказать, что происходит, потому что у меня было подключено только одно устройство.

Итак, я сделал снимок устройства с каждым методом и использовал Photoshop для наложения текста друг на друга. Текст и шрифт идентичны (т.е. я могу выстроить буквы пиксель за пикселем), но кернинг (расстояние между буквами) был другим!

Только для этого текстового представления я переключился на установку его в коде вместо XML и снова сравнил.... и они идентичны.

Вот сравнение двух выходов. Верх сделан в XML. Дно сделано в коде.

Редактировать: Пожалуйста, обратите внимание, пропущенный "INT" на картинке только из-за отсечения картинки, когда я захватил пример. Текстовые строки одинаковы, и "INT" присутствует.... только на картинке.

Так что, безусловно, есть разница. Но обратите внимание, что действительные символы одинаковы.

Я что-то упустил в XML? Я искал варианты, связанные с кернингом, но помимо установки собственного шрифта (что я не хочу делать), я не вижу способа отрегулировать кернинг в Android. Есть ли способ? Это ошибка в Android?

Я могу обойти эту проблему, но я пытался устранить код, поскольку он действительно неуместен.

0 ответов

Другие вопросы по тегам