Add an 8x8 font with ascii characters only.
authorNathael Pajani <nathael.pajani@ed3l.fr>
Wed, 22 Jul 2015 01:04:23 +0000 (03:04 +0200)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Tue, 8 Nov 2022 16:03:04 +0000 (17:03 +0100)
include/lib/font.h [new file with mode: 0644]
lib/font.c [new file with mode: 0644]

diff --git a/include/lib/font.h b/include/lib/font.h
new file mode 100644 (file)
index 0000000..3473f5e
--- /dev/null
@@ -0,0 +1,38 @@
+/************************************************************************
+ * lib/font.h
+ *
+ * Copyright (C) Lisa Milne 2014 <lisa@ltmnet.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ ************************************************************************/
+
+/*
+ * The font has been found on opengameart.org:
+ * http://opengameart.org/content/8x8-ascii-bitmap-font-with-c-source
+ */
+
+#ifndef LIB_FONT_H
+#define LIB_FONT_H
+
+/*
+ * The values in this array are a 8x8 bitmap font for ascii characters
+ * As memory is a very precious ressource on a micro-controller all chars
+ * before "space" (0x20) have been removed.
+ */
+#define NB_FONT_TILES 95
+extern uint8_t first_font_char;
+extern uint64_t font[NB_FONT_TILES];
+
+#endif /* LIB_FONT_H */
diff --git a/lib/font.c b/lib/font.c
new file mode 100644 (file)
index 0000000..e73904d
--- /dev/null
@@ -0,0 +1,132 @@
+/************************************************************************
+ * lib/font.c
+ *
+ * Copyright (C) Lisa Milne 2014 <lisa@ltmnet.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ ************************************************************************/
+
+/*
+ * The font has been found on opengameart.org:
+ * http://opengameart.org/content/8x8-ascii-bitmap-font-with-c-source
+ */
+
+#include <stdint.h>
+#include "lib/font.h"
+
+/*
+ * The values in this array are a 8x8 bitmap font for ascii characters
+ * As memory is a very precious ressource on a micro-controller all chars
+ * before "space" (0x20) have been removed.
+ */
+uint8_t first_font_char = 0x20;
+uint64_t font[NB_FONT_TILES] = {
+       0x0000000000000000, /* (space) */  /* 0x20 */
+       0x0808080800080000, /* ! */
+       0x2828000000000000, /* " */
+       0x00287C287C280000, /* # */
+       0x081E281C0A3C0800, /* $ */
+       0x6094681629060000, /* % */
+       0x1C20201926190000, /* & */
+       0x0808000000000000, /* ' */
+       0x0810202010080000, /* ( */
+       0x1008040408100000, /* ) */
+       0x2A1C3E1C2A000000, /* * */
+       0x0008083E08080000, /* + */
+       0x0000000000081000, /* , */
+       0x0000003C00000000, /* - */
+       0x0000000000080000, /* . */
+       0x0204081020400000, /* / */
+       0x1824424224180000, /* 0 */ /*x30 */
+       0x08180808081C0000, /* 1 */
+       0x3C420418207E0000, /* 2 */
+       0x3C420418423C0000, /* 3 */
+       0x081828487C080000, /* 4 */
+       0x7E407C02423C0000, /* 5 */
+       0x3C407C42423C0000, /* 6 */
+       0x7E04081020400000, /* 7 */
+       0x3C423C42423C0000, /* 8 */
+       0x3C42423E023C0000, /* 9 */
+       0x0000080000080000, /* : */
+       0x0000080000081000, /* ; */
+       0x0006186018060000, /* < */
+       0x00007E007E000000, /* = */
+       0x0060180618600000, /* > */
+       0x3844041800100000, /* ? */
+       0x003C449C945C201C, /* @ */ /* 0x40 */
+       0x1818243C42420000, /* A */
+       0x7844784444780000, /* B */
+       0x3844808044380000, /* C */
+       0x7844444444780000, /* D */
+       0x7C407840407C0000, /* E */
+       0x7C40784040400000, /* F */
+       0x3844809C44380000, /* G */
+       0x42427E4242420000, /* H */
+       0x3E080808083E0000, /* I */
+       0x1C04040444380000, /* J */
+       0x4448507048440000, /* K */
+       0x40404040407E0000, /* L */
+       0x4163554941410000, /* M */
+       0x4262524A46420000, /* N */
+       0x1C222222221C0000, /* O */
+       0x7844784040400000, /* P */ /* 0x50 */
+       0x1C222222221C0200, /* Q */
+       0x7844785048440000, /* R */
+       0x1C22100C221C0000, /* S */
+       0x7F08080808080000, /* T */
+       0x42424242423C0000, /* U */
+       0x8142422424180000, /* V */
+       0x4141495563410000, /* W */
+       0x4224181824420000, /* X */
+       0x4122140808080000, /* Y */
+       0x7E040810207E0000, /* Z */
+       0x3820202020380000, /* [ */
+       0x4020100804020000, /* \ */
+       0x3808080808380000, /* ] */
+       0x1028000000000000, /* ^ */
+       0x00000000007E0000, /* _ */
+       0x1008000000000000, /* ` */ /* 0x60 */
+       0x003C023E463A0000, /* a */
+       0x40407C42625C0000, /* b */
+       0x00001C20201C0000, /* c */
+       0x02023E42463A0000, /* d */
+       0x003C427E403C0000, /* e */
+       0x0018103810100000, /* f */
+       0x0000344C44340438, /* g */
+       0x2020382424240000, /* h */
+       0x0800080808080000, /* i */
+       0x0800180808080870, /* j */
+       0x20202428302C0000, /* k */
+       0x1010101010180000, /* l */
+       0x0000665A42420000, /* m */
+       0x00002E3222220000, /* n */
+       0x00003C42423C0000, /* o */
+       0x00005C62427C4040, /* p */ /* 0x70 */
+       0x00003A46423E0202, /* q */
+       0x00002C3220200000, /* r */
+       0x001C201804380000, /* s */
+       0x00103C1010180000, /* t */
+       0x00002222261A0000, /* u */
+       0x0000424224180000, /* v */
+       0x000081815A660000, /* w */
+       0x0000422418660000, /* x */
+       0x0000422214081060, /* y */
+       0x00003C08103C0000, /* z */
+       0x1C103030101C0000, /* { */
+       0x0808080808080800, /* | */
+       0x38080C0C08380000, /* } */
+       0x000000324C000000, /* ~ */
+};
+