Я пишу программу на 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)
, но это не помогло