aboutsummaryrefslogtreecommitdiffstats
path: root/sw/eval-clock-cw-tx/src/feldhell_font.rs
blob: e4f65d2a230bdd3ab9f5adda7d9bb2dc022e30b2 (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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
// ----------------------------------------------------------------------------
// Copyright (C) 2014
//              David Freese, W1HKJ
//
// This file is part of fldigi
//
// fldigi 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.
//
// fldigi 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/>.
// ----------------------------------------------------------------------------

/* Format of the arrays:
 * Each line is a character, first line is space (0x20), last one is the tilda 0x7E.
 * 14 lines, 8 columns: Each u8 is one line
 *
 * FELDHELL letters are scanned bottom-to-top, left-to-right */

// feld-fat font
static FONT_FELDHELL_FAT : [ [u8; 14]; 95] = [
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0 ],
    [ 0x00, 0x00, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x6C, 0x6C, 0xFE, 0xFE, 0x6C, 0x6C, 0xFE, 0xFE, 0x6C, 0x6C, 0x00, 0x00 ],
    [ 0x00, 0x10, 0x7E, 0xFE, 0xD0, 0xD0, 0xFC, 0x7E, 0x16, 0x16, 0xFE, 0xFC, 0x10, 0x00 ],
    [ 0x00, 0xE6, 0xE6, 0xE6, 0x06, 0x0E, 0x1C, 0x38, 0x70, 0xE0, 0xCE, 0xCE, 0xCE, 0x00 ],
    [ 0x00, 0x18, 0x3E, 0x66, 0x60, 0x30, 0x7B, 0x7F, 0xCE, 0xC6, 0xC7, 0xFF, 0x7C, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x00 ],
    [ 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0xE0, 0xC0, 0x00 ],
    [ 0x00, 0x00, 0x10, 0x10, 0x10, 0xFE, 0xFE, 0x38, 0x38, 0x6C, 0xC6, 0x82, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0xE0, 0xC0, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00 ],
    [ 0x00, 0x0C, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xCE, 0xCE, 0xD6, 0xD6, 0xE6, 0xE6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x30, 0x70, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0xFC, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0x06, 0x3E, 0x7C, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0x06, 0x1C, 0x1C, 0x06, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x3C, 0x7C, 0xEC, 0xCC, 0xCC, 0xFE, 0xFE, 0x0C, 0x0C, 0x0C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xFC, 0xFE, 0x06, 0x06, 0xFE, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFC, 0xC0, 0xC0, 0xFC, 0xFE, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0x7C, 0x7C, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0x06, 0x7E, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x20, 0x20, 0xE0, 0xC0, 0x00 ],
    [ 0x00, 0x00, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x1C, 0x38, 0x70, 0xE0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x78, 0xFC, 0xCC, 0x0C, 0x38, 0x70, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00 ],
    [ 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xDE, 0xDE, 0xDC, 0xC0, 0xC0, 0x7C, 0x3C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x38, 0x7C, 0xEE, 0xC6, 0xC6, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xFC, 0xFC, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x3C, 0x7E, 0xE6, 0xC0, 0xC0, 0xC0, 0xC0, 0xE6, 0x7E, 0x3C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xF8, 0xFC, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xFC, 0xF8, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xF8, 0xF8, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFE, 0xFE, 0xC0, 0xC0, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x3E, 0x7E, 0xE0, 0xC0, 0xCE, 0xCE, 0xC6, 0xE6, 0x7E, 0x3C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xF0, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0xF0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x0E, 0x0E, 0x06, 0x06, 0x06, 0x06, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xCE, 0xDC, 0xF8, 0xF8, 0xDC, 0xCE, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFE, 0xFE, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x38, 0x7C, 0xEE, 0xC6, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C, 0x38, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xFE, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xDE, 0xDE, 0xFE, 0x7C, 0x0C, 0x0C ],
    [ 0x00, 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xFE, 0xFC, 0xCC, 0xCE, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x7E, 0xFE, 0xC0, 0xC0, 0xFC, 0x7E, 0x06, 0x06, 0xFE, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFC, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x6C, 0x38, 0x38, 0x10, 0x10, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0xFE, 0x6C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC6, 0xC6, 0xEE, 0x7C, 0x38, 0x38, 0x7C, 0xEE, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xFC, 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xFE, 0xFE, 0x0E, 0x0C, 0x18, 0x30, 0x60, 0xE0, 0xFE, 0xFE, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xF0, 0xF0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0xF0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x00 ],
    [ 0x00, 0x00, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xF0, 0xF0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x20, 0x20, 0x70, 0x70, 0xF8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x06, 0x7E, 0xFE, 0xC6, 0xFE, 0x7E, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xDC, 0xFE, 0xE6, 0xC6, 0xC6, 0xC6, 0xFE, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFC, 0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x06, 0x06, 0x76, 0xFE, 0xCE, 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0xFE, 0xFE, 0xC0, 0xFC, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x3C, 0x7C, 0x60, 0x60, 0xF8, 0xF8, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC6, 0xC6, 0xC6, 0xFE, 0x7E, 0x06, 0x7E, 0x7C ],
    [ 0x00, 0x00, 0xC0, 0xC0, 0xDC, 0xFE, 0xEE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x60, 0x60, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0xF0, 0xF0, 0x00, 0x00 ],
    [ 0x18, 0x18, 0x00, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xF8, 0x70, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0xCC, 0xDC, 0xF8, 0xF0, 0xF0, 0xF8, 0xDC, 0xCC, 0xCC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0xF0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xFE, 0xD6, 0xD6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFE, 0xEE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0x7C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xC6, 0xC6, 0xE6, 0xFE, 0xDC, 0xC0, 0xC0, 0xC0 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x06, 0x06, 0x06 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFE, 0xE6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFE, 0xC0, 0xFC, 0x7E, 0x06, 0xFE, 0xFC, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x78, 0x38, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xCE, 0xFE, 0x76, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C, 0x38, 0x10, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0xFE, 0x6C, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xC6, 0xEE, 0x7C, 0x38, 0x38, 0x7C, 0xEE, 0xC6, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xEE, 0x7C, 0x38, 0x30, 0x70, 0xE0, 0xC0 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xFE, 0xFE, 0x00, 0x00 ],
    [ 0x00, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x70, 0x30, 0x00 ],
    [ 0x00, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x1C, 0x0C, 0x0C, 0x00, 0x00 ],
    [ 0x00, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0x70, 0x70, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00 ],
    [ 0x00, 0x00, 0x20, 0x70, 0xF8, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    ];

static FONT_FELDHELL : [ [u8; 14]; 95] = [
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00 ],
    [ 0x00, 0xA0, 0xA0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x50, 0x50, 0xF8, 0xF8, 0x50, 0x50, 0xF8, 0xF8, 0x50, 0x50, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x70, 0xF8, 0xA8, 0xA0, 0xF0, 0x78, 0x28, 0xA8, 0xF8, 0x70, 0x20, 0x00 ],
    [ 0x00, 0xC8, 0xC8, 0xC8, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x98, 0x98, 0x98, 0x00 ],
    [ 0x00, 0x40, 0xE0, 0xA0, 0xA0, 0x40, 0x40, 0xA0, 0xA0, 0x90, 0x90, 0xF8, 0x78, 0x00 ],
    [ 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x20, 0x60, 0xC0, 0xC0, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0x20, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x20, 0x20, 0x60, 0x60, 0xC0, 0x80, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x88, 0x88, 0x50, 0x70, 0xF8, 0xF8, 0x70, 0x50, 0x88, 0x88, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0xF8, 0xF8, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x20, 0x20, 0xE0, 0xC0 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x08, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x98, 0x98, 0xA8, 0xA8, 0xC8, 0xC8, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x60, 0xE0, 0xA0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x60, 0xF0, 0x90, 0x10, 0x30, 0x20, 0x40, 0xC0, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x08, 0x08, 0x38, 0x38, 0x08, 0x08, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x80, 0x90, 0x90, 0x90, 0x90, 0x90, 0xF8, 0xF8, 0x10, 0x10, 0x10, 0x00, 0x00 ],
    [ 0x00, 0x78, 0x78, 0x40, 0x40, 0x70, 0x78, 0x08, 0x08, 0x18, 0xF0, 0xE0, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x60, 0xC0, 0x80, 0x80, 0xB0, 0xF8, 0xC8, 0x88, 0x88, 0xF8, 0x70, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x18, 0x10, 0x30, 0x20, 0x60, 0x40, 0xC0, 0x80, 0x80, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x88, 0xD8, 0x70, 0x70, 0xD8, 0x88, 0x88, 0xF8, 0x70, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x88, 0xF8, 0x78, 0x08, 0x08, 0x18, 0x70, 0x60, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00 ],
    [ 0x00, 0x00, 0xC0, 0x00, 0x60, 0x60, 0x60, 0x00, 0x00, 0x60, 0x60, 0x20, 0x20, 0xE0 ],
    [ 0x00, 0x00, 0x08, 0x18, 0x30, 0x60, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x08, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x00, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x08, 0x18, 0x30, 0x20, 0x20, 0x00, 0x00, 0x20, 0x20, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x88, 0xB8, 0xB8, 0xB0, 0x80, 0xC0, 0x78, 0x38, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0xD8, 0x88, 0x88, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x70, 0x70, 0x48, 0x48, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0xC8, 0x80, 0x80, 0x80, 0x80, 0xC8, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x78, 0xF8, 0xC0, 0x80, 0x98, 0x98, 0x88, 0xC8, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x88, 0x88, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xE0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x98, 0xB0, 0xE0, 0xE0, 0xB0, 0x98, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x82, 0xC6, 0xEE, 0xBA, 0x92, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0xC8, 0xC8, 0xE8, 0xA8, 0xB8, 0x98, 0x98, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x78, 0x70, 0x40, 0x40, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0xD8, 0x88, 0x88, 0xA8, 0xA8, 0xB8, 0xF0, 0x70, 0x18, 0x08, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x88, 0x88, 0xF8, 0xF0, 0x90, 0x98, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x78, 0xF8, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x98, 0x90, 0xB0, 0xA0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0xBA, 0xEE, 0x44, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0xD8, 0x70, 0x20, 0x20, 0x70, 0xD8, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0xD8, 0x50, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x18, 0x10, 0x30, 0x60, 0x48, 0xC8, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x80, 0x80, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x08, 0x00, 0x00 ],
    [ 0x00, 0xE0, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x20, 0x70, 0x50, 0xD8, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x70, 0xD8, 0x88, 0x88, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x78, 0x78, 0x48, 0x48, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0xC8, 0x80, 0x80, 0x80, 0x80, 0xC8, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x80, 0x80, 0xF8, 0xF8, 0x80, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x80, 0x80, 0xE0, 0xE0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x78, 0xF8, 0xC0, 0x80, 0x98, 0x98, 0x88, 0xC8, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x88, 0x88, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xE0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x98, 0x98, 0xB0, 0xE0, 0xE0, 0xB0, 0x98, 0x98, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x82, 0xC6, 0xEE, 0xBA, 0x92, 0x82, 0x82, 0x82, 0x82, 0x82, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0xC8, 0xC8, 0xE8, 0xA8, 0xB8, 0x98, 0x98, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x48, 0x48, 0x78, 0x70, 0x40, 0x40, 0xE0, 0xE0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x70, 0xF8, 0xD8, 0x88, 0x88, 0xA8, 0xA8, 0xB8, 0xF0, 0x70, 0x18, 0x08, 0x00 ],
    [ 0x00, 0xF0, 0xF8, 0x88, 0x88, 0xF8, 0xF0, 0x90, 0x98, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x78, 0xF8, 0x80, 0x80, 0xF0, 0x78, 0x08, 0x08, 0xF8, 0xF0, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF8, 0x70, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0x98, 0x90, 0xB0, 0xA0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0xBA, 0xEE, 0x44, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0xD8, 0x70, 0x20, 0x20, 0x70, 0xD8, 0x88, 0x88, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x88, 0x88, 0xD8, 0x50, 0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00 ],
    [ 0x00, 0xF8, 0xF8, 0x18, 0x10, 0x30, 0x60, 0x48, 0xC8, 0xF8, 0xF8, 0x00, 0x00, 0x00 ],
    [ 0x00, 0x20, 0x60, 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x40, 0x40, 0x40, 0x60, 0x20, 0x00 ],
    [ 0x00, 0x80, 0x80, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x08, 0x00, 0x00 ],
    [ 0x00, 0x80, 0xC0, 0x40, 0x40, 0x40, 0x60, 0x60, 0x40, 0x40, 0x40, 0xC0, 0x80, 0x00 ],
    [ 0x00, 0x20, 0x70, 0xD8, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ],
    ];

fn get_letter(letter : u8, fat : bool) -> Option<&'static [u8; 14]> {
    if letter >= b' ' && letter <= 0x7e {
        let offset = letter - b' ';

        Some(if fat {
            &FONT_FELDHELL_FAT[offset as usize]
        }
        else {
            &FONT_FELDHELL[offset as usize]
        })
    }
    else {
        None
    }
}

/* Returns the columns for the given letter.
 * Bit 14 of each column says if the column needs to be transmitted or not.
 * The rows are in bits 13 down to 0.
 */
pub fn get_letter_by_columns(letter : u8, fat : bool) -> Option<[u16; 8]> {
    if let Some(lines) = get_letter(letter, fat) {
        let mut pattern = [0u16; 8];

        // Count number of effective columns
        let effective_columns = if letter == b' ' {
            5
        }
        else {
            9 - lines.iter()
                .fold(0x00, |acc, x| acc | x )
                .trailing_zeros()
        } as usize;

        assert!(effective_columns <= 8);

        // lines is 14x u8, each u8 is a line
        // pattern is 8x u16, each u16 is a column, where bits 13..0 correspond to the 14 columns,
        // and bit 14 is always 1 to mark the end
        for j in 0..effective_columns {
            for i in 0..14 {
                if (lines[13-i] >> (7-j)) & 0x1 != 0 {
                    pattern[j] |= 1 << i;
                }
            }
            pattern[j] |= 1 << 14;
        }

        Some(pattern)
    }
    else {
        None
    }
}