Font Editor for Display Library #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};