Merge pull request #514 from 94xhn/fix/gfxfont-word-range

Fix GFXfont range reads on big-endian targets
This commit is contained in:
Mikey Sklar authored and GitHub committed 2026-10-15 14:14:13 -07:00
commit 7e0dc0131f
1 file changed
+5 -5
+5 -5
View File
@@ -1435,7 +1435,7 @@ void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
// newlines, returns, non-printable characters, etc. Calling
// drawChar() directly with 'bad' characters of font may cause mayhem!
c -= (uint8_t)pgm_read_byte(&gfxFont->first);
c -= (uint8_t)pgm_read_word(&gfxFont->first);
GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c);
uint8_t *bitmap = pgm_read_bitmap_ptr(gfxFont);
@@ -1519,8 +1519,8 @@ size_t Adafruit_GFX::write(uint8_t c) {
cursor_y +=
(int16_t)textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
} else if (c != '\r') {
uint8_t first = pgm_read_byte(&gfxFont->first);
if ((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) {
uint16_t first = pgm_read_word(&gfxFont->first);
if ((c >= first) && (c <= pgm_read_word(&gfxFont->last))) {
GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first);
uint8_t w = pgm_read_byte(&glyph->width),
h = pgm_read_byte(&glyph->height);
@@ -1635,8 +1635,8 @@ void Adafruit_GFX::charBounds(unsigned char c, int16_t *x, int16_t *y,
*x = 0; // Reset x to zero, advance y by one line
*y += textsize_y * (uint8_t)pgm_read_byte(&gfxFont->yAdvance);
} else if (c != '\r') { // Not a carriage return; is normal char
uint8_t first = pgm_read_byte(&gfxFont->first),
last = pgm_read_byte(&gfxFont->last);
uint16_t first = pgm_read_word(&gfxFont->first),
last = pgm_read_word(&gfxFont->last);
if ((c >= first) && (c <= last)) { // Char present in this font?
GFXglyph *glyph = pgm_read_glyph_ptr(gfxFont, c - first);
uint8_t gw = pgm_read_byte(&glyph->width),