BufferedImage drawString поврежденные буквы - PullRequest
0 голосов
/ 09 ноября 2018

Я пишу программу на Kotlin для запуска на Raspberry Pi. Я использую небольшой OLED дисплей 128x64 пикселей

Для отображения текста я рисую его на BufferedImage, а затем отображаю это изображение

 val bufferedImage = BufferedImage(128, 64, BufferedImage.TYPE_INT_RGB)
 val g = bufferedImage.createGraphics()
 g.paint = Color.WHITE
 g.font = Font("PixelMix", Font.BOLD, /*Font size*/8)
 g.drawString("IP: 192.168.1.12", 0, 24)
 g.dispose()

 display.drawImage(bufferedImage, 0, 0)

ссылка на шрифт: https://www.dafont.com/pixelmix.font

Поскольку пространство на экране очень ограничено, я использую мелкий шрифт.

Но тут возникает проблема - следующий код создает изображение, в котором у первого 1 отсутствует вертикальная линия, а у последнего 1 - квадрат.

Когда я делаю g.font = Font("PixelMix", Font.PLAIN, 10), тогда у 2 в 192 отсутствует крайняя правая строка пикселей, аналогично размеру шрифта 12. На шрифте 16 P отсутствует вертикальная линия и так далее. Это просто размер шрифта 24, когда все выглядит приемлемым, но размер 24 слишком велик для экрана такого размера.

Мой вопрос сейчас заключается в том, как нарисовать строку на BufferedImage, чтобы я не получал подобные артефакты?

EDIT:

При размере шрифта 10 для отображения символа используется ровно 8 пикселей (по вертикали) Что касается размера шрифта 8, это 6 пикселей по вертикали, а для 16 это 12 пикселей

Я сделал g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF), но это не помогло

...