buffer_graphics_lib/text/font/
standard_4x4.rs

1use crate::text::{
2    ASCII_CENT, ASCII_CHECK, ASCII_CURRENCY, ASCII_DEGREE, ASCII_ELLIPSIS, ASCII_EURO, ASCII_POUND,
3    ASCII_YEN,
4};
5
6// Tiny Talk https://v3x3d.itch.io/tiny-talk
7
8pub const CHAR_WIDTH: usize = 4;
9pub const CHAR_HEIGHT: usize = 4;
10
11pub const fn get_px_ascii(code: u8) -> &'static [bool] {
12    match code {
13        33 => &EXCLAIM,
14        34 => &DOUBLE_QUOTE,
15        35 => &HASH,
16        36 => &DOLLAR,
17        37 => &PERCENT,
18        38 => &AMPERSAND,
19        39 => &QUOTE,
20        40 => &PAREN_L,
21        41 => &PAREN_R,
22        42 => &ASTERISK,
23        43 => &PLUS,
24        44 => &COMMA,
25        45 => &MINUS,
26        46 => &PERIOD,
27        47 => &SLASH,
28        48 => &ZERO,
29        49 => &ONE,
30        50 => &TWO,
31        51 => &THREE,
32        52 => &FOUR,
33        53 => &FIVE,
34        54 => &SIX,
35        55 => &SEVEN,
36        56 => &EIGHT,
37        57 => &NINE,
38        58 => &COLON,
39        59 => &SEMICOLON,
40        60 => &ANGLE_L,
41        61 => &EQUALS,
42        62 => &ANGLE_R,
43        63 => &QUESTION,
44        64 => &AT,
45        65 => &A,
46        66 => &B,
47        67 => &C,
48        68 => &D,
49        69 => &E,
50        70 => &F,
51        71 => &G,
52        72 => &H,
53        73 => &I,
54        74 => &J,
55        75 => &K,
56        76 => &L,
57        77 => &M,
58        78 => &N,
59        79 => &O,
60        80 => &P,
61        81 => &Q,
62        82 => &R,
63        83 => &S,
64        84 => &T,
65        85 => &U,
66        86 => &V,
67        87 => &W,
68        88 => &X,
69        89 => &Y,
70        90 => &Z,
71        91 => &SQUARE_L,
72        92 => &BACKSLASH,
73        93 => &SQUARE_R,
74        95 => &UNDERSCORE,
75        94 => &POWER,
76        96 => &BACKTICK,
77        97 => &LOWER_A,
78        98 => &LOWER_B,
79        99 => &LOWER_C,
80        100 => &LOWER_D,
81        101 => &LOWER_E,
82        102 => &LOWER_F,
83        103 => &LOWER_G,
84        104 => &LOWER_H,
85        105 => &LOWER_I,
86        106 => &LOWER_J,
87        107 => &LOWER_K,
88        108 => &LOWER_L,
89        109 => &LOWER_M,
90        110 => &LOWER_N,
91        111 => &LOWER_O,
92        112 => &LOWER_P,
93        113 => &LOWER_Q,
94        114 => &LOWER_R,
95        115 => &LOWER_S,
96        116 => &LOWER_T,
97        117 => &LOWER_U,
98        118 => &LOWER_V,
99        119 => &LOWER_W,
100        120 => &LOWER_X,
101        121 => &LOWER_Y,
102        122 => &LOWER_Z,
103        123 => &CURLY_L,
104        124 => &PIPE,
105        125 => &CURLY_R,
106        126 => &TILDE,
107        ASCII_EURO => &EURO,
108        ASCII_ELLIPSIS => &ELLIPSIS,
109        ASCII_DEGREE => &DEGREE,
110        ASCII_POUND => &POUND,
111        ASCII_CURRENCY => &CURRENCY,
112        ASCII_YEN => &YEN,
113        ASCII_CENT => &CENT,
114        ASCII_CHECK => &CHECK,
115        _ => &UNKNOWN,
116    }
117}
118
119pub const LETTER_PX_COUNT: usize = CHAR_WIDTH * CHAR_HEIGHT;
120
121const AT: [bool; LETTER_PX_COUNT] = [
122    false, true, true, false, true, false, true, true, true, false, false, false, false, true,
123    true, false,
124];
125const A: [bool; LETTER_PX_COUNT] = [
126    false, true, true, false, true, false, false, true, true, true, true, true, true, false, false,
127    true,
128];
129const B: [bool; LETTER_PX_COUNT] = [
130    true, true, true, false, true, false, true, true, true, false, false, true, true, true, true,
131    false,
132];
133const C: [bool; LETTER_PX_COUNT] = [
134    false, true, true, true, true, false, false, false, true, false, false, false, false, true,
135    true, true,
136];
137const D: [bool; LETTER_PX_COUNT] = [
138    true, true, true, false, true, false, false, true, true, false, false, true, true, true, true,
139    false,
140];
141const E: [bool; LETTER_PX_COUNT] = [
142    true, true, true, true, true, false, false, false, true, true, true, false, true, true, true,
143    true,
144];
145const F: [bool; LETTER_PX_COUNT] = [
146    true, true, true, true, true, false, false, false, true, true, true, false, true, false, false,
147    false,
148];
149const G: [bool; LETTER_PX_COUNT] = [
150    false, true, true, true, true, false, false, false, true, false, false, true, false, true,
151    true, true,
152];
153const H: [bool; LETTER_PX_COUNT] = [
154    true, false, false, true, true, false, false, true, true, true, true, true, true, false, false,
155    true,
156];
157const I: [bool; LETTER_PX_COUNT] = [
158    true, true, true, false, false, true, false, false, false, true, false, false, true, true,
159    true, false,
160];
161const J: [bool; LETTER_PX_COUNT] = [
162    false, false, true, true, false, false, false, true, true, false, false, true, false, true,
163    true, false,
164];
165const K: [bool; LETTER_PX_COUNT] = [
166    true, false, false, true, true, false, false, true, true, true, true, false, true, false,
167    false, true,
168];
169const L: [bool; LETTER_PX_COUNT] = [
170    true, false, false, false, true, false, false, false, true, false, false, false, true, true,
171    true, false,
172];
173const M: [bool; LETTER_PX_COUNT] = [
174    true, true, true, true, true, true, false, true, true, true, false, true, true, false, false,
175    true,
176];
177const N: [bool; LETTER_PX_COUNT] = [
178    true, false, false, true, true, true, false, true, true, false, true, true, true, false, false,
179    true,
180];
181const O: [bool; LETTER_PX_COUNT] = [
182    false, true, true, false, true, false, false, true, true, false, false, true, false, true,
183    true, false,
184];
185const P: [bool; LETTER_PX_COUNT] = [
186    true, true, true, false, true, false, false, true, true, true, true, false, true, false, false,
187    false,
188];
189const Q: [bool; LETTER_PX_COUNT] = [
190    false, true, true, false, true, false, false, true, true, false, true, true, false, true, true,
191    true,
192];
193const R: [bool; LETTER_PX_COUNT] = [
194    true, true, true, false, true, false, false, true, true, true, true, false, true, false, false,
195    true,
196];
197const S: [bool; LETTER_PX_COUNT] = [
198    false, true, true, true, true, true, false, false, false, false, true, true, true, true, true,
199    false,
200];
201const T: [bool; LETTER_PX_COUNT] = [
202    true, true, true, true, false, true, false, false, false, true, false, false, false, true,
203    false, false,
204];
205const U: [bool; LETTER_PX_COUNT] = [
206    true, false, false, true, true, false, false, true, true, false, false, true, false, true,
207    true, false,
208];
209const V: [bool; LETTER_PX_COUNT] = [
210    true, false, false, true, true, false, false, true, true, false, true, false, false, true,
211    false, false,
212];
213const W: [bool; LETTER_PX_COUNT] = [
214    true, false, false, true, true, false, true, true, true, false, true, true, true, true, true,
215    true,
216];
217const X: [bool; LETTER_PX_COUNT] = [
218    true, false, false, true, true, false, false, true, false, true, true, false, true, false,
219    false, true,
220];
221const Y: [bool; LETTER_PX_COUNT] = [
222    true, false, false, true, false, true, true, false, false, false, true, false, false, false,
223    true, false,
224];
225const Z: [bool; LETTER_PX_COUNT] = [
226    true, true, true, true, false, false, true, false, false, true, false, false, true, true, true,
227    true,
228];
229const AMPERSAND: [bool; LETTER_PX_COUNT] = [
230    true, true, false, false, true, true, false, true, true, false, true, false, false, true,
231    false, false,
232];
233const EXCLAIM: [bool; LETTER_PX_COUNT] = [
234    false, true, false, false, false, true, false, false, false, false, false, false, false, true,
235    false, false,
236];
237const PERIOD: [bool; LETTER_PX_COUNT] = [
238    false, false, false, false, false, false, false, false, false, false, false, false, false,
239    true, false, false,
240];
241const COMMA: [bool; LETTER_PX_COUNT] = [
242    false, false, false, false, false, false, false, false, false, true, false, false, false, true,
243    false, false,
244];
245const COLON: [bool; LETTER_PX_COUNT] = [
246    false, true, false, false, false, false, false, false, false, true, false, false, false, false,
247    false, false,
248];
249const SEMICOLON: [bool; LETTER_PX_COUNT] = [
250    false, true, false, false, false, false, false, false, false, true, false, false, false, true,
251    false, false,
252];
253const PLUS: [bool; LETTER_PX_COUNT] = [
254    false, true, false, false, true, true, true, false, false, true, false, false, false, false,
255    false, false,
256];
257const MINUS: [bool; LETTER_PX_COUNT] = [
258    false, false, false, false, true, true, true, false, false, false, false, false, false, false,
259    false, false,
260];
261const EQUALS: [bool; LETTER_PX_COUNT] = [
262    true, true, true, false, false, false, false, false, true, true, true, false, false, false,
263    false, false,
264];
265const SQUARE_L: [bool; LETTER_PX_COUNT] = [
266    true, true, false, false, true, false, false, false, true, false, false, false, true, true,
267    false, false,
268];
269const SQUARE_R: [bool; LETTER_PX_COUNT] = [
270    false, false, true, true, false, false, false, true, false, false, false, true, false, false,
271    true, true,
272];
273const PAREN_L: [bool; LETTER_PX_COUNT] = [
274    false, true, false, false, true, false, false, false, true, false, false, false, false, true,
275    false, false,
276];
277const PAREN_R: [bool; LETTER_PX_COUNT] = [
278    false, false, true, false, false, false, false, true, false, false, false, true, false, false,
279    true, false,
280];
281const ANGLE_L: [bool; LETTER_PX_COUNT] = [
282    false, false, false, false, false, true, true, false, true, false, false, false, false, true,
283    true, false,
284];
285const ANGLE_R: [bool; LETTER_PX_COUNT] = [
286    false, false, false, false, false, true, true, false, false, false, false, true, false, true,
287    true, false,
288];
289const DOUBLE_QUOTE: [bool; LETTER_PX_COUNT] = [
290    true, false, true, false, true, false, true, false, false, false, false, false, false, false,
291    false, false,
292];
293const QUOTE: [bool; LETTER_PX_COUNT] = [
294    false, true, false, false, false, true, false, false, false, false, false, false, false, false,
295    false, false,
296];
297const QUESTION: [bool; LETTER_PX_COUNT] = [
298    true, true, false, false, false, true, true, false, false, false, false, false, false, true,
299    false, false,
300];
301const SLASH: [bool; LETTER_PX_COUNT] = [
302    false, false, false, true, false, false, true, false, false, true, false, false, true, false,
303    false, false,
304];
305const BACKSLASH: [bool; LETTER_PX_COUNT] = [
306    true, false, false, false, false, true, false, false, false, false, true, false, false, false,
307    false, true,
308];
309const ASTERISK: [bool; LETTER_PX_COUNT] = [
310    false, true, true, false, false, true, true, false, false, false, false, false, false, false,
311    false, false,
312];
313const PERCENT: [bool; LETTER_PX_COUNT] = [
314    true, false, false, true, false, false, true, false, false, true, false, false, true, false,
315    false, true,
316];
317const ZERO: [bool; LETTER_PX_COUNT] = [
318    false, true, false, false, true, false, true, false, true, false, true, false, false, true,
319    false, false,
320];
321const ONE: [bool; LETTER_PX_COUNT] = [
322    true, true, false, false, false, true, false, false, false, true, false, false, true, true,
323    true, false,
324];
325const TWO: [bool; LETTER_PX_COUNT] = [
326    true, true, false, false, false, false, true, false, true, true, false, false, true, true,
327    true, false,
328];
329const THREE: [bool; LETTER_PX_COUNT] = [
330    true, true, false, false, false, false, true, false, false, true, true, false, true, true,
331    true, false,
332];
333const FOUR: [bool; LETTER_PX_COUNT] = [
334    true, false, true, false, true, false, true, false, false, true, true, false, false, false,
335    true, false,
336];
337const FIVE: [bool; LETTER_PX_COUNT] = [
338    true, true, true, false, true, false, false, false, false, true, true, false, true, true,
339    false, false,
340];
341const SIX: [bool; LETTER_PX_COUNT] = [
342    false, true, true, false, true, false, false, false, true, true, true, false, false, true,
343    true, false,
344];
345const SEVEN: [bool; LETTER_PX_COUNT] = [
346    true, true, true, false, false, false, true, false, false, true, false, false, true, false,
347    false, false,
348];
349const EIGHT: [bool; LETTER_PX_COUNT] = [
350    false, true, true, false, true, false, true, false, true, true, true, false, true, true, false,
351    false,
352];
353const NINE: [bool; LETTER_PX_COUNT] = [
354    true, true, false, false, true, true, true, false, false, false, true, false, true, true,
355    false, false,
356];
357const UNDERSCORE: [bool; LETTER_PX_COUNT] = [
358    false, false, false, false, false, false, false, false, false, false, false, false, true, true,
359    true, true,
360];
361const UNKNOWN: [bool; LETTER_PX_COUNT] = [
362    true, true, true, true, true, false, false, true, true, false, false, true, true, true, true,
363    true,
364];
365const HASH: [bool; LETTER_PX_COUNT] = [
366    true, true, true, true, false, true, false, true, true, true, true, true, false, true, false,
367    true,
368];
369const ELLIPSIS: [bool; LETTER_PX_COUNT] = [
370    false, false, false, false, false, false, false, false, false, false, false, false, true,
371    false, true, false,
372];
373const POUND: [bool; LETTER_PX_COUNT] = [
374    false, true, true, false, true, false, false, true, true, true, false, false, true, true, true,
375    false,
376];
377const POWER: [bool; LETTER_PX_COUNT] = [
378    false, false, true, false, false, true, false, true, false, false, false, false, false, false,
379    false, false,
380];
381const CURLY_L: [bool; LETTER_PX_COUNT] = [
382    false, true, true, false, true, false, false, false, false, true, false, false, false, true,
383    true, false,
384];
385const CURLY_R: [bool; LETTER_PX_COUNT] = [
386    false, true, true, false, false, false, false, true, false, false, true, false, false, true,
387    true, false,
388];
389const BACKTICK: [bool; LETTER_PX_COUNT] = [
390    true, false, false, false, false, true, false, false, false, false, false, false, false, false,
391    false, false,
392];
393const TILDE: [bool; LETTER_PX_COUNT] = [
394    false, true, false, true, true, false, true, false, false, false, false, false, false, false,
395    false, false,
396];
397const DEGREE: [bool; LETTER_PX_COUNT] = [
398    false, true, true, true, false, true, false, true, false, true, true, true, false, false,
399    false, false,
400];
401const YEN: [bool; LETTER_PX_COUNT] = [
402    true, false, true, false, false, true, false, false, true, true, true, false, false, true,
403    false, false,
404];
405const CURRENCY: [bool; LETTER_PX_COUNT] = [
406    true, false, false, true, false, true, true, false, false, true, true, false, true, false,
407    false, true,
408];
409const DOLLAR: [bool; LETTER_PX_COUNT] = [
410    true, true, true, false, true, true, false, false, false, true, true, false, true, true, true,
411    false,
412];
413const CENT: [bool; LETTER_PX_COUNT] = [
414    false, false, true, false, true, true, true, true, true, false, true, false, true, true, true,
415    true,
416];
417const CHECK: [bool; LETTER_PX_COUNT] = [
418    false, false, false, false, false, false, false, true, true, false, true, false, false, true,
419    false, false,
420];
421const LOWER_A: [bool; LETTER_PX_COUNT] = [
422    false, false, false, false, false, true, true, false, true, false, true, false, false, true,
423    true, false,
424];
425const LOWER_B: [bool; LETTER_PX_COUNT] = [
426    true, false, false, false, true, true, false, false, true, false, true, false, true, true,
427    false, false,
428];
429const LOWER_C: [bool; LETTER_PX_COUNT] = [
430    false, false, false, false, false, true, true, false, true, false, false, false, false, true,
431    true, false,
432];
433const LOWER_D: [bool; LETTER_PX_COUNT] = [
434    false, false, true, false, false, true, true, false, true, false, true, false, false, true,
435    true, false,
436];
437const LOWER_E: [bool; LETTER_PX_COUNT] = [
438    false, false, false, false, true, true, true, false, true, false, true, false, true, true,
439    false, false,
440];
441const LOWER_F: [bool; LETTER_PX_COUNT] = [
442    false, false, true, true, false, true, false, false, true, true, true, false, false, true,
443    false, false,
444];
445const LOWER_G: [bool; LETTER_PX_COUNT] = [
446    false, false, true, true, false, true, false, true, false, false, true, true, false, true,
447    true, false,
448];
449const LOWER_H: [bool; LETTER_PX_COUNT] = [
450    true, false, false, false, true, true, false, false, true, false, true, false, true, false,
451    true, false,
452];
453const LOWER_I: [bool; LETTER_PX_COUNT] = [
454    false, true, false, false, false, false, false, false, false, true, false, false, false, true,
455    false, false,
456];
457const LOWER_J: [bool; LETTER_PX_COUNT] = [
458    false, false, true, false, false, false, false, false, true, false, true, false, false, true,
459    false, false,
460];
461const LOWER_K: [bool; LETTER_PX_COUNT] = [
462    true, false, false, false, true, false, true, false, true, true, false, false, true, false,
463    true, false,
464];
465const LOWER_L: [bool; LETTER_PX_COUNT] = [
466    true, false, false, false, true, false, false, false, true, false, false, false, false, true,
467    false, false,
468];
469const LOWER_M: [bool; LETTER_PX_COUNT] = [
470    false, false, false, false, true, true, false, false, true, true, true, false, true, false,
471    true, false,
472];
473const LOWER_N: [bool; LETTER_PX_COUNT] = [
474    false, false, false, false, true, true, false, false, true, false, true, false, true, false,
475    true, false,
476];
477const LOWER_O: [bool; LETTER_PX_COUNT] = [
478    false, false, false, false, false, true, false, false, true, false, true, false, false, true,
479    false, false,
480];
481const LOWER_P: [bool; LETTER_PX_COUNT] = [
482    true, true, false, false, true, false, true, false, true, true, false, false, true, false,
483    false, false,
484];
485const LOWER_Q: [bool; LETTER_PX_COUNT] = [
486    false, true, true, false, true, false, true, false, false, true, true, false, false, false,
487    true, true,
488];
489const LOWER_R: [bool; LETTER_PX_COUNT] = [
490    false, false, false, false, false, true, true, false, true, false, false, false, true, false,
491    false, false,
492];
493const LOWER_S: [bool; LETTER_PX_COUNT] = [
494    false, false, false, false, false, false, true, false, false, true, false, false, true, true,
495    false, false,
496];
497const LOWER_T: [bool; LETTER_PX_COUNT] = [
498    false, true, false, false, true, true, true, false, false, true, false, false, false, false,
499    true, false,
500];
501const LOWER_U: [bool; LETTER_PX_COUNT] = [
502    false, false, false, false, true, false, true, false, true, false, true, false, false, true,
503    true, false,
504];
505const LOWER_V: [bool; LETTER_PX_COUNT] = [
506    false, false, false, false, true, false, true, false, true, false, true, false, false, true,
507    false, false,
508];
509const LOWER_W: [bool; LETTER_PX_COUNT] = [
510    false, false, false, false, true, false, true, false, true, true, true, false, true, true,
511    false, false,
512];
513const LOWER_X: [bool; LETTER_PX_COUNT] = [
514    false, false, false, false, true, false, true, false, false, true, false, false, true, false,
515    true, false,
516];
517const LOWER_Y: [bool; LETTER_PX_COUNT] = [
518    true, false, true, false, false, true, true, false, false, false, true, false, false, true,
519    false, false,
520];
521const LOWER_Z: [bool; LETTER_PX_COUNT] = [
522    false, false, false, false, true, false, false, false, false, true, false, false, false, true,
523    true, false,
524];
525const EURO: [bool; LETTER_PX_COUNT] = [
526    false, true, true, true, true, true, true, false, false, true, false, false, false, true, true,
527    true,
528];
529const PIPE: [bool; LETTER_PX_COUNT] = [
530    false, true, false, false, false, true, false, false, false, true, false, false, false, true,
531    false, false,
532];