How to modify some of the hx8357 lib biggest fonts to a different font?

Hello

Font72rle.h (15.8 KB)

The attached file from a hx8357_TFT lib has perfectly big fonts (its a .c file btw but wasn't allowed to be uploaded) for the TFT I'm using. It unfortunately however only contain numbers and 3 other chars but I need an "E" and "+" and a wider "-" (and maybe little thicker) which I hope could be change in the attached file. It contain 3 more characters that I won't use and thus planned to change these to the letters and chars I need.

I have never done this before on a TFT but I really don't get how the fonts are made since it doesn't really make any sense with how its shown in the code, as I see it that is.

I thought just black and white as basic and thus just both extremes but the code doesn't represent those colors fex 0xFF and 0x00 but only shades of blue when I test them, so I'm obviously miss something here.

Anyone knows how to write in the attached file to change the different chars to get what I need or just a clue to how its built? The lib numbers are optimized for fast update which I need so I'm not really searching for another lib or so.

Thanks!

Regards Kevin

Hi,
Code Font72rle.h

// Font 8
//
// This font has been 8 bit Run Length Encoded to save FLASH space
//
// It is a Arial 75 pixel height font intended to display large numbers
// This font only contains characters [space] 0 1 2 3 4 5 6 7 8 9 0 : - .
// All other characters print as a space

#include <avr/pgmspace.h>


PROGMEM const unsigned char widtbl_f72[96] =          // character width table
{
  29, 29, 29, 29, 29, 29, 29, 29,     // char 32 - 39
  29, 29, 29, 29, 29, 29, 29, 29,     // char 40 - 47
  55, 55, 55, 55, 55, 55, 55, 55,     // char 48 - 55
  55, 55, 29, 29, 29, 29, 29, 29,     // char 56 - 63
  29, 29, 29, 29, 29, 29, 29, 29,     // char 64 - 71
  29, 29, 29, 29, 29, 29, 29, 29,     // char 72 - 79
  29, 29, 29, 29, 29, 29, 29, 29,     // char 80 - 87
  29, 29, 29, 29, 29, 29, 29, 29,     // char 88 - 95
  29, 29, 29, 29, 29, 29, 29, 29,     // char 96 - 103
  29, 29, 29, 29, 29, 29, 29, 29,     // char 104 - 111
  29, 29, 29, 29, 29, 29, 29, 29,     // char 112 - 119
  29, 29, 29, 29, 29, 29, 29, 29      // char 120 - 127
};

// Row format, MSB left

PROGMEM const unsigned char chr_f72_20[] =
{
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
  0x7E
};

PROGMEM const unsigned char chr_f72_2D[] =
{
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
  0x36, 0x91, 0x0A, 0x91, 0x0A, 0x91, 0x0A, 0x91,
  0x0A, 0x91, 0x0A, 0x91, 0x0A, 0x91, 0x7F, 0x7F,
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x07
};

PROGMEM const unsigned char chr_f72_2E[] =
{
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x48, 0x88,
  0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88,
  0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88,
  0x44
};

PROGMEM const unsigned char chr_f72_30[] =
{
  0x7F, 0x70, 0x8A, 0x28, 0x90, 0x23, 0x94, 0x1F,
  0x98, 0x1C, 0x9A, 0x1A, 0x9C, 0x18, 0x9E, 0x16,
  0xA0, 0x15, 0x8C, 0x06, 0x8C, 0x14, 0x8B, 0x0A,
  0x8B, 0x12, 0x8A, 0x0E, 0x89, 0x12, 0x89, 0x10,
  0x89, 0x11, 0x88, 0x12, 0x88, 0x10, 0x89, 0x12,
  0x89, 0x0F, 0x88, 0x14, 0x88, 0x0E, 0x89, 0x14,
  0x88, 0x0E, 0x88, 0x16, 0x88, 0x0D, 0x88, 0x16,
  0x88, 0x0D, 0x88, 0x16, 0x88, 0x0C, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0A, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x0A, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0C, 0x88, 0x16,
  0x88, 0x0D, 0x88, 0x16, 0x88, 0x0D, 0x88, 0x16,
  0x88, 0x0D, 0x89, 0x14, 0x89, 0x0E, 0x88, 0x14,
  0x88, 0x0F, 0x89, 0x12, 0x89, 0x10, 0x88, 0x12,
  0x88, 0x11, 0x89, 0x10, 0x89, 0x11, 0x8A, 0x0E,
  0x8A, 0x12, 0x8B, 0x0A, 0x8B, 0x14, 0x8C, 0x06,
  0x8C, 0x15, 0xA0, 0x16, 0x9E, 0x18, 0x9C, 0x1A,
  0x9A, 0x1C, 0x98, 0x1F, 0x94, 0x23, 0x90, 0x28,
  0x8A, 0x4D
};

PROGMEM const unsigned char chr_f72_31[] =
{
  0x7F, 0x78, 0x85, 0x2F, 0x86, 0x2F, 0x86, 0x2E,
  0x87, 0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x89, 0x2B,
  0x8A, 0x2A, 0x8B, 0x29, 0x8C, 0x27, 0x8E, 0x26,
  0x8F, 0x25, 0x90, 0x24, 0x91, 0x22, 0x93, 0x20,
  0x95, 0x1E, 0x8D, 0x00, 0x88, 0x1D, 0x8C, 0x02,
  0x88, 0x1D, 0x8B, 0x03, 0x88, 0x1D, 0x8A, 0x04,
  0x88, 0x1D, 0x88, 0x06, 0x88, 0x1D, 0x87, 0x07,
  0x88, 0x1D, 0x85, 0x09, 0x88, 0x1D, 0x83, 0x0B,
  0x88, 0x1D, 0x81, 0x0D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x7F, 0x1
};

PROGMEM const unsigned char chr_f72_32[] =
{
  0x7F, 0x6F, 0x8A, 0x27, 0x92, 0x21, 0x96, 0x1D,
  0x9A, 0x1A, 0x9C, 0x18, 0x9E, 0x16, 0xA0, 0x14,
  0xA2, 0x12, 0x8E, 0x07, 0x8D, 0x11, 0x8B, 0x0C,
  0x8C, 0x0F, 0x8A, 0x10, 0x8A, 0x0F, 0x89, 0x12,
  0x8A, 0x0D, 0x89, 0x14, 0x89, 0x0D, 0x89, 0x14,
  0x89, 0x0D, 0x88, 0x16, 0x89, 0x0C, 0x88, 0x16,
  0x89, 0x0B, 0x88, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x88, 0x18, 0x88, 0x0F, 0x84, 0x18,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2C,
  0x89, 0x2C, 0x88, 0x2C, 0x89, 0x2C, 0x89, 0x2B,
  0x89, 0x2C, 0x89, 0x2B, 0x89, 0x2B, 0x8A, 0x2A,
  0x8A, 0x2A, 0x8B, 0x29, 0x8B, 0x29, 0x8B, 0x29,
  0x8B, 0x29, 0x8B, 0x29, 0x8C, 0x28, 0x8C, 0x28,
  0x8C, 0x28, 0x8C, 0x28, 0x8C, 0x27, 0x8C, 0x28,
  0x8C, 0x28, 0x8C, 0x28, 0x8C, 0x28, 0x8C, 0x27,
  0x8D, 0x27, 0x8D, 0x27, 0x8C, 0x28, 0x8C, 0x28,
  0x8C, 0x29, 0x8B, 0x29, 0x8B, 0x29, 0x8A, 0x2A,
  0x8A, 0x2B, 0x89, 0x2B, 0x8A, 0x2B, 0x89, 0x2B,
  0x89, 0x2C, 0xAA, 0x0A, 0xAB, 0x0A, 0xAB, 0x0A,
  0xAB, 0x09, 0xAC, 0x09, 0xAC, 0x09, 0xAC, 0x09,
  0xAC, 0x09, 0xAC, 0x74
};

PROGMEM const unsigned char chr_f72_33[] =
{
  0x7F, 0x6F, 0x89, 0x29, 0x90, 0x23, 0x94, 0x1F,
  0x97, 0x1D, 0x9A, 0x1A, 0x9C, 0x18, 0x9E, 0x16,
  0xA0, 0x15, 0x8C, 0x06, 0x8C, 0x14, 0x8B, 0x0A,
  0x8B, 0x12, 0x8A, 0x0E, 0x89, 0x12, 0x89, 0x10,
  0x89, 0x11, 0x88, 0x12, 0x88, 0x10, 0x89, 0x12,
  0x89, 0x0F, 0x88, 0x14, 0x88, 0x0F, 0x88, 0x14,
  0x88, 0x0E, 0x89, 0x14, 0x88, 0x0E, 0x88, 0x15,
  0x88, 0x12, 0x84, 0x15, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2C, 0x89, 0x2B,
  0x89, 0x2B, 0x89, 0x2A, 0x8B, 0x28, 0x8C, 0x23,
  0x91, 0x24, 0x8F, 0x26, 0x8D, 0x28, 0x8F, 0x25,
  0x92, 0x23, 0x94, 0x21, 0x95, 0x20, 0x81, 0x07,
  0x8C, 0x2B, 0x8B, 0x2C, 0x8A, 0x2C, 0x89, 0x2D,
  0x89, 0x2D, 0x89, 0x2C, 0x89, 0x2D, 0x88, 0x2D,
  0x89, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x0D, 0x84, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x89, 0x18,
  0x89, 0x09, 0x89, 0x18, 0x88, 0x0B, 0x88, 0x18,
  0x88, 0x0B, 0x89, 0x16, 0x89, 0x0B, 0x89, 0x15,
  0x89, 0x0D, 0x89, 0x14, 0x89, 0x0D, 0x8A, 0x12,
  0x89, 0x0F, 0x8A, 0x10, 0x8A, 0x0F, 0x8B, 0x0D,
  0x8B, 0x11, 0x8D, 0x07, 0x8D, 0x13, 0xA2, 0x14,
  0xA0, 0x16, 0x9D, 0x19, 0x9B, 0x1B, 0x99, 0x1E,
  0x95, 0x22, 0x91, 0x28, 0x89, 0x4E
};

PROGMEM const unsigned char chr_f72_34[] =
{
  0x7F, 0x7F, 0x34, 0x86, 0x2E, 0x87, 0x2D, 0x88,
  0x2C, 0x89, 0x2C, 0x89, 0x2B, 0x8A, 0x2A, 0x8B,
  0x29, 0x8C, 0x28, 0x8D, 0x28, 0x8D, 0x27, 0x8E,
  0x26, 0x8F, 0x25, 0x90, 0x25, 0x90, 0x24, 0x91,
  0x23, 0x92, 0x22, 0x93, 0x22, 0x93, 0x21, 0x8A,
  0x00, 0x88, 0x20, 0x8A, 0x01, 0x88, 0x1F, 0x8A,
  0x02, 0x88, 0x1E, 0x8B, 0x02, 0x88, 0x1E, 0x8A,
  0x03, 0x88, 0x1D, 0x8A, 0x04, 0x88, 0x1C, 0x8A,
  0x05, 0x88, 0x1B, 0x8A, 0x06, 0x88, 0x1B, 0x8A,
  0x06, 0x88, 0x1A, 0x8A, 0x07, 0x88, 0x19, 0x8A,
  0x08, 0x88, 0x18, 0x8A, 0x09, 0x88, 0x18, 0x8A,
  0x09, 0x88, 0x17, 0x8A, 0x0A, 0x88, 0x16, 0x8A,
  0x0B, 0x88, 0x15, 0x8A, 0x0C, 0x88, 0x15, 0x8A,
  0x0C, 0x88, 0x14, 0x8A, 0x0D, 0x88, 0x13, 0x8A,
  0x0E, 0x88, 0x12, 0x8A, 0x0F, 0x88, 0x11, 0x8B,
  0x0F, 0x88, 0x11, 0x8A, 0x10, 0x88, 0x10, 0x8A,
  0x11, 0x88, 0x0F, 0x8A, 0x12, 0x88, 0x0E, 0x8A,
  0x13, 0x88, 0x0E, 0xAF, 0x06, 0xAF, 0x06, 0xAF,
  0x06, 0xAF, 0x06, 0xAF, 0x06, 0xAF, 0x06, 0xAF,
  0x06, 0xAF, 0x06, 0xAF, 0x25, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x7B
};

PROGMEM const unsigned char chr_f72_35[] =
{
  0x7F, 0x7F, 0x1E, 0xA0, 0x15, 0xA0, 0x14, 0xA1,
  0x14, 0xA1, 0x14, 0xA1, 0x14, 0xA1, 0x14, 0xA1,
  0x13, 0xA2, 0x13, 0xA2, 0x13, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2C, 0x89, 0x2C, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x89, 0x2C, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x89,
  0x06, 0x88, 0x1C, 0x89, 0x03, 0x8E, 0x19, 0x88,
  0x02, 0x92, 0x17, 0x88, 0x00, 0x96, 0x15, 0xA1,
  0x13, 0xA3, 0x12, 0xA4, 0x11, 0xA5, 0x10, 0x8F,
  0x07, 0x8E, 0x0F, 0x8C, 0x0D, 0x8C, 0x0D, 0x8B,
  0x11, 0x8A, 0x0D, 0x8A, 0x13, 0x8A, 0x0C, 0x89,
  0x15, 0x89, 0x10, 0x84, 0x17, 0x89, 0x2C, 0x89,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x89, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x0D, 0x84, 0x1A, 0x88, 0x09, 0x88, 0x19, 0x88,
  0x0A, 0x89, 0x18, 0x88, 0x0A, 0x89, 0x18, 0x88,
  0x0B, 0x88, 0x17, 0x89, 0x0B, 0x89, 0x16, 0x88,
  0x0C, 0x89, 0x15, 0x89, 0x0D, 0x89, 0x13, 0x89,
  0x0E, 0x8A, 0x11, 0x8A, 0x0E, 0x8B, 0x0F, 0x8A,
  0x10, 0x8B, 0x0D, 0x8A, 0x12, 0x8D, 0x07, 0x8D,
  0x12, 0xA2, 0x14, 0xA0, 0x16, 0x9E, 0x19, 0x9B,
  0x1B, 0x98, 0x1F, 0x95, 0x22, 0x90, 0x28, 0x8A,
  0x4E
};

PROGMEM const unsigned char chr_f72_36[] =
{
  0x7F, 0x72, 0x89, 0x28, 0x90, 0x23, 0x95, 0x1E,
  0x98, 0x1C, 0x9A, 0x1A, 0x9C, 0x18, 0x9E, 0x16,
  0xA0, 0x14, 0x8D, 0x06, 0x8D, 0x12, 0x8B, 0x0B,
  0x8B, 0x12, 0x8A, 0x0E, 0x8A, 0x10, 0x89, 0x11,
  0x89, 0x0F, 0x8A, 0x12, 0x89, 0x0E, 0x89, 0x13,
  0x89, 0x0E, 0x88, 0x15, 0x88, 0x0D, 0x89, 0x15,
  0x89, 0x0C, 0x88, 0x16, 0x89, 0x0B, 0x89, 0x17,
  0x88, 0x0B, 0x88, 0x18, 0x84, 0x0F, 0x88, 0x2D,
  0x87, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x88, 0x0A, 0x88, 0x19, 0x87, 0x08, 0x8E, 0x16,
  0x87, 0x06, 0x92, 0x13, 0x88, 0x04, 0x96, 0x11,
  0x88, 0x03, 0x98, 0x10, 0x88, 0x02, 0x9A, 0x0F,
  0x88, 0x01, 0x9C, 0x0E, 0x88, 0x00, 0x9E, 0x0D,
  0x92, 0x07, 0x8E, 0x0C, 0x90, 0x0C, 0x8C, 0x0B,
  0x8E, 0x10, 0x8A, 0x0B, 0x8D, 0x12, 0x8A, 0x0A,
  0x8C, 0x14, 0x89, 0x0A, 0x8B, 0x16, 0x89, 0x09,
  0x8A, 0x17, 0x89, 0x09, 0x89, 0x19, 0x88, 0x09,
  0x89, 0x19, 0x88, 0x09, 0x89, 0x19, 0x89, 0x08,
  0x88, 0x1B, 0x88, 0x08, 0x88, 0x1B, 0x88, 0x08,
  0x88, 0x1B, 0x88, 0x08, 0x88, 0x1B, 0x88, 0x09,
  0x87, 0x1B, 0x88, 0x09, 0x87, 0x1B, 0x88, 0x09,
  0x87, 0x1B, 0x88, 0x09, 0x87, 0x1B, 0x88, 0x09,
  0x88, 0x1A, 0x88, 0x0A, 0x87, 0x19, 0x89, 0x0A,
  0x87, 0x19, 0x88, 0x0B, 0x88, 0x18, 0x88, 0x0B,
  0x88, 0x17, 0x89, 0x0C, 0x88, 0x16, 0x88, 0x0D,
  0x88, 0x15, 0x89, 0x0E, 0x88, 0x14, 0x89, 0x0E,
  0x89, 0x12, 0x89, 0x10, 0x89, 0x10, 0x8A, 0x10,
  0x8B, 0x0C, 0x8B, 0x12, 0x8C, 0x07, 0x8D, 0x14,
  0xA1, 0x15, 0x9F, 0x17, 0x9D, 0x19, 0x9B, 0x1C,
  0x97, 0x1F, 0x95, 0x23, 0x8F, 0x29, 0x89, 0x4D
};

PROGMEM const unsigned char chr_f72_37[] =
{
  0x7F, 0x7F, 0x17, 0xAB, 0x0A, 0xAB, 0x0A, 0xAB,
  0x0A, 0xAB, 0x0A, 0xAB, 0x0A, 0xAB, 0x0A, 0xAB,
  0x0A, 0xAB, 0x0A, 0xAA, 0x2E, 0x86, 0x2E, 0x86,
  0x2E, 0x87, 0x2D, 0x87, 0x2D, 0x87, 0x2D, 0x87,
  0x2E, 0x87, 0x2D, 0x87, 0x2D, 0x87, 0x2E, 0x87,
  0x2D, 0x87, 0x2D, 0x88, 0x2D, 0x87, 0x2D, 0x87,
  0x2D, 0x88, 0x2D, 0x87, 0x2D, 0x88, 0x2D, 0x87,
  0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2C, 0x88,
  0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2C, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88,
  0x2C, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2C, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2C, 0x89,
  0x2C, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88,
  0x2D, 0x88, 0x7F, 0xC
};

PROGMEM const unsigned char chr_f72_38[] =
{
  0x7F, 0x70, 0x89, 0x28, 0x91, 0x22, 0x95, 0x1E,
  0x99, 0x1B, 0x9B, 0x19, 0x9D, 0x17, 0x9F, 0x15,
  0xA1, 0x13, 0x8D, 0x07, 0x8C, 0x13, 0x8B, 0x0B,
  0x8B, 0x11, 0x8A, 0x0F, 0x8A, 0x10, 0x89, 0x11,
  0x89, 0x10, 0x88, 0x13, 0x88, 0x0F, 0x89, 0x13,
  0x89, 0x0E, 0x88, 0x15, 0x88, 0x0E, 0x88, 0x15,
  0x88, 0x0E, 0x88, 0x15, 0x88, 0x0E, 0x88, 0x15,
  0x88, 0x0E, 0x88, 0x15, 0x88, 0x0E, 0x88, 0x15,
  0x88, 0x0E, 0x88, 0x15, 0x88, 0x0F, 0x88, 0x13,
  0x88, 0x10, 0x88, 0x13, 0x88, 0x10, 0x89, 0x11,
  0x89, 0x11, 0x89, 0x0F, 0x89, 0x13, 0x89, 0x0D,
  0x89, 0x15, 0x8B, 0x07, 0x8C, 0x16, 0x9D, 0x19,
  0x9B, 0x1C, 0x97, 0x20, 0x93, 0x20, 0x96, 0x1D,
  0x9A, 0x1A, 0x9D, 0x17, 0x9F, 0x15, 0x8C, 0x07,
  0x8C, 0x13, 0x8A, 0x0C, 0x8B, 0x11, 0x8A, 0x0F,
  0x8A, 0x0F, 0x8A, 0x11, 0x89, 0x0F, 0x89, 0x13,
  0x89, 0x0D, 0x89, 0x15, 0x88, 0x0D, 0x89, 0x15,
  0x89, 0x0C, 0x88, 0x17, 0x88, 0x0C, 0x88, 0x17,
  0x88, 0x0B, 0x88, 0x19, 0x88, 0x0A, 0x88, 0x19,
  0x88, 0x0A, 0x88, 0x19, 0x88, 0x0A, 0x88, 0x19,
  0x88, 0x0A, 0x88, 0x19, 0x88, 0x0A, 0x88, 0x19,
  0x88, 0x0A, 0x88, 0x19, 0x88, 0x0A, 0x88, 0x19,
  0x88, 0x0A, 0x88, 0x19, 0x88, 0x0A, 0x89, 0x17,
  0x89, 0x0B, 0x88, 0x17, 0x88, 0x0C, 0x89, 0x15,
  0x89, 0x0C, 0x89, 0x15, 0x89, 0x0D, 0x89, 0x13,
  0x89, 0x0E, 0x8A, 0x11, 0x8A, 0x0F, 0x8A, 0x0F,
  0x8A, 0x10, 0x8C, 0x0C, 0x8B, 0x11, 0x8D, 0x07,
  0x8D, 0x13, 0xA1, 0x15, 0x9F, 0x17, 0x9D, 0x19,
  0x9B, 0x1B, 0x99, 0x1E, 0x95, 0x22, 0x91, 0x28,
  0x89, 0x4E
};

PROGMEM const unsigned char chr_f72_39[] =
{
  0x7F, 0x70, 0x88, 0x29, 0x90, 0x23, 0x94, 0x20,
  0x97, 0x1C, 0x9A, 0x1A, 0x9C, 0x18, 0x9E, 0x16,
  0xA0, 0x14, 0x8E, 0x07, 0x8B, 0x13, 0x8C, 0x0B,
  0x8A, 0x11, 0x8B, 0x0F, 0x88, 0x11, 0x8A, 0x11,
  0x88, 0x0F, 0x8A, 0x13, 0x88, 0x0E, 0x89, 0x14,
  0x88, 0x0D, 0x89, 0x16, 0x87, 0x0D, 0x89, 0x17,
  0x87, 0x0C, 0x88, 0x18, 0x87, 0x0C, 0x88, 0x18,
  0x87, 0x0B, 0x89, 0x19, 0x87, 0x0A, 0x88, 0x1A,
  0x87, 0x0A, 0x88, 0x1A, 0x87, 0x0A, 0x88, 0x1A,
  0x87, 0x0A, 0x88, 0x1A, 0x87, 0x0A, 0x88, 0x1A,
  0x87, 0x0A, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x88, 0x1A, 0x88, 0x09, 0x88, 0x1A,
  0x88, 0x09, 0x89, 0x18, 0x89, 0x0A, 0x88, 0x18,
  0x89, 0x0A, 0x88, 0x18, 0x89, 0x0A, 0x89, 0x16,
  0x8A, 0x0A, 0x89, 0x16, 0x8A, 0x0B, 0x89, 0x14,
  0x8B, 0x0B, 0x8A, 0x12, 0x8C, 0x0C, 0x8A, 0x10,
  0x8D, 0x0C, 0x8C, 0x0C, 0x8F, 0x0D, 0x8E, 0x07,
  0x91, 0x0E, 0x9D, 0x00, 0x88, 0x0F, 0x9B, 0x01,
  0x88, 0x10, 0x99, 0x02, 0x88, 0x11, 0x97, 0x03,
  0x88, 0x12, 0x95, 0x04, 0x88, 0x13, 0x92, 0x06,
  0x87, 0x16, 0x8E, 0x08, 0x87, 0x19, 0x88, 0x0A,
  0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D, 0x88, 0x2D,
  0x87, 0x2D, 0x88, 0x10, 0x84, 0x17, 0x88, 0x0C,
  0x88, 0x17, 0x88, 0x0C, 0x89, 0x15, 0x88, 0x0D,
  0x89, 0x15, 0x88, 0x0E, 0x88, 0x14, 0x89, 0x0E,
  0x89, 0x13, 0x88, 0x0F, 0x89, 0x12, 0x89, 0x10,
  0x89, 0x10, 0x89, 0x11, 0x8A, 0x0E, 0x8A, 0x11,
  0x8B, 0x0B, 0x8B, 0x13, 0x8C, 0x07, 0x8C, 0x15,
  0x9F, 0x16, 0x9E, 0x18, 0x9C, 0x1A, 0x9A, 0x1D,
  0x97, 0x1F, 0x94, 0x23, 0x90, 0x28, 0x89, 0x50
};

PROGMEM const unsigned char chr_f72_3A[] =
{
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x23, 0x88, 0x13,
  0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13,
  0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x7F,
  0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x33, 0x88,
  0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88,
  0x13, 0x88, 0x13, 0x88, 0x13, 0x88, 0x13, 0x88,
  0x44
};
PROGMEM const unsigned char * const chrtbl_f72[96] =        // character pointer table
{
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_2D, chr_f72_2E, chr_f72_20,
  chr_f72_30, chr_f72_31, chr_f72_32, chr_f72_33, chr_f72_34, chr_f72_35, chr_f72_36, chr_f72_37,
  chr_f72_38, chr_f72_39, chr_f72_3A, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20,
  chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20, chr_f72_20
};

Opened Arduino IDE, select "Add file" then Select "Sketch" then "Add File" then copied for forum.

Tom... :grinning: :+1: :coffee: :australia:

It looks like the top bit of each byte indicates the bit value (0 or 1) and the bottom 7 bits represent the number of times that bit is repeated (Run Length Encoding or RLE). Add 1 to each value because there is no need to specify a run length of zero.

For example the space character (0x20) is 16 bytes of 0x7F and one byte of 0x7E. That would mean 16128+1127 bits all set to 0. That is 2175 zero bits. The width table says that the character is 29 pixels wide so it must be 75 pixels high. It's not clear what order the pixels are in but a little experimenting should tell.

TomGeorge Totally forgot that I of course could have put it in code format, thanks.

johnwasser Aha so that's how it works, interesting way and yea they are 75 pixel high. But why couldn't it just be as simple like the chars on a 16x2 display sigh. Yea I know it would have been a little longer code then to say the least.

But now I finally have something to go on, thanks a lot!

Regards Kevin

Because the 16x2 has a single built-in font. Things are always simpler when you get no choice.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.