adafruit/Adafruit-GFX-Library

getTextBounds not working in unicode

Crapy opened this issue · 1 comments

Crapy commented

So I am using thre standard Arduino library as well as gfx to display text in an e ink display, I have used a custom arial font and cannot figure out how to align a text to the right so the start of the text is all on the same exact horizontal line, since I am using an RTL language it will look better that way

i tried to use getTextBounds but it doesn't appear to correctly calculate the width


uint16_t w, h;

display.getTextBounds(string, 0, 0, &x1, &y1, &w, &h);

uint16_t fullx = x - w;

display.setCursor(fullx, 10);

It does work when using a string that only contains English but not unicode language (Hebrew)

Any idea what am I doing wrong? Or is it a problem with char byte calculation?

Unfortunately only 7- to 8-bit charsets are supported, as GFX needs to run on small devices going back to AVR (e.g. Arduino Uno).

There are some good alternatives if you’re using a 32-bit microcontroller, have a look at LovyanGFX and LVGL. The former is based somewhat on Adafruit_GFX so it might be an easier transition. Latter can produce really polished UIs but you’d be starting fresh.
https://github.com/lovyan03/LovyanGFX
https://lvgl.io