Проблемы с кернингом в 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?
Я могу обойти эту проблему, но я пытался устранить код, поскольку он действительно неуместен.