Adding new fonts to OLED SSD1306 for Patch_sm

Hi all,
I am trying to create a smaller font (5x8) for an OLED SPI screen.
So far, what I did , without success :
In oled_fonts.h I added extern FontDef Font_5x8;
In oled_fonts.c, I added

static const uint16_t Font5x8 [] = {
/* --   -- */
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- " -- */
0x000A, 0x000A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- # -- */
0x000A, 0x001F, 0x000A, 0x001F, 0x000A, 0x0000, 0x0000, 0x0000, 
/* -- $ -- */
0x001F, 0x0014, 0x001F, 0x0005, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- % -- */
0x0019, 0x001A, 0x0004, 0x000B, 0x0013, 0x0000, 0x0000, 0x0000, 
/* -- & -- */
0x001E, 0x0012, 0x001F, 0x0012, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- ' -- */
0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- ( -- */
0x0002, 0x0004, 0x0004, 0x0004, 0x0002, 0x0000, 0x0000, 0x0000, 
/* -- ) -- */
0x0008, 0x0004, 0x0004, 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 
/* -- * -- */
0x0000, 0x000A, 0x0004, 0x000A, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- + -- */
0x0000, 0x0004, 0x000E, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- , -- */
0x0000, 0x0000, 0x0000, 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 
/* -- - -- */
0x0000, 0x0000, 0x000E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- . -- */
0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 
/* -- / -- */
0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0000, 0x0000, 0x0000, 
/* -- 0 -- */
0x001F, 0x0013, 0x0015, 0x0019, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- 1 -- */
0x000C, 0x0004, 0x0004, 0x0004, 0x000E, 0x0000, 0x0000, 0x0000, 
/* -- 2 -- */
0x001F, 0x0001, 0x001F, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- 3 -- */
0x001F, 0x0001, 0x000F, 0x0001, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- 4 -- */
0x0011, 0x0011, 0x001F, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 
/* -- 5 -- */
0x001F, 0x0010, 0x001E, 0x0001, 0x001E, 0x0000, 0x0000, 0x0000, 
/* -- 6 -- */
0x001F, 0x0010, 0x001F, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- 7 -- */
0x001F, 0x0011, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 
/* -- 8 -- */
0x001F, 0x0011, 0x001F, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- 9 -- */
0x001F, 0x0011, 0x001F, 0x0001, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- : -- */
0x0000, 0x0008, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- ; -- */
0x0000, 0x0004, 0x0000, 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 
/* -- < -- */
0x0002, 0x0004, 0x0008, 0x0004, 0x0002, 0x0000, 0x0000, 0x0000, 
/* -- = -- */
0x0000, 0x000E, 0x0000, 0x000E, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- > -- */
0x0008, 0x0004, 0x0002, 0x0004, 0x0008, 0x0000, 0x0000, 0x0000, 
/* -- ? -- */
0x001F, 0x0001, 0x0007, 0x0000, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- @ -- */
0x001F, 0x0011, 0x0017, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- a -- */
0x001F, 0x0011, 0x001F, 0x0011, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- b -- */
0x001E, 0x0011, 0x001F, 0x0011, 0x001E, 0x0000, 0x0000, 0x0000, 
/* -- c -- */
0x001F, 0x0010, 0x0010, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- d -- */
0x001E, 0x0011, 0x0011, 0x0011, 0x001E, 0x0000, 0x0000, 0x0000, 
/* -- e -- */
0x001F, 0x0010, 0x001E, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- f -- */
0x001F, 0x0010, 0x001E, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 
/* -- g -- */
0x001F, 0x0010, 0x0017, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- h -- */
0x0011, 0x0011, 0x001F, 0x0011, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- i -- */
0x000E, 0x0004, 0x0004, 0x0004, 0x000E, 0x0000, 0x0000, 0x0000, 
/* -- j -- */
0x001F, 0x0001, 0x0001, 0x0011, 0x000E, 0x0000, 0x0000, 0x0000, 
/* -- k -- */
0x0011, 0x0012, 0x001C, 0x0012, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- l -- */
0x0010, 0x0010, 0x0010, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- m -- */
0x0011, 0x001B, 0x0015, 0x0015, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- n -- */
0x0011, 0x0019, 0x0015, 0x0013, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- o -- */
0x001F, 0x0011, 0x0011, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- p -- */
0x001F, 0x0011, 0x001F, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 
/* -- q -- */
0x001F, 0x0011, 0x0011, 0x0013, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- r -- */
0x001F, 0x0011, 0x001F, 0x0012, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- s -- */
0x001F, 0x0010, 0x001F, 0x0001, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- t -- */
0x001F, 0x0004, 0x0004, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- u -- */
0x0011, 0x0011, 0x0011, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- v -- */
0x0011, 0x0011, 0x0011, 0x000A, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- w -- */
0x0015, 0x0015, 0x0015, 0x0015, 0x000A, 0x0000, 0x0000, 0x0000, 
/* -- x -- */
0x0011, 0x000A, 0x0004, 0x000A, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- y -- */
0x0011, 0x000A, 0x0004, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- z -- */
0x001F, 0x0002, 0x0004, 0x0008, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- [ -- */
0x0006, 0x0004, 0x0004, 0x0004, 0x0006, 0x0000, 0x0000, 0x0000, 
/* -- \ -- */
0x0010, 0x0008, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 
/* -- ] -- */
0x000C, 0x0004, 0x0004, 0x0004, 0x000C, 0x0000, 0x0000, 0x0000, 
/* -- ^ -- */
0x0004, 0x000A, 0x0011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- _ -- */
0x0000, 0x0000, 0x0000, 0x0000, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- ` -- */
0x0004, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
/* -- A - */
0x001F, 0x0011, 0x001F, 0x0011, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- B -- */
0x001E, 0x0011, 0x001F, 0x0011, 0x001E, 0x0000, 0x0000, 0x0000, 
/* -- C -- */
0x001F, 0x0010, 0x0010, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- D -- */
0x001E, 0x0011, 0x0011, 0x0011, 0x001E, 0x0000, 0x0000, 0x0000, 
/* -- E -- */
0x001F, 0x0010, 0x001E, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- F -- */
0x001F, 0x0010, 0x001E, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 
/* -- G -- */
0x001F, 0x0010, 0x0017, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- H -- */
0x0011, 0x0011, 0x001F, 0x0011, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- I -- */
0x000E, 0x0004, 0x0004, 0x0004, 0x000E, 0x0000, 0x0000, 0x0000, 
/* -- J -- */
0x001F, 0x0001, 0x0001, 0x0011, 0x000E, 0x0000, 0x0000, 0x0000, 
/* -- K -- */
0x0011, 0x0012, 0x001C, 0x0012, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- L -- */
0x0010, 0x0010, 0x0010, 0x0010, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- M -- */
0x0011, 0x001B, 0x0015, 0x0015, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- N -- */
0x0011, 0x0019, 0x0015, 0x0013, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- O -- */
0x001F, 0x0011, 0x0011, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- P -- */
0x001F, 0x0011, 0x001F, 0x0010, 0x0010, 0x0000, 0x0000, 0x0000, 
/* -- Q -- */
0x001F, 0x0011, 0x0011, 0x0013, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- R -- */
0x001F, 0x0011, 0x001F, 0x0012, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- S -- */
0x001F, 0x0010, 0x001F, 0x0001, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- T -- */
0x001F, 0x0004, 0x0004, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- U -- */
0x0011, 0x0011, 0x0011, 0x0011, 0x001F, 0x0000, 0x0000, 0x0000, 
/* -- V -- */
0x0011, 0x0011, 0x0011, 0x000A, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- W -- */
0x0015, 0x0015, 0x0015, 0x0015, 0x000A, 0x0000, 0x0000, 0x0000, 
/* -- X -- */
0x0011, 0x000A, 0x0004, 0x000A, 0x0011, 0x0000, 0x0000, 0x0000, 
/* -- Y -- */
0x0011, 0x000A, 0x0004, 0x0004, 0x0004, 0x0000, 0x0000, 0x0000, 
/* -- Z -- */
0x001F, 0x0002, 0x0004, 0x0008, 0x001F, 0x0000, 0x0000, 0x0000, 

/* --   EOF -- */
};

and at the end of the file : FontDef Font_5x8 = {5,8,Font5x8};

I get not problem for compiling… but this font does not display on the OLED.

1 Like

I am also interested in getting a smaller Font, 5x8 would be perfect, so I am watching this space : )

Update: One thing I found is that your character table is wrong. Let me detail:

The first question is: If we use for example display.WriteChar('!'); how does this char get mapped to the table you wrote? For an answer we can look at the WriteChar Method in OneBitGraphicsDisplayImpl in display.h:

// Use the font to write
for(i = 0; i < font.FontHeight; i++)
{
    b = font.data[(ch - 32) * font.FontHeight + i];
    for(j = 0; j < font.FontWidth; j++)
    {
        if((b << j) & 0x8000)
        {
            ((ChildType*)(this))
                ->ChildType::DrawPixel(
                    currentX_ + j, (currentY_ + i), on);
        }
        else
        {
            ((ChildType*)(this))
                ->ChildType::DrawPixel(
                    currentX_ + j, (currentY_ + i), !on);
        }
    }
}

As you can see the chars ASCII-value will be subtracted 32: font.data[(ch - 32). That means our first value in the array should be the character at position 32 in the ASCII table: a space.
As you can see the next character should be our !, but in your case it is the quote sign. This is wrong.

The next issue is that your bytes are wrong. If I just copy the exclaimation mark from the 6x8 version:

0x2000, 0x2000, 0x2000, 0x2000, 0x2000, 0x0000, 0x2000, 0x0000, // !

I get text to display.

Hi,
at least there seems to be a difference in the bit order of the coding. Your font uses the lower byte, whereas the 6x8 Font uses the upper byte.

Hi, this font table was automatically generated by the utility found at GitHub - afiskon/stm32-ssd1306: STM32 library for working with OLEDs based on SSD1306, SH1106, SH1107 and SSD1309, supports I2C and SPI. So if you know how to convert the binary table to something acceptable for the Oled driver, I will be happy to post it here. Please let me know.

The format is essentially the following:

  • a font is a list of ASCII characters starting with character 32 (space) and ending with character 126 (tilde)
  • each character is a list of uint16_t that has the same lenght as the height of the character in pixels (so in case of 5x8 we expect 8 values there). Each value represents a single “row” of pixels (from top to bottom)
  • in each row of pixels each Bit represents whether a pixel is off or on (from left to right)

So lets look at one value (first row of the single quote character)

Hex        Bin v
0x2000     0b0010_0000_0000_0000

As you can see the third bit from left is a one, so in that row the only the third pixel is white.

In your case the first row of the single quote character looks like this

Hex        Bin               v
0x0100     0b0000_0000_0000_0100

That means the third pixel from the right is on. This would be the 14th pixel from the left, but your font is only 5 pixels wide so you see nothing.

That means your font would work if:

  • you order the characters correctly (in accordance to the ASCII-table)
  • you flip the Bits around (this is what @cebersp meant with lower byte vs upper byte)

Thank you for the explanations… Is this sufficient to fully stop the font from being displayed? I would have thought that the font would have displayed things (showing lightened pixels)?

Think about it this way:

possible bits for uint16_t
0 1 2 3 4 5 6 7 8 9 A B C D E F

visible bits (pixels) for a 5x8 font
0 1 2 3 4 . . . . . . . . . . .

your bits/pixels
. . . . . . . . . . . 4 3 2 1 0

This means your version is not only the wrong way around, but also on the wrong side of the 16 bits (and thus you see nothing). If you had a 16 pixel wide font, some pixels should light up.

@JMC64 Note: Inspired by your endeavour I wrote a tool that allows you to convert fonts created with PixelForge to daisy-style C-code: Wrote a CLI tool to help create Fonts for daisy

Maybe this helps?

2 Likes

Many thanks to you all for explanations. I now managed to get it work.
Indeed, I was missing the "!"character in the font. I will post the font in 5x5 ASAP.

Here is the code:

static const uint16_t Font5x5 [] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000,  // -- --
0x4000, 0x4000, 0x4000, 0x0000, 0x4000,  // --!--
0x5000, 0x5000, 0x0000, 0x0000, 0x0000,  // --"--
0x5000, 0xF800, 0x5000, 0xF800, 0x5000,  // --#--
0xF800, 0xA000, 0xF800, 0x2800, 0xF800,  // --$--
0xC800, 0xD000, 0x2000, 0x5800, 0x9800,  // --%--
0xF000, 0x9000, 0xF800, 0x9000, 0xF800,  // --&--
0x2000, 0x2000, 0x0000, 0x0000, 0x0000,  // --'--
0x1000, 0x2000, 0x2000, 0x2000, 0x1000,  // --(--
0x4000, 0x2000, 0x2000, 0x2000, 0x4000,  // --)--
0x0000, 0x5000, 0x2000, 0x5000, 0x0000,  // --*--
0x0000, 0x2000, 0x7000, 0x2000, 0x0000,  // --+--
0x0000, 0x0000, 0x0000, 0x2000, 0x4000,  // --,--
0x0000, 0x0000, 0x7000, 0x0000, 0x0000,  // -----
0x0000, 0x0000, 0x0000, 0x0000, 0x4000,  // --.--
0x0800, 0x1000, 0x2000, 0x4000, 0x8000,  // --/--
0xF800, 0x9800, 0xA800, 0xC800, 0xF800,  // --0--
0x6000, 0x2000, 0x2000, 0x2000, 0x7000,  // --1--
0xF800, 0x0800, 0xF800, 0x8000, 0xF800,  // --2--
0xF800, 0x0800, 0x7800, 0x0800, 0xF800,  // --3--
0x8800, 0x8800, 0xF800, 0x0800, 0x0800,  // --4--
0xF800, 0x8000, 0xF000, 0x0800, 0xF000,  // --5--
0xF800, 0x8000, 0xF800, 0x8800, 0xF800,  // --6--
0xF800, 0x8800, 0x0800, 0x0800, 0x0800,  // --7--
0xF800, 0x8800, 0xF800, 0x8800, 0xF800,  // --8--
0xF800, 0x8800, 0xF800, 0x0800, 0xF800,  // --9--
0x0000, 0x4000, 0x0000, 0x4000, 0x0000,  // --:--
0x0000, 0x2000, 0x0000, 0x2000, 0x4000,  // --;--
0x1000, 0x2000, 0x4000, 0x2000, 0x1000,  // --<--
0x0000, 0x7000, 0x0000, 0x7000, 0x0000,  // --=--
0x4000, 0x2000, 0x1000, 0x2000, 0x4000,  // -->--
0xF800, 0x0800, 0x3800, 0x0000, 0x2000,  // --?--
0xF800, 0x8800, 0xB800, 0x8000, 0xF800,  // --@--
0xF800, 0x8800, 0xF800, 0x8800, 0x8800,  // --a--
0xF000, 0x8800, 0xF800, 0x8800, 0xF000,  // --B--
0xF800, 0x8000, 0x8000, 0x8000, 0xF800,  // --c--
0xF000, 0x8800, 0x8800, 0x8800, 0xF000,  // --d--
0xF800, 0x8000, 0xF000, 0x8000, 0xF800,  // --e--
0xF800, 0x8000, 0xF000, 0x8000, 0x8000,  // --f--
0xF800, 0x8000, 0xB800, 0x8800, 0xF800,  // --g--
0x8800, 0x8800, 0xF800, 0x8800, 0x8800,  // --h--
0x7000, 0x2000, 0x2000, 0x2000, 0x7000,  // --i--
0xF800, 0x0800, 0x0800, 0x8800, 0x7000,  // --j--
0x8800, 0x9000, 0xE000, 0x9000, 0x8800,  // --k--
0x8000, 0x8000, 0x8000, 0x8000, 0xF800,  // --l--
0x8800, 0xD800, 0xA800, 0xA800, 0x8800,  // --m--
0x8800, 0xC800, 0xA800, 0x9800, 0x8800,  // --n--
0xF800, 0x8800, 0x8800, 0x8800, 0xF800,  // --o--
0xF800, 0x8800, 0xF800, 0x8000, 0x8000,  // --p--
0xF800, 0x8800, 0x8800, 0x9800, 0xF800,  // --q--
0xF800, 0x8800, 0xF800, 0x9000, 0x8800,  // --r--
0xF800, 0x8000, 0xF800, 0x0800, 0xF800,  // --s--
0xF800, 0x2000, 0x2000, 0x2000, 0x2000,  // --t--
0x8800, 0x8800, 0x8800, 0x8800, 0xF800,  // --u--
0x8800, 0x8800, 0x8800, 0x5000, 0x2000,  // --v--
0xA800, 0xA800, 0xA800, 0xA800, 0x5000,  // --w--
0x8800, 0x5000, 0x2000, 0x5000, 0x8800,  // --x--
0x8800, 0x5000, 0x2000, 0x2000, 0x2000,  // --y--
0xF800, 0x1000, 0x2000, 0x4000, 0xF800,  // --z--
0x3000, 0x2000, 0x2000, 0x2000, 0x3000,  // --[--
0x8000, 0x4000, 0x2000, 0x1000, 0x0800,  // --\--
0x6000, 0x2000, 0x2000, 0x2000, 0x6000,  // --]--
0x2000, 0x5000, 0x8800, 0x0000, 0x0000,  // --^--
0x0000, 0x0000, 0x0000, 0x0000, 0xF800,  // --_--
0x2000, 0x1000, 0x0000, 0x0000, 0x0000,  // --`--
0xF800, 0x8800, 0xF800, 0x8800, 0x8800,  // --A-
0xF000, 0x8800, 0xF800, 0x8800, 0xF000,  // --0B--
0xF800, 0x8000, 0x8000, 0x8000, 0xF800,  // --C--
0xF000, 0x8800, 0x8800, 0x8800, 0xF000,  // --D--
0xF800, 0x8000, 0xF000, 0x8000, 0xF800,  // --E--
0xF800, 0x8000, 0xF000, 0x8000, 0x8000,  // --F--
0xF800, 0x8000, 0xB800, 0x8800, 0xF800,  // --G--
0x8800, 0x8800, 0xF800, 0x8800, 0x8800,  // --H--
0x7000, 0x2000, 0x2000, 0x2000, 0x7000,  // --I--
0xF800, 0x0800, 0x0800, 0x8800, 0x7000,  // --J--
0x8800, 0x9000, 0xE000, 0x9000, 0x8800,  // --K--
0x8000, 0x8000, 0x8000, 0x8000, 0xF800,  // --L--
0x8800, 0xD800, 0xA800, 0xA800, 0x8800,  // --M--
0x8800, 0xC800, 0xA800, 0x9800, 0x8800,  // --N--
0xF800, 0x8800, 0x8800, 0x8800, 0xF800,  // --O--
0xF800, 0x8800, 0xF800, 0x8000, 0x8000,  // --P--
0xF800, 0x8800, 0x8800, 0x9800, 0xF800,  // --Q--
0xF800, 0x8800, 0xF800, 0x9000, 0x8800,  // --R--
0xF800, 0x8000, 0xF800, 0x0800, 0xF800,  // --S--
0xF800, 0x2000, 0x2000, 0x2000, 0x2000,  // --T--
0x8800, 0x8800, 0x8800, 0x8800, 0xF800,  // --U--
0x8800, 0x8800, 0x8800, 0x5000, 0x2000,  // --V--
0xA800, 0xA800, 0xA800, 0xA800, 0x5000,  // --W--
0x8800, 0x5000, 0x2000, 0x5000, 0x8800,  // --X--
0x8800, 0x5000, 0x2000, 0x2000, 0x2000,  // --Y--
0xF800, 0x1000, 0x2000, 0x4000, 0xF800,  // --Z--
0x6000, 0x4000, 0x8000, 0x4000, 0x6000,  // ----
0x4000, 0x4000, 0x4000, 0x4000, 0x4000,  // --|--
0x3000, 0x1000, 0x1800, 0x1000, 0x3000,  // --}--
0xC000, 0x3000, 0x0000, 0x0000, 0x0000  // --~--
};

FontDef Font_5x5 = {5,5,Font5x5};

1 Like