mirror of
https://github.com/adafruit/Adafruit-GFX-Library.git
synced 2026-10-26 22:10:52 +00:00
Merge pull request #514 from 94xhn/fix/gfxfont-word-range
Fix GFXfont range reads on big-endian targets
This commit is contained in:
1 file changed
+5
-5
+5
-5
@@ -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),
|
||||
|
||||
Reference in new issue
Block a user