summaryrefslogtreecommitdiff
path: root/src/font.h
blob: 8da9325cb3918ea3a3f0663ca3eec2260dfabf73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#ifndef FONT_H_
#define FONT_H_

#include <avr/pgmspace.h>

/* 
 * Font face is based on "Pixel Operator 8" which is licensed under the
 * SIL Open Font License 1.1 (compatible to GPL)
 */

typedef const unsigned char* glyph_t;

const unsigned char PROGMEM chr_032[] = {0x03,0x00,0x00,0x00}; // <space>
const unsigned char PROGMEM chr_033[] = {0x01,0x7D}; // !
const unsigned char PROGMEM chr_034[] = {0x04,0x30,0x40,0x30,0x40}; // "
const unsigned char PROGMEM chr_035[] = {0x06,0x12,0x3F,0x12,0x12,0x3F,0x12}; // #
const unsigned char PROGMEM chr_036[] = {0x05,0x12,0x2A,0x7F,0x2A,0x24}; // $
const unsigned char PROGMEM chr_037[] = {0x07,0x30,0x4A,0x34,0x08,0x16,0x29,0x06}; // %
const unsigned char PROGMEM chr_038[] = {0x05,0x36,0x49,0x49,0x49,0x27}; // &
const unsigned char PROGMEM chr_039[] = {0x01,0x70}; // '
const unsigned char PROGMEM chr_040[] = {0x03,0x1C,0x22,0x41}; // (
const unsigned char PROGMEM chr_041[] = {0x03,0x41,0x22,0x1C}; // )
const unsigned char PROGMEM chr_042[] = {0x05,0x28,0x10,0x7C,0x10,0x28}; // *
const unsigned char PROGMEM chr_043[] = {0x05,0x08,0x08,0x3E,0x08,0x08}; // +
const unsigned char PROGMEM chr_044[] = {0x02,0x01,0x02}; // ,
const unsigned char PROGMEM chr_045[] = {0x05,0x08,0x08,0x08,0x08,0x08}; // -
const unsigned char PROGMEM chr_046[] = {0x01,0x01}; // .
const unsigned char PROGMEM chr_047[] = {0x03,0x03,0x1C,0x60}; // /
const unsigned char PROGMEM chr_048[] = {0x05,0x3E,0x45,0x49,0x51,0x3E}; // 0
const unsigned char PROGMEM chr_049[] = {0x03,0x10,0x20,0x7F}; // 1
const unsigned char PROGMEM chr_050[] = {0x05,0x21,0x43,0x45,0x49,0x31}; // 2
const unsigned char PROGMEM chr_051[] = {0x05,0x22,0x41,0x49,0x49,0x36}; // 3
const unsigned char PROGMEM chr_052[] = {0x05,0x0C,0x14,0x24,0x44,0x7F}; // 4
const unsigned char PROGMEM chr_053[] = {0x05,0x72,0x51,0x51,0x51,0x4E}; // 5
const unsigned char PROGMEM chr_054[] = {0x05,0x3E,0x49,0x49,0x49,0x26}; // 6
const unsigned char PROGMEM chr_055[] = {0x05,0x43,0x44,0x48,0x50,0x60}; // 7
const unsigned char PROGMEM chr_056[] = {0x05,0x36,0x49,0x49,0x49,0x36}; // 8
const unsigned char PROGMEM chr_057[] = {0x05,0x32,0x49,0x49,0x49,0x3E}; // 9
const unsigned char PROGMEM chr_058[] = {0x01,0x12}; // :
const unsigned char PROGMEM chr_059[] = {0x02,0x01,0x12}; // ;
const unsigned char PROGMEM chr_060[] = {0x03,0x08,0x14,0x22}; // <
const unsigned char PROGMEM chr_061[] = {0x05,0x14,0x14,0x14,0x14,0x14}; // =
const unsigned char PROGMEM chr_062[] = {0x03,0x22,0x14,0x08}; // >
const unsigned char PROGMEM chr_063[] = {0x05,0x20,0x40,0x45,0x48,0x30}; // ?
const unsigned char PROGMEM chr_064[] = {0x07,0x3E,0x41,0x49,0x55,0x5D,0x45,0x38}; // @
const unsigned char PROGMEM chr_065[] = {0x05,0x3F,0x48,0x48,0x48,0x3F}; // A
const unsigned char PROGMEM chr_066[] = {0x05,0x7F,0x49,0x49,0x49,0x36}; // B
const unsigned char PROGMEM chr_067[] = {0x05,0x3E,0x41,0x41,0x41,0x22}; // C
const unsigned char PROGMEM chr_068[] = {0x05,0x7F,0x41,0x41,0x41,0x3E}; // D
const unsigned char PROGMEM chr_069[] = {0x05,0x7F,0x49,0x49,0x41,0x41}; // E
const unsigned char PROGMEM chr_070[] = {0x05,0x7F,0x48,0x48,0x40,0x40}; // F
const unsigned char PROGMEM chr_071[] = {0x05,0x3E,0x41,0x41,0x49,0x2F}; // G
const unsigned char PROGMEM chr_072[] = {0x05,0x7F,0x08,0x08,0x08,0x7F}; // H
const unsigned char PROGMEM chr_073[] = {0x01,0x7F}; // I
const unsigned char PROGMEM chr_074[] = {0x05,0x02,0x01,0x01,0x01,0x7E}; // J
const unsigned char PROGMEM chr_075[] = {0x05,0x7F,0x08,0x14,0x22,0x41}; // K
const unsigned char PROGMEM chr_076[] = {0x05,0x7F,0x01,0x01,0x01,0x01}; // L
const unsigned char PROGMEM chr_077[] = {0x07,0x7F,0x10,0x08,0x04,0x08,0x10,0x7F}; // M
const unsigned char PROGMEM chr_078[] = {0x05,0x7F,0x10,0x08,0x04,0x7F}; // N
const unsigned char PROGMEM chr_079[] = {0x05,0x3E,0x41,0x41,0x41,0x3E}; // O
const unsigned char PROGMEM chr_080[] = {0x05,0x7F,0x48,0x48,0x48,0x30}; // P
const unsigned char PROGMEM chr_081[] = {0x05,0x3E,0x41,0x45,0x42,0x3D}; // Q
const unsigned char PROGMEM chr_082[] = {0x05,0x7F,0x44,0x44,0x46,0x39}; // R
const unsigned char PROGMEM chr_083[] = {0x05,0x32,0x49,0x49,0x49,0x26}; // S
const unsigned char PROGMEM chr_084[] = {0x05,0x40,0x40,0x7F,0x40,0x40}; // T
const unsigned char PROGMEM chr_085[] = {0x05,0x7E,0x01,0x01,0x01,0x7E}; // U
const unsigned char PROGMEM chr_086[] = {0x05,0x7C,0x02,0x01,0x02,0x7C}; // V
const unsigned char PROGMEM chr_087[] = {0x07,0x7E,0x01,0x01,0x1E,0x01,0x01,0x7E}; // W
const unsigned char PROGMEM chr_088[] = {0x05,0x63,0x14,0x08,0x14,0x63}; // X
const unsigned char PROGMEM chr_089[] = {0x05,0x60,0x10,0x0F,0x10,0x60}; // Y
const unsigned char PROGMEM chr_090[] = {0x05,0x43,0x45,0x49,0x51,0x61}; // Z
const unsigned char PROGMEM chr_091[] = {0x03,0x7F,0x41,0x41}; // [
const unsigned char PROGMEM chr_092[] = {0x03,0x60,0x1C,0x03}; // backslash
const unsigned char PROGMEM chr_093[] = {0x03,0x41,0x41,0x7F}; // ]
const unsigned char PROGMEM chr_094[] = {0x05,0x10,0x20,0x40,0x20,0x10}; // ^
const unsigned char PROGMEM chr_095[] = {0x05,0x01,0x01,0x01,0x01,0x01}; // _
const unsigned char PROGMEM chr_096[] = {0x02,0x40,0x20}; // `
const unsigned char PROGMEM chr_097[] = {0x05,0x02,0x15,0x15,0x15,0x0F}; // a
const unsigned char PROGMEM chr_098[] = {0x05,0x7F,0x11,0x11,0x11,0x0E}; // b
const unsigned char PROGMEM chr_099[] = {0x05,0x0E,0x11,0x11,0x11,0x0A}; // c
const unsigned char PROGMEM chr_100[] = {0x05,0x0E,0x11,0x11,0x11,0x7F}; // d
const unsigned char PROGMEM chr_101[] = {0x05,0x0E,0x15,0x15,0x15,0x0C}; // e
const unsigned char PROGMEM chr_102[] = {0x05,0x10,0x3F,0x50,0x50,0x40}; // f
const unsigned char PROGMEM chr_103[] = {0x05,0x08,0x15,0x15,0x15,0x1E}; // g
const unsigned char PROGMEM chr_104[] = {0x05,0x7F,0x10,0x10,0x10,0x0F}; // h
const unsigned char PROGMEM chr_105[] = {0x01,0x5F}; // i
const unsigned char PROGMEM chr_106[] = {0x05,0x02,0x01,0x01,0x01,0x5E}; // j
const unsigned char PROGMEM chr_107[] = {0x05,0x7F,0x04,0x0C,0x12,0x01}; // k
const unsigned char PROGMEM chr_108[] = {0x01,0x7F}; // l
const unsigned char PROGMEM chr_109[] = {0x07,0x1F,0x10,0x10,0x0C,0x10,0x10,0x0F}; // m
const unsigned char PROGMEM chr_110[] = {0x05,0x1F,0x10,0x10,0x10,0x0F}; // n
const unsigned char PROGMEM chr_111[] = {0x05,0x0E,0x11,0x11,0x11,0x0E}; // o
const unsigned char PROGMEM chr_112[] = {0x05,0x0F,0x14,0x14,0x14,0x08}; // p
const unsigned char PROGMEM chr_113[] = {0x05,0x08,0x14,0x14,0x14,0x0F}; // q
const unsigned char PROGMEM chr_114[] = {0x05,0x1F,0x04,0x08,0x10,0x10}; // r
const unsigned char PROGMEM chr_115[] = {0x05,0x09,0x15,0x15,0x15,0x02}; // s
const unsigned char PROGMEM chr_116[] = {0x05,0x10,0x3E,0x11,0x11,0x01}; // t
const unsigned char PROGMEM chr_117[] = {0x05,0x1E,0x01,0x01,0x01,0x1E}; // u
const unsigned char PROGMEM chr_118[] = {0x05,0x1C,0x02,0x01,0x02,0x1C}; // v
const unsigned char PROGMEM chr_119[] = {0x07,0x1E,0x01,0x01,0x02,0x01,0x01,0x1E}; // w
const unsigned char PROGMEM chr_120[] = {0x05,0x11,0x0A,0x04,0x0A,0x11}; // x
const unsigned char PROGMEM chr_121[] = {0x05,0x19,0x05,0x05,0x05,0x1E}; // y
const unsigned char PROGMEM chr_122[] = {0x05,0x11,0x13,0x15,0x19,0x11}; // z
const unsigned char PROGMEM chr_123[] = {0x04,0x08,0x36,0x41,0x41}; // {
const unsigned char PROGMEM chr_124[] = {0x01,0x7F}; // |
const unsigned char PROGMEM chr_125[] = {0x04,0x41,0x41,0x36,0x08}; // }
const unsigned char PROGMEM chr_126[] = {0x06,0x20,0x40,0x40,0x20,0x20,0x40}; // ~

const glyph_t font[] PROGMEM = {
	chr_037, // special character for uncorrectable byte errors
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_032,
	chr_033,
	chr_034,
	chr_035,
	chr_036,
	chr_037,
	chr_038,
	chr_039,
	chr_040,
	chr_041,
	chr_042,
	chr_043,
	chr_044,
	chr_045,
	chr_046,
	chr_047,
	chr_048,
	chr_049,
	chr_050,
	chr_051,
	chr_052,
	chr_053,
	chr_054,
	chr_055,
	chr_056,
	chr_057,
	chr_058,
	chr_059,
	chr_060,
	chr_061,
	chr_062,
	chr_063,
	chr_064,
	chr_065,
	chr_066,
	chr_067,
	chr_068,
	chr_069,
	chr_070,
	chr_071,
	chr_072,
	chr_073,
	chr_074,
	chr_075,
	chr_076,
	chr_077,
	chr_078,
	chr_079,
	chr_080,
	chr_081,
	chr_082,
	chr_083,
	chr_084,
	chr_085,
	chr_086,
	chr_087,
	chr_088,
	chr_089,
	chr_090,
	chr_091,
	chr_092,
	chr_093,
	chr_094,
	chr_095,
	chr_096,
	chr_097,
	chr_098,
	chr_099,
	chr_100,
	chr_101,
	chr_102,
	chr_103,
	chr_104,
	chr_105,
	chr_106,
	chr_107,
	chr_108,
	chr_109,
	chr_110,
	chr_111,
	chr_112,
	chr_113,
	chr_114,
	chr_115,
	chr_116,
	chr_117,
	chr_118,
	chr_119,
	chr_120,
	chr_121,
	chr_122,
	chr_123,
	chr_124,
	chr_125,
	chr_126
};



#endif /* FONT_H_ */