Font_Editor_for_Display_Library_Hashtag_Tools

with the font editor allows the creation of simple bitmap fonts that can be used in the display library.

characters are packed in a byte-per-row format. thus it is possible to create characters with a maximum of 8 pixels. the height is not limited.

the editor can read existing font files from a source file and can save them back to disk.

the format is a bit crude and unflexible but does the job … for now.

below is an example of a 5×8 pixel bitmap font:

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