Base code for dtplug : Core, drivers, lib and some external drivers.
[dtplug] / lib / font.c
1 /************************************************************************
2  * lib/font.c
3  *
4  * Copyright (C) Lisa Milne 2014 <lisa@ltmnet.com>
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>
18  *
19  ************************************************************************/
21 /*
22  * The font has been found on opengameart.org:
23  * http://opengameart.org/content/8x8-ascii-bitmap-font-with-c-source
24  */
26 #include <stdint.h>
27 #include "lib/font.h"
29 /*
30  * The values in this array are a 8x8 bitmap font for ascii characters
31  * As memory is a very precious ressource on a micro-controller all chars
32  * before "space" (0x20) have been removed.
33  */
34 uint8_t first_font_char = 0x20;
35 uint64_t font[NB_FONT_TILES] = {
36         0x0000000000000000, /* (space) */  /* 0x20 */
37         0x0808080800080000, /* ! */
38         0x2828000000000000, /* " */
39         0x00287C287C280000, /* # */
40         0x081E281C0A3C0800, /* $ */
41         0x6094681629060000, /* % */
42         0x1C20201926190000, /* & */
43         0x0808000000000000, /* ' */
44         0x0810202010080000, /* ( */
45         0x1008040408100000, /* ) */
46         0x2A1C3E1C2A000000, /* * */
47         0x0008083E08080000, /* + */
48         0x0000000000081000, /* , */
49         0x0000003C00000000, /* - */
50         0x0000000000080000, /* . */
51         0x0204081020400000, /* / */
52         0x1824424224180000, /* 0 */ /*x30 */
53         0x08180808081C0000, /* 1 */
54         0x3C420418207E0000, /* 2 */
55         0x3C420418423C0000, /* 3 */
56         0x081828487C080000, /* 4 */
57         0x7E407C02423C0000, /* 5 */
58         0x3C407C42423C0000, /* 6 */
59         0x7E04081020400000, /* 7 */
60         0x3C423C42423C0000, /* 8 */
61         0x3C42423E023C0000, /* 9 */
62         0x0000080000080000, /* : */
63         0x0000080000081000, /* ; */
64         0x0006186018060000, /* < */
65         0x00007E007E000000, /* = */
66         0x0060180618600000, /* > */
67         0x3844041800100000, /* ? */
68         0x003C449C945C201C, /* @ */ /* 0x40 */
69         0x1818243C42420000, /* A */
70         0x7844784444780000, /* B */
71         0x3844808044380000, /* C */
72         0x7844444444780000, /* D */
73         0x7C407840407C0000, /* E */
74         0x7C40784040400000, /* F */
75         0x3844809C44380000, /* G */
76         0x42427E4242420000, /* H */
77         0x3E080808083E0000, /* I */
78         0x1C04040444380000, /* J */
79         0x4448507048440000, /* K */
80         0x40404040407E0000, /* L */
81         0x4163554941410000, /* M */
82         0x4262524A46420000, /* N */
83         0x1C222222221C0000, /* O */
84         0x7844784040400000, /* P */ /* 0x50 */
85         0x1C222222221C0200, /* Q */
86         0x7844785048440000, /* R */
87         0x1C22100C221C0000, /* S */
88         0x7F08080808080000, /* T */
89         0x42424242423C0000, /* U */
90         0x8142422424180000, /* V */
91         0x4141495563410000, /* W */
92         0x4224181824420000, /* X */
93         0x4122140808080000, /* Y */
94         0x7E040810207E0000, /* Z */
95         0x3820202020380000, /* [ */
96         0x4020100804020000, /* \ */
97         0x3808080808380000, /* ] */
98         0x1028000000000000, /* ^ */
99         0x00000000007E0000, /* _ */
100         0x1008000000000000, /* ` */ /* 0x60 */
101         0x003C023E463A0000, /* a */
102         0x40407C42625C0000, /* b */
103         0x00001C20201C0000, /* c */
104         0x02023E42463A0000, /* d */
105         0x003C427E403C0000, /* e */
106         0x0018103810100000, /* f */
107         0x0000344C44340438, /* g */
108         0x2020382424240000, /* h */
109         0x0800080808080000, /* i */
110         0x0800180808080870, /* j */
111         0x20202428302C0000, /* k */
112         0x1010101010180000, /* l */
113         0x0000665A42420000, /* m */
114         0x00002E3222220000, /* n */
115         0x00003C42423C0000, /* o */
116         0x00005C62427C4040, /* p */ /* 0x70 */
117         0x00003A46423E0202, /* q */
118         0x00002C3220200000, /* r */
119         0x001C201804380000, /* s */
120         0x00103C1010180000, /* t */
121         0x00002222261A0000, /* u */
122         0x0000424224180000, /* v */
123         0x000081815A660000, /* w */
124         0x0000422418660000, /* x */
125         0x0000422214081060, /* y */
126         0x00003C08103C0000, /* z */
127         0x1C103030101C0000, /* { */
128         0x0808080808080800, /* | */
129         0x38080C0C08380000, /* } */
130         0x000000324C000000, /* ~ */
131 };