TinyGPU
Loading...
Searching...
No Matches
AsciiFonts.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4
5#include "TinyGPU/Font/BitmapFont.h"
6#include "TinyGPU/Color/RGB565.h"
7
8// Fonts converted from the STM32 STM32-EVAL LCD font tables (fonts.c), see
9// https://github.com/codenuke/STM32-Library-V3.5/blob/master/Utilities/STM32_EVAL/Common/fonts.c
10//
11// The original tables store every glyph row as a 16-bit word with the row
12// left-aligned to the most significant bit. The tables below have been
13// re-packed to match the BitmapFont/Font5x7 convention of using only
14// the `Width` most significant bits of the row's storage type (bit
15// `Width-1` = leftmost pixel), so the 12x12 font's rows have been shifted
16// right by 4 bits compared to the original ST source. Row data is otherwise
17// unchanged.
18
19namespace tinygpu {
20
21/// @brief Raw glyph data for the fonts converted from STM32-EVAL fonts.c.
22/// Not part of the public API; use Font8x8/Font8x12/Font12x12/Font16x24.
24
25
26inline const std::array<uint8_t, 8>* table8x8() {
27 static const std::array<uint8_t, 8> kGlyphs[96] = {
28 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
29 {0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x40}, // '!'
30 {0xa0, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
31 {0x00, 0x24, 0x24, 0xfe, 0x48, 0xfc, 0x48, 0x48}, // '#'
32 {0x38, 0x54, 0x50, 0x38, 0x14, 0x14, 0x54, 0x38}, // '$'
33 {0x44, 0xa8, 0xa8, 0x50, 0x14, 0x1a, 0x2a, 0x24}, // '%'
34 {0x10, 0x28, 0x28, 0x10, 0x74, 0x4c, 0x4c, 0x30}, // '&'
35 {0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, // '\''
36 {0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08}, // '('
37 {0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10}, // ')'
38 {0x00, 0x00, 0x24, 0x18, 0x3c, 0x18, 0x24, 0x00}, // '*'
39 {0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00}, // '+'
40 {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10}, // ','
41 {0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00}, // '-'
42 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18}, // '.'
43 {0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20}, // '/'
44 {0x18, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x18}, // '0'
45 {0x08, 0x18, 0x28, 0x08, 0x08, 0x08, 0x08, 0x08}, // '1'
46 {0x38, 0x44, 0x00, 0x04, 0x08, 0x10, 0x20, 0x7c}, // '2'
47 {0x18, 0x24, 0x04, 0x18, 0x04, 0x04, 0x24, 0x18}, // '3'
48 {0x04, 0x0c, 0x14, 0x24, 0x44, 0x7e, 0x04, 0x04}, // '4'
49 {0x3c, 0x20, 0x20, 0x38, 0x04, 0x04, 0x24, 0x18}, // '5'
50 {0x18, 0x24, 0x20, 0x38, 0x24, 0x24, 0x24, 0x18}, // '6'
51 {0x3c, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10}, // '7'
52 {0x18, 0x24, 0x24, 0x18, 0x24, 0x24, 0x24, 0x18}, // '8'
53 {0x18, 0x24, 0x24, 0x24, 0x1c, 0x04, 0x24, 0x18}, // '9'
54 {0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00}, // ':'
55 {0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x10, 0x00}, // ';'
56 {0x00, 0x00, 0x04, 0x18, 0x20, 0x18, 0x04, 0x00}, // '<'
57 {0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00}, // '='
58 {0x00, 0x00, 0x20, 0x18, 0x04, 0x18, 0x20, 0x00}, // '>'
59 {0x18, 0x24, 0x04, 0x08, 0x10, 0x10, 0x00, 0x10}, // '?'
60 {0x3c, 0x42, 0x99, 0xa5, 0xa5, 0x9d, 0x42, 0x38}, // '@'
61 {0x38, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44}, // 'A'
62 {0x78, 0x44, 0x44, 0x78, 0x44, 0x44, 0x44, 0x78}, // 'B'
63 {0x1c, 0x22, 0x42, 0x40, 0x40, 0x42, 0x22, 0x1c}, // 'C'
64 {0x70, 0x48, 0x44, 0x44, 0x44, 0x44, 0x48, 0x70}, // 'D'
65 {0x7c, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x7c}, // 'E'
66 {0x3c, 0x20, 0x20, 0x38, 0x20, 0x20, 0x20, 0x20}, // 'F'
67 {0x1c, 0x22, 0x42, 0x40, 0x4e, 0x42, 0x22, 0x1c}, // 'G'
68 {0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x44, 0x44}, // 'H'
69 {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, // 'I'
70 {0x04, 0x04, 0x04, 0x04, 0x04, 0x24, 0x24, 0x18}, // 'J'
71 {0x44, 0x48, 0x50, 0x70, 0x50, 0x48, 0x48, 0x44}, // 'K'
72 {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c}, // 'L'
73 {0x82, 0xc6, 0xc6, 0xaa, 0xaa, 0xaa, 0xaa, 0x92}, // 'M'
74 {0x42, 0x62, 0x52, 0x52, 0x4a, 0x4a, 0x46, 0x42}, // 'N'
75 {0x18, 0x24, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18}, // 'O'
76 {0x78, 0x44, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40}, // 'P'
77 {0x18, 0x24, 0x42, 0x42, 0x42, 0x42, 0x2c, 0x1a}, // 'Q'
78 {0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x42}, // 'R'
79 {0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x44, 0x38}, // 'S'
80 {0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, // 'T'
81 {0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18}, // 'U'
82 {0x44, 0x44, 0x28, 0x28, 0x28, 0x28, 0x28, 0x10}, // 'V'
83 {0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x44}, // 'W'
84 {0x42, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x42}, // 'X'
85 {0x44, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10}, // 'Y'
86 {0x7c, 0x04, 0x08, 0x10, 0x10, 0x20, 0x40, 0x7c}, // 'Z'
87 {0x1c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c}, // '['
88 {0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04}, // '\\'
89 {0x1c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x1c}, // ']'
90 {0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
91 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '_'
92 {0x20, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
93 {0x00, 0x00, 0x18, 0x04, 0x1c, 0x24, 0x24, 0x1c}, // 'a'
94 {0x20, 0x20, 0x28, 0x34, 0x24, 0x24, 0x34, 0x28}, // 'b'
95 {0x00, 0x00, 0x18, 0x24, 0x20, 0x20, 0x24, 0x18}, // 'c'
96 {0x04, 0x04, 0x14, 0x2c, 0x24, 0x24, 0x2c, 0x14}, // 'd'
97 {0x00, 0x00, 0x18, 0x24, 0x3c, 0x20, 0x24, 0x18}, // 'e'
98 {0x00, 0x18, 0x10, 0x10, 0x18, 0x10, 0x10, 0x10}, // 'f'
99 {0x00, 0x18, 0x24, 0x24, 0x18, 0x04, 0x24, 0x18}, // 'g'
100 {0x20, 0x20, 0x28, 0x34, 0x24, 0x24, 0x24, 0x24}, // 'h'
101 {0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, // 'i'
102 {0x08, 0x00, 0x08, 0x08, 0x08, 0x08, 0x28, 0x10}, // 'j'
103 {0x20, 0x20, 0x24, 0x28, 0x30, 0x28, 0x24, 0x24}, // 'k'
104 {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, // 'l'
105 {0x00, 0x00, 0xa6, 0xda, 0x92, 0x92, 0x92, 0x92}, // 'm'
106 {0x00, 0x00, 0x28, 0x34, 0x24, 0x24, 0x24, 0x24}, // 'n'
107 {0x00, 0x00, 0x18, 0x24, 0x24, 0x24, 0x24, 0x18}, // 'o'
108 {0x00, 0x28, 0x34, 0x24, 0x38, 0x20, 0x20, 0x20}, // 'p'
109 {0x00, 0x14, 0x2c, 0x24, 0x1c, 0x04, 0x04, 0x04}, // 'q'
110 {0x00, 0x00, 0x2c, 0x30, 0x20, 0x20, 0x20, 0x20}, // 'r'
111 {0x00, 0x00, 0x18, 0x24, 0x10, 0x08, 0x24, 0x18}, // 's'
112 {0x00, 0x10, 0x38, 0x10, 0x10, 0x10, 0x10, 0x18}, // 't'
113 {0x00, 0x00, 0x24, 0x24, 0x24, 0x24, 0x2c, 0x14}, // 'u'
114 {0x00, 0x00, 0x44, 0x44, 0x28, 0x28, 0x28, 0x10}, // 'v'
115 {0x00, 0x00, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0x44}, // 'w'
116 {0x00, 0x00, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44}, // 'x'
117 {0x00, 0x28, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10}, // 'y'
118 {0x00, 0x00, 0x3c, 0x04, 0x08, 0x10, 0x20, 0x3c}, // 'z'
119 {0x00, 0x08, 0x10, 0x10, 0x20, 0x10, 0x10, 0x08}, // '{'
120 {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, // '|'
121 {0x00, 0x10, 0x08, 0x08, 0x04, 0x08, 0x08, 0x10}, // '}'
122 {0x00, 0x00, 0x00, 0x60, 0x92, 0x0c, 0x00, 0x00}, // '~'
123 {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // codepoint 0x7f
124 };
125 return kGlyphs;
126}
127
128inline const std::array<uint8_t, 12>* table8x12() {
129 static const std::array<uint8_t, 12> kGlyphs[96] = {
130 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ' '
131 {0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00}, // '!'
132 {0x00, 0x00, 0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '"'
133 {0x00, 0x00, 0x00, 0x14, 0x14, 0x3e, 0x14, 0x28, 0x7c, 0x28, 0x28, 0x00}, // '#'
134 {0x00, 0x00, 0x10, 0x38, 0x54, 0x50, 0x38, 0x14, 0x14, 0x54, 0x38, 0x10}, // '$'
135 {0x00, 0x00, 0x00, 0x44, 0xa8, 0xa8, 0x50, 0x14, 0x1a, 0x2a, 0x24, 0x00}, // '%'
136 {0x00, 0x00, 0x00, 0x20, 0x50, 0x50, 0x20, 0xe8, 0x98, 0x98, 0x60, 0x00}, // '&'
137 {0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '\''
138 {0x00, 0x00, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}, // '('
139 {0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // ')'
140 {0x00, 0x00, 0x00, 0x40, 0xe0, 0x40, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00}, // '*'
141 {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xf8, 0x20, 0x20, 0x00, 0x00}, // '+'
142 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40}, // ','
143 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00}, // '-'
144 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00}, // '.'
145 {0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x00}, // '/'
146 {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00}, // '0'
147 {0x00, 0x00, 0x00, 0x20, 0x60, 0xa0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, // '1'
148 {0x00, 0x00, 0x00, 0x60, 0x90, 0x10, 0x10, 0x20, 0x40, 0x80, 0xf0, 0x00}, // '2'
149 {0x00, 0x00, 0x00, 0x60, 0x90, 0x10, 0x60, 0x10, 0x10, 0x90, 0x60, 0x00}, // '3'
150 {0x00, 0x00, 0x00, 0x10, 0x30, 0x50, 0x50, 0x90, 0xf8, 0x10, 0x10, 0x00}, // '4'
151 {0x00, 0x00, 0x00, 0x70, 0x40, 0x80, 0xe0, 0x10, 0x10, 0x90, 0x60, 0x00}, // '5'
152 {0x00, 0x00, 0x00, 0x60, 0x90, 0x80, 0xa0, 0xd0, 0x90, 0x90, 0x60, 0x00}, // '6'
153 {0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x00}, // '7'
154 {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x60, 0x90, 0x90, 0x90, 0x60, 0x00}, // '8'
155 {0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0xb0, 0x50, 0x10, 0x90, 0x60, 0x00}, // '9'
156 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00}, // ':'
157 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40}, // ';'
158 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x60, 0x80, 0x60, 0x10, 0x00, 0x00}, // '<'
159 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00}, // '='
160 {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x10, 0x60, 0x80, 0x00, 0x00}, // '>'
161 {0x00, 0x00, 0x00, 0x60, 0x90, 0x10, 0x20, 0x40, 0x40, 0x00, 0x40, 0x00}, // '?'
162 {0x00, 0x00, 0x00, 0x1c, 0x22, 0x5b, 0xa5, 0xa5, 0xa5, 0xa5, 0x9e, 0x41}, // '@'
163 {0x00, 0x00, 0x00, 0x20, 0x50, 0x50, 0x50, 0x50, 0x70, 0x88, 0x88, 0x00}, // 'A'
164 {0x00, 0x00, 0x00, 0xf0, 0x88, 0x88, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x00}, // 'B'
165 {0x00, 0x00, 0x00, 0x38, 0x44, 0x84, 0x80, 0x80, 0x84, 0x44, 0x38, 0x00}, // 'C'
166 {0x00, 0x00, 0x00, 0xe0, 0x90, 0x88, 0x88, 0x88, 0x88, 0x90, 0xe0, 0x00}, // 'D'
167 {0x00, 0x00, 0x00, 0xf8, 0x80, 0x80, 0xf8, 0x80, 0x80, 0x80, 0xf8, 0x00}, // 'E'
168 {0x00, 0x00, 0x00, 0x78, 0x40, 0x40, 0x70, 0x40, 0x40, 0x40, 0x40, 0x00}, // 'F'
169 {0x00, 0x00, 0x00, 0x38, 0x44, 0x84, 0x80, 0x9c, 0x84, 0x44, 0x38, 0x00}, // 'G'
170 {0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x00}, // 'H'
171 {0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00}, // 'I'
172 {0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x90, 0x60, 0x00}, // 'J'
173 {0x00, 0x00, 0x00, 0x88, 0x90, 0xa0, 0xe0, 0xa0, 0x90, 0x90, 0x88, 0x00}, // 'K'
174 {0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf0, 0x00}, // 'L'
175 {0x00, 0x00, 0x00, 0x82, 0xc6, 0xc6, 0xaa, 0xaa, 0xaa, 0xaa, 0x92, 0x00}, // 'M'
176 {0x00, 0x00, 0x00, 0x84, 0xc4, 0xa4, 0xa4, 0x94, 0x94, 0x8c, 0x84, 0x00}, // 'N'
177 {0x00, 0x00, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30, 0x00}, // 'O'
178 {0x00, 0x00, 0x00, 0xf0, 0x88, 0x88, 0x88, 0xf0, 0x80, 0x80, 0x80, 0x00}, // 'P'
179 {0x00, 0x00, 0x00, 0x30, 0x48, 0x84, 0x84, 0x84, 0x84, 0x58, 0x34, 0x04}, // 'Q'
180 {0x00, 0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44, 0x42, 0x00}, // 'R'
181 {0x00, 0x00, 0x00, 0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x88, 0x70, 0x00}, // 'S'
182 {0x00, 0x00, 0x00, 0xf8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, // 'T'
183 {0x00, 0x00, 0x00, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x48, 0x30, 0x00}, // 'U'
184 {0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x50, 0x50, 0x50, 0x20, 0x00}, // 'V'
185 {0x00, 0x00, 0x00, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x00}, // 'W'
186 {0x00, 0x00, 0x00, 0x84, 0x48, 0x48, 0x30, 0x30, 0x48, 0x48, 0x84, 0x00}, // 'X'
187 {0x00, 0x00, 0x00, 0x88, 0x50, 0x50, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, // 'Y'
188 {0x00, 0x00, 0x00, 0xf8, 0x08, 0x10, 0x20, 0x20, 0x40, 0x80, 0xf8, 0x00}, // 'Z'
189 {0x00, 0x00, 0x00, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}, // '['
190 {0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x00}, // '\\'
191 {0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // ']'
192 {0x00, 0x00, 0x00, 0x40, 0xa0, 0xa0, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00}, // '^'
193 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8}, // '_'
194 {0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // '`'
195 {0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x70, 0x90, 0x90, 0x70, 0x00}, // 'a'
196 {0x00, 0x00, 0x00, 0x80, 0x80, 0xa0, 0xd0, 0x90, 0x90, 0xd0, 0xa0, 0x00}, // 'b'
197 {0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0x80, 0x80, 0x90, 0x60, 0x00}, // 'c'
198 {0x00, 0x00, 0x00, 0x10, 0x10, 0x50, 0xb0, 0x90, 0x90, 0xb0, 0x50, 0x00}, // 'd'
199 {0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0xf0, 0x80, 0x90, 0x60, 0x00}, // 'e'
200 {0x00, 0x00, 0x00, 0xc0, 0x80, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00}, // 'f'
201 {0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xb0, 0x90, 0x90, 0xb0, 0x50, 0x10}, // 'g'
202 {0x00, 0x00, 0x00, 0x80, 0x80, 0xa0, 0xd0, 0x90, 0x90, 0x90, 0x90, 0x00}, // 'h'
203 {0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00}, // 'i'
204 {0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}, // 'j'
205 {0x00, 0x00, 0x00, 0x80, 0x80, 0x90, 0xa0, 0xc0, 0xa0, 0x90, 0x90, 0x00}, // 'k'
206 {0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00}, // 'l'
207 {0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xda, 0x92, 0x92, 0x92, 0x92, 0x00}, // 'm'
208 {0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd0, 0x90, 0x90, 0x90, 0x90, 0x00}, // 'n'
209 {0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x90, 0x90, 0x90, 0x90, 0x60, 0x00}, // 'o'
210 {0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xd0, 0x90, 0x90, 0xd0, 0xa0, 0x80}, // 'p'
211 {0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xb0, 0x90, 0x90, 0xb0, 0x50, 0x10}, // 'q'
212 {0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00}, // 'r'
213 {0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x40, 0x20, 0x90, 0x60, 0x00}, // 's'
214 {0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x00}, // 't'
215 {0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90, 0x90, 0x90, 0xb0, 0x50, 0x00}, // 'u'
216 {0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00}, // 'v'
217 {0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x00}, // 'w'
218 {0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x50, 0x20, 0x20, 0x50, 0x88, 0x00}, // 'x'
219 {0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x50, 0x50, 0x50, 0x20, 0x20, 0x20}, // 'y'
220 {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x20, 0x40, 0x80, 0xf0, 0x00}, // 'z'
221 {0x00, 0x00, 0x00, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80}, // '{'
222 {0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}, // '|'
223 {0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x20, 0x40, 0x40, 0x40, 0x40}, // '}'
224 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xb0, 0x00, 0x00, 0x00, 0x00}, // '~'
225 {0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xe0, 0x00}, // codepoint 0x7f
226 };
227 return kGlyphs;
228}
229
230inline const std::array<uint16_t, 12>* table12x12() {
231 static const std::array<uint16_t, 12> kGlyphs[96] = {
232 {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // ' '
233 {0x000, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x000, 0x200, 0x000, 0x000}, // '!'
234 {0x000, 0x500, 0x500, 0x500, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '"'
235 {0x000, 0x090, 0x090, 0x120, 0x7f0, 0x120, 0x7f0, 0x120, 0x240, 0x240, 0x000, 0x000}, // '#'
236 {0x100, 0x380, 0x540, 0x500, 0x500, 0x380, 0x140, 0x540, 0x540, 0x380, 0x100, 0x000}, // '$'
237 {0x000, 0x308, 0x490, 0x490, 0x4a0, 0x32c, 0x052, 0x092, 0x092, 0x10c, 0x000, 0x000}, // '%'
238 {0x000, 0x0c0, 0x120, 0x120, 0x140, 0x180, 0x250, 0x230, 0x230, 0x1d8, 0x000, 0x000}, // '&'
239 {0x000, 0x400, 0x400, 0x400, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '\''
240 {0x000, 0x080, 0x100, 0x100, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x100, 0x100}, // '('
241 {0x000, 0x400, 0x200, 0x200, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x200, 0x200}, // ')'
242 {0x000, 0x200, 0x700, 0x200, 0x500, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '*'
243 {0x000, 0x000, 0x000, 0x080, 0x080, 0x7f0, 0x080, 0x080, 0x000, 0x000, 0x000, 0x000}, // '+'
244 {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x200, 0x200, 0x400}, // ','
245 {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x700, 0x000, 0x000, 0x000, 0x000, 0x000}, // '-'
246 {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x200, 0x000, 0x000}, // '.'
247 {0x000, 0x100, 0x100, 0x100, 0x200, 0x200, 0x200, 0x200, 0x400, 0x400, 0x000, 0x000}, // '/'
248 {0x000, 0x100, 0x280, 0x440, 0x440, 0x440, 0x440, 0x440, 0x280, 0x100, 0x000, 0x000}, // '0'
249 {0x000, 0x100, 0x300, 0x500, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x000, 0x000}, // '1'
250 {0x000, 0x300, 0x480, 0x440, 0x040, 0x080, 0x100, 0x200, 0x400, 0x7c0, 0x000, 0x000}, // '2'
251 {0x000, 0x300, 0x480, 0x040, 0x080, 0x100, 0x080, 0x440, 0x480, 0x300, 0x000, 0x000}, // '3'
252 {0x000, 0x080, 0x180, 0x180, 0x280, 0x280, 0x480, 0x7c0, 0x080, 0x080, 0x000, 0x000}, // '4'
253 {0x000, 0x3c0, 0x200, 0x400, 0x700, 0x480, 0x040, 0x440, 0x480, 0x300, 0x000, 0x000}, // '5'
254 {0x000, 0x180, 0x240, 0x400, 0x500, 0x680, 0x440, 0x440, 0x280, 0x100, 0x000, 0x000}, // '6'
255 {0x000, 0x7c0, 0x040, 0x080, 0x100, 0x100, 0x100, 0x200, 0x200, 0x200, 0x000, 0x000}, // '7'
256 {0x000, 0x100, 0x280, 0x440, 0x280, 0x100, 0x280, 0x440, 0x280, 0x100, 0x000, 0x000}, // '8'
257 {0x000, 0x100, 0x280, 0x440, 0x440, 0x2c0, 0x140, 0x040, 0x480, 0x300, 0x000, 0x000}, // '9'
258 {0x000, 0x000, 0x000, 0x200, 0x000, 0x000, 0x000, 0x000, 0x000, 0x200, 0x000, 0x000}, // ':'
259 {0x000, 0x000, 0x000, 0x200, 0x000, 0x000, 0x000, 0x000, 0x000, 0x200, 0x200, 0x400}, // ';'
260 {0x000, 0x000, 0x040, 0x080, 0x300, 0x400, 0x300, 0x080, 0x040, 0x000, 0x000, 0x000}, // '<'
261 {0x000, 0x000, 0x000, 0x7c0, 0x000, 0x000, 0x7c0, 0x000, 0x000, 0x000, 0x000, 0x000}, // '='
262 {0x000, 0x000, 0x400, 0x200, 0x180, 0x040, 0x180, 0x200, 0x400, 0x000, 0x000, 0x000}, // '>'
263 {0x000, 0x380, 0x640, 0x440, 0x040, 0x080, 0x100, 0x100, 0x000, 0x100, 0x000, 0x000}, // '?'
264 {0x000, 0x0f8, 0x104, 0x2ea, 0x51a, 0x512, 0x512, 0x512, 0x532, 0x4dc, 0x202, 0x104}, // '@'
265 {0x000, 0x080, 0x140, 0x140, 0x140, 0x220, 0x3e0, 0x220, 0x410, 0x410, 0x000, 0x000}, // 'A'
266 {0x000, 0x3c0, 0x220, 0x220, 0x220, 0x3c0, 0x220, 0x220, 0x220, 0x3c0, 0x000, 0x000}, // 'B'
267 {0x000, 0x0e0, 0x110, 0x210, 0x200, 0x200, 0x200, 0x210, 0x110, 0x0e0, 0x000, 0x000}, // 'C'
268 {0x000, 0x3c0, 0x220, 0x210, 0x210, 0x210, 0x210, 0x210, 0x220, 0x3c0, 0x000, 0x000}, // 'D'
269 {0x000, 0x3e0, 0x200, 0x200, 0x200, 0x3e0, 0x200, 0x200, 0x200, 0x3e0, 0x000, 0x000}, // 'E'
270 {0x000, 0x3e0, 0x200, 0x200, 0x200, 0x3c0, 0x200, 0x200, 0x200, 0x200, 0x000, 0x000}, // 'F'
271 {0x000, 0x0e0, 0x110, 0x210, 0x200, 0x270, 0x210, 0x210, 0x110, 0x0e0, 0x000, 0x000}, // 'G'
272 {0x000, 0x210, 0x210, 0x210, 0x210, 0x3f0, 0x210, 0x210, 0x210, 0x210, 0x000, 0x000}, // 'H'
273 {0x000, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x000, 0x000}, // 'I'
274 {0x000, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 0x480, 0x480, 0x300, 0x000, 0x000}, // 'J'
275 {0x000, 0x220, 0x240, 0x280, 0x280, 0x380, 0x280, 0x240, 0x240, 0x220, 0x000, 0x000}, // 'K'
276 {0x000, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x3e0, 0x000, 0x000}, // 'L'
277 {0x000, 0x208, 0x318, 0x318, 0x318, 0x2a8, 0x2a8, 0x2a8, 0x2a8, 0x248, 0x000, 0x000}, // 'M'
278 {0x000, 0x210, 0x310, 0x310, 0x290, 0x290, 0x250, 0x230, 0x230, 0x210, 0x000, 0x000}, // 'N'
279 {0x000, 0x0c0, 0x120, 0x210, 0x210, 0x210, 0x210, 0x210, 0x120, 0x0c0, 0x000, 0x000}, // 'O'
280 {0x000, 0x3c0, 0x220, 0x220, 0x220, 0x3c0, 0x200, 0x200, 0x200, 0x200, 0x000, 0x000}, // 'P'
281 {0x000, 0x0c0, 0x120, 0x210, 0x210, 0x210, 0x210, 0x210, 0x160, 0x0d0, 0x010, 0x000}, // 'Q'
282 {0x000, 0x3e0, 0x210, 0x210, 0x210, 0x3e0, 0x240, 0x220, 0x210, 0x208, 0x000, 0x000}, // 'R'
283 {0x000, 0x1c0, 0x220, 0x220, 0x200, 0x1c0, 0x020, 0x220, 0x220, 0x1c0, 0x000, 0x000}, // 'S'
284 {0x000, 0x3e0, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 0x080, 0x000, 0x000}, // 'T'
285 {0x000, 0x210, 0x210, 0x210, 0x210, 0x210, 0x210, 0x210, 0x120, 0x0c0, 0x000, 0x000}, // 'U'
286 {0x000, 0x410, 0x410, 0x220, 0x220, 0x220, 0x140, 0x140, 0x140, 0x080, 0x000, 0x000}, // 'V'
287 {0x000, 0x444, 0x4a4, 0x2a4, 0x2a8, 0x2a8, 0x2a8, 0x2a8, 0x2a8, 0x110, 0x000, 0x000}, // 'W'
288 {0x000, 0x410, 0x220, 0x140, 0x140, 0x080, 0x140, 0x140, 0x220, 0x410, 0x000, 0x000}, // 'X'
289 {0x000, 0x410, 0x220, 0x220, 0x140, 0x080, 0x080, 0x080, 0x080, 0x080, 0x000, 0x000}, // 'Y'
290 {0x000, 0x7e0, 0x020, 0x040, 0x080, 0x100, 0x100, 0x200, 0x400, 0x7e0, 0x000, 0x000}, // 'Z'
291 {0x000, 0x300, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200}, // '['
292 {0x000, 0x400, 0x400, 0x200, 0x200, 0x200, 0x200, 0x200, 0x100, 0x100, 0x000, 0x000}, // '\\'
293 {0x000, 0x600, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200}, // ']'
294 {0x000, 0x100, 0x280, 0x280, 0x280, 0x440, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '^'
295 {0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x7e0}, // '_'
296 {0x400, 0x200, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '`'
297 {0x000, 0x000, 0x000, 0x380, 0x440, 0x040, 0x3c0, 0x440, 0x440, 0x3c0, 0x000, 0x000}, // 'a'
298 {0x000, 0x400, 0x400, 0x580, 0x640, 0x440, 0x440, 0x440, 0x640, 0x580, 0x000, 0x000}, // 'b'
299 {0x000, 0x000, 0x000, 0x300, 0x480, 0x400, 0x400, 0x400, 0x480, 0x300, 0x000, 0x000}, // 'c'
300 {0x000, 0x040, 0x040, 0x340, 0x4c0, 0x440, 0x440, 0x440, 0x4c0, 0x340, 0x000, 0x000}, // 'd'
301 {0x000, 0x000, 0x000, 0x380, 0x440, 0x440, 0x7c0, 0x400, 0x440, 0x380, 0x000, 0x000}, // 'e'
302 {0x000, 0x600, 0x400, 0xe00, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x000, 0x000}, // 'f'
303 {0x000, 0x000, 0x000, 0x340, 0x4c0, 0x440, 0x440, 0x440, 0x4c0, 0x340, 0x040, 0x440}, // 'g'
304 {0x000, 0x400, 0x400, 0x580, 0x640, 0x440, 0x440, 0x440, 0x440, 0x440, 0x000, 0x000}, // 'h'
305 {0x000, 0x400, 0x000, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x000, 0x000}, // 'i'
306 {0x000, 0x400, 0x000, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400}, // 'j'
307 {0x000, 0x400, 0x400, 0x480, 0x500, 0x600, 0x500, 0x500, 0x480, 0x480, 0x000, 0x000}, // 'k'
308 {0x000, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x400, 0x000, 0x000}, // 'l'
309 {0x000, 0x000, 0x000, 0x520, 0x6d0, 0x490, 0x490, 0x490, 0x490, 0x490, 0x000, 0x000}, // 'm'
310 {0x000, 0x000, 0x000, 0x580, 0x640, 0x440, 0x440, 0x440, 0x440, 0x440, 0x000, 0x000}, // 'n'
311 {0x000, 0x000, 0x000, 0x380, 0x440, 0x440, 0x440, 0x440, 0x440, 0x380, 0x000, 0x000}, // 'o'
312 {0x000, 0x000, 0x000, 0x580, 0x640, 0x440, 0x440, 0x440, 0x640, 0x580, 0x400, 0x400}, // 'p'
313 {0x000, 0x000, 0x000, 0x340, 0x4c0, 0x440, 0x440, 0x440, 0x4c0, 0x340, 0x040, 0x040}, // 'q'
314 {0x000, 0x000, 0x000, 0x500, 0x600, 0x400, 0x400, 0x400, 0x400, 0x400, 0x000, 0x000}, // 'r'
315 {0x000, 0x000, 0x000, 0x300, 0x480, 0x400, 0x300, 0x080, 0x480, 0x300, 0x000, 0x000}, // 's'
316 {0x000, 0x400, 0x400, 0xe00, 0x400, 0x400, 0x400, 0x400, 0x400, 0x600, 0x000, 0x000}, // 't'
317 {0x000, 0x000, 0x000, 0x440, 0x440, 0x440, 0x440, 0x440, 0x4c0, 0x340, 0x000, 0x000}, // 'u'
318 {0x000, 0x000, 0x000, 0x440, 0x440, 0x280, 0x280, 0x280, 0x280, 0x100, 0x000, 0x000}, // 'v'
319 {0x000, 0x000, 0x000, 0x490, 0x490, 0x550, 0x550, 0x550, 0x550, 0x220, 0x000, 0x000}, // 'w'
320 {0x000, 0x000, 0x000, 0x440, 0x280, 0x280, 0x100, 0x280, 0x280, 0x440, 0x000, 0x000}, // 'x'
321 {0x000, 0x000, 0x000, 0x440, 0x440, 0x280, 0x280, 0x280, 0x100, 0x100, 0x100, 0x100}, // 'y'
322 {0x000, 0x000, 0x000, 0x780, 0x080, 0x100, 0x200, 0x200, 0x400, 0x780, 0x000, 0x000}, // 'z'
323 {0x000, 0x100, 0x200, 0x200, 0x200, 0x200, 0x400, 0x200, 0x200, 0x200, 0x200, 0x200}, // '{'
324 {0x000, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200, 0x200}, // '|'
325 {0x000, 0x400, 0x200, 0x200, 0x200, 0x200, 0x100, 0x200, 0x200, 0x200, 0x200, 0x200}, // '}'
326 {0x000, 0x000, 0x000, 0x000, 0x740, 0x580, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000}, // '~'
327 {0x000, 0x000, 0x700, 0x500, 0x500, 0x500, 0x500, 0x500, 0x500, 0x700, 0x000, 0x000}, // codepoint 0x7f
328 };
329 return kGlyphs;
330}
331
332inline const std::array<uint16_t, 24>* table16x24() {
333 static const std::array<uint16_t, 24> kGlyphs[95] = {
334 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // ' '
335 {0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '!'
336 {0x0000, 0x0000, 0x3300, 0x3300, 0x3300, 0x3300, 0x3300, 0x3300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '"'
337 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0630, 0x0630, 0x0630, 0x0c60, 0x0c60, 0x7ff8, 0x7ff8, 0x0c60, 0x1ce0, 0x18c0, 0x7ff8, 0x7ff8, 0x18c0, 0x18c0, 0x3180, 0x3180, 0x3180, 0x0000}, // '#'
338 {0x0000, 0x0100, 0x07c0, 0x1ff0, 0x3970, 0x3138, 0x3118, 0x3100, 0x1900, 0x1f80, 0x07e0, 0x0170, 0x0138, 0x3118, 0x3118, 0x3918, 0x1d30, 0x0ff0, 0x07c0, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000}, // '$'
339 {0x0000, 0x0000, 0x0000, 0x7018, 0xd830, 0x8830, 0x8860, 0x8860, 0x88c0, 0x88c0, 0xd980, 0x7180, 0x031c, 0x0336, 0x0622, 0x0622, 0x0c22, 0x0c22, 0x1822, 0x1836, 0x301c, 0x0000, 0x0000, 0x0000}, // '%'
340 {0x0000, 0x0780, 0x0fc0, 0x1ce0, 0x1860, 0x1860, 0x0cc0, 0x0f80, 0x0f00, 0x1f00, 0x398c, 0x70cc, 0x6078, 0x6038, 0x6038, 0x60fc, 0x3fce, 0x0f84, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '&'
341 {0x0000, 0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '\''
342 {0x0000, 0x0040, 0x00c0, 0x0180, 0x0300, 0x0300, 0x0600, 0x0600, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0600, 0x0600, 0x0300, 0x0300, 0x0180, 0x00c0, 0x0040, 0x0000}, // '('
343 {0x0000, 0x0400, 0x0600, 0x0300, 0x0180, 0x0180, 0x00c0, 0x00c0, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x00c0, 0x00c0, 0x0180, 0x0180, 0x0300, 0x0600, 0x0400, 0x0000}, // ')'
344 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x1b60, 0x1fe0, 0x0780, 0x0cc0, 0x1ce0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '*'
345 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x3ffc, 0x3ffc, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '+'
346 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0080, 0x0080, 0x0100, 0x0000, 0x0000}, // ','
347 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07e0, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '-'
348 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '.'
349 {0x0000, 0x0030, 0x0030, 0x0060, 0x0060, 0x0060, 0x00c0, 0x00c0, 0x00c0, 0x01c0, 0x0180, 0x0180, 0x0180, 0x0300, 0x0300, 0x0300, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '/'
350 {0x0000, 0x07c0, 0x0fe0, 0x1c70, 0x1830, 0x3018, 0x3018, 0x3018, 0x3018, 0x3018, 0x3018, 0x3018, 0x3018, 0x3018, 0x1830, 0x1c70, 0x0fe0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '0'
351 {0x0000, 0x0080, 0x0180, 0x0380, 0x0f80, 0x1980, 0x1180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '1'
352 {0x0000, 0x07c0, 0x1ff0, 0x1830, 0x3018, 0x3018, 0x0018, 0x0018, 0x0030, 0x0060, 0x00c0, 0x0180, 0x0300, 0x0600, 0x0c00, 0x1800, 0x3ff8, 0x3ff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '2'
353 {0x0000, 0x0780, 0x1fe0, 0x1870, 0x3030, 0x3030, 0x0030, 0x0060, 0x03c0, 0x03e0, 0x0030, 0x0018, 0x0018, 0x3018, 0x3018, 0x1830, 0x1fe0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '3'
354 {0x0000, 0x0030, 0x0070, 0x00f0, 0x00f0, 0x01b0, 0x0330, 0x0630, 0x0630, 0x0c30, 0x1830, 0x3030, 0x3ffc, 0x3ffc, 0x0030, 0x0030, 0x0030, 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '4'
355 {0x0000, 0x1ff0, 0x1ff0, 0x1800, 0x1800, 0x3000, 0x37c0, 0x3fe0, 0x3870, 0x0038, 0x0018, 0x0018, 0x0018, 0x3018, 0x3830, 0x1870, 0x1fe0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '5'
356 {0x0000, 0x03e0, 0x0ff0, 0x1c38, 0x1818, 0x1800, 0x3000, 0x33c0, 0x37f0, 0x3c70, 0x3838, 0x3018, 0x3018, 0x3018, 0x1838, 0x1c70, 0x0fe0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '6'
357 {0x0000, 0x3ff8, 0x3ff8, 0x0030, 0x0060, 0x0060, 0x00c0, 0x01c0, 0x0180, 0x0380, 0x0300, 0x0700, 0x0600, 0x0600, 0x0e00, 0x0c00, 0x0c00, 0x0c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '7'
358 {0x0000, 0x07c0, 0x0fe0, 0x1c70, 0x1830, 0x1830, 0x1830, 0x1c60, 0x0fe0, 0x0fe0, 0x1830, 0x3018, 0x3018, 0x3018, 0x3018, 0x1c30, 0x1ff0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '8'
359 {0x0000, 0x07c0, 0x0fe0, 0x1c70, 0x3830, 0x3018, 0x3018, 0x3018, 0x3838, 0x1c78, 0x1fd8, 0x0798, 0x0018, 0x0030, 0x0030, 0x3870, 0x1fe0, 0x0f80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '9'
360 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // ':'
361 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0180, 0x0180, 0x0080, 0x0080, 0x0100, 0x0000, 0x0000, 0x0000}, // ';'
362 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0038, 0x01f0, 0x07c0, 0x1f00, 0x1800, 0x1f00, 0x07c0, 0x01f0, 0x0038, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '<'
363 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1ff8, 0x0000, 0x0000, 0x0000, 0x1ff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '='
364 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x1c00, 0x0f80, 0x03e0, 0x00f8, 0x0018, 0x00f8, 0x03e0, 0x0f80, 0x1c00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '>'
365 {0x0000, 0x07c0, 0x1ff0, 0x1830, 0x3018, 0x3018, 0x0018, 0x0030, 0x0060, 0x00c0, 0x0180, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '?'
366 {0x0000, 0x0000, 0x07e0, 0x1818, 0x2004, 0x4394, 0x4452, 0x8822, 0x9022, 0x9022, 0x9022, 0x9044, 0x88c8, 0x4730, 0x4002, 0x2004, 0x1818, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '@'
367 {0x0000, 0x01c0, 0x01c0, 0x0360, 0x0360, 0x0360, 0x0630, 0x0630, 0x0c18, 0x0c18, 0x0c18, 0x1ffc, 0x1ffc, 0x380e, 0x3006, 0x3006, 0x6003, 0x6003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'A'
368 {0x0000, 0x3fc0, 0x3ff0, 0x3030, 0x3018, 0x3018, 0x3018, 0x3030, 0x3fe0, 0x3ff0, 0x3018, 0x300c, 0x300c, 0x300c, 0x300c, 0x3018, 0x3ff8, 0x3fe0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'B'
369 {0x0000, 0x03e0, 0x0ff8, 0x1c1c, 0x380c, 0x300e, 0x6006, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6006, 0x300e, 0x380c, 0x0ff8, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'C'
370 {0x0000, 0x7fc0, 0x7ff0, 0x6070, 0x6018, 0x6018, 0x600c, 0x600c, 0x600c, 0x600c, 0x600c, 0x600c, 0x600c, 0x6018, 0x6018, 0x6070, 0x7ff0, 0x7fc0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'D'
371 {0x0000, 0x3ffc, 0x3ffc, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3ff8, 0x3ff8, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3ffc, 0x3ffc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'E'
372 {0x0000, 0x1ffc, 0x1ffc, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1ff8, 0x1ff8, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'F'
373 {0x0000, 0x07f0, 0x1ffc, 0x3c1e, 0x7006, 0x6007, 0xe003, 0xc000, 0xc000, 0xc07f, 0xc07f, 0xc003, 0xe003, 0x6003, 0x7003, 0x3c0f, 0x1ffc, 0x07f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'G'
374 {0x0000, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x3ffc, 0x3ffc, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'H'
375 {0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'I'
376 {0x0000, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x1860, 0x1860, 0x1ce0, 0x0fc0, 0x0780, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'J'
377 {0x0000, 0x600c, 0x6018, 0x6030, 0x6060, 0x60c0, 0x6180, 0x6300, 0x6600, 0x6e00, 0x7b00, 0x7180, 0x60c0, 0x6060, 0x6030, 0x6018, 0x600c, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'K'
378 {0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1ff8, 0x1ff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'L'
379 {0x0000, 0x7007, 0x780f, 0x780f, 0x780f, 0x6c1b, 0x6c1b, 0x6c1b, 0x6c1b, 0x6633, 0x6633, 0x6633, 0x6363, 0x6363, 0x6363, 0x6363, 0x61c3, 0x61c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'M'
380 {0x0000, 0x300c, 0x380c, 0x3c0c, 0x3c0c, 0x360c, 0x360c, 0x330c, 0x330c, 0x318c, 0x30cc, 0x30cc, 0x306c, 0x306c, 0x303c, 0x303c, 0x301c, 0x300c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'N'
381 {0x0000, 0x07e0, 0x1ff8, 0x381c, 0x700e, 0x6006, 0xc003, 0xc003, 0xc003, 0xc003, 0xc003, 0xc003, 0xc003, 0x6006, 0x700e, 0x381c, 0x1ff8, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'O'
382 {0x0000, 0x3ff0, 0x3ff8, 0x301c, 0x300c, 0x300c, 0x300c, 0x300c, 0x3018, 0x3ff8, 0x3fe0, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'P'
383 {0x0000, 0x07e0, 0x1ff8, 0x381c, 0x700e, 0x6006, 0xc007, 0xc003, 0xc003, 0xc003, 0xc003, 0xc003, 0xe007, 0x60c6, 0x70fc, 0x383c, 0x1ffc, 0x07ef, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'Q'
384 {0x0000, 0x7ff0, 0x7ff8, 0x601c, 0x600c, 0x600c, 0x600c, 0x601c, 0x7ff8, 0x7fe0, 0x60c0, 0x6060, 0x6030, 0x6018, 0x6018, 0x600c, 0x600c, 0x6006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'R'
385 {0x0000, 0x07c0, 0x1ff0, 0x3830, 0x3018, 0x3018, 0x3000, 0x3800, 0x1fc0, 0x07f0, 0x0078, 0x001c, 0x600c, 0x600c, 0x700c, 0x3838, 0x1ff0, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'S'
386 {0x0000, 0x7ffe, 0x7ffe, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'T'
387 {0x0000, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x300c, 0x1818, 0x1ff8, 0x07e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'U'
388 {0x0000, 0xc006, 0x600c, 0x600c, 0x600c, 0x3018, 0x3018, 0x3018, 0x1830, 0x1830, 0x1c70, 0x0c60, 0x0c60, 0x0ee0, 0x06c0, 0x06c0, 0x0380, 0x0380, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'V'
389 {0x0000, 0xc006, 0xc386, 0xc386, 0xc386, 0x66cc, 0x66cc, 0x66cc, 0x66cc, 0x66cc, 0x66cc, 0x36d8, 0x36d8, 0x36d8, 0x3458, 0x3c78, 0x1c70, 0x1c70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'W'
390 {0x0000, 0xf007, 0x300e, 0x180c, 0x0c18, 0x0e30, 0x0670, 0x03e0, 0x01c0, 0x01c0, 0x03c0, 0x0760, 0x0e30, 0x0c38, 0x1818, 0x300c, 0x7006, 0xe007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'X'
391 {0x0000, 0xc003, 0x6006, 0x300c, 0x381c, 0x1c18, 0x0c30, 0x0660, 0x07e0, 0x03c0, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'Y'
392 {0x0000, 0x3ffe, 0x3ffe, 0x0006, 0x000c, 0x0018, 0x0030, 0x0060, 0x00c0, 0x0180, 0x0300, 0x0600, 0x0c00, 0x1800, 0x3000, 0x6000, 0x7ffe, 0x7ffe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'Z'
393 {0x0000, 0x07c0, 0x07c0, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x0600, 0x07c0, 0x07c0, 0x0000}, // '['
394 {0x0000, 0x0c00, 0x0c00, 0x0600, 0x0600, 0x0600, 0x0300, 0x0300, 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x00c0, 0x00c0, 0x00c0, 0x0060, 0x0060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '\\'
395 {0x0000, 0x07c0, 0x07c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x07c0, 0x07c0, 0x0000}, // ']'
396 {0x0000, 0x0000, 0x0380, 0x0380, 0x06c0, 0x06c0, 0x06c0, 0x0c60, 0x0c60, 0x1830, 0x1830, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '^'
397 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '_'
398 {0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '`'
399 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0fc0, 0x1fe0, 0x3830, 0x3030, 0x00f0, 0x0ff0, 0x1f30, 0x3030, 0x3030, 0x38f0, 0x1ff0, 0x0f18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'a'
400 {0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1bc0, 0x1ff0, 0x1c30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1c30, 0x1ff0, 0x1bc0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'b'
401 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03c0, 0x0fe0, 0x0c70, 0x1830, 0x1800, 0x1800, 0x1800, 0x1800, 0x1830, 0x0c70, 0x0fe0, 0x03c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'c'
402 {0x0000, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x03d8, 0x0ff8, 0x0c38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0c38, 0x0ff8, 0x03d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'd'
403 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03c0, 0x0ff0, 0x0c30, 0x1818, 0x1ff8, 0x1ff8, 0x1800, 0x1800, 0x1c18, 0x0c38, 0x0ff0, 0x03e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'e'
404 {0x0000, 0x01f0, 0x03f0, 0x0300, 0x0300, 0x0300, 0x0fe0, 0x0fe0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'f'
405 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07b0, 0x1ff0, 0x1870, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x3030, 0x1870, 0x1ff0, 0x07b0, 0x0030, 0x3030, 0x3860, 0x1fe0, 0x0f80, 0x0000}, // 'g'
406 {0x0000, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x1be0, 0x1ff0, 0x1c38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'h'
407 {0x0000, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'i'
408 {0x0000, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x1f00, 0x1e00, 0x0000}, // 'j'
409 {0x0000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3000, 0x3030, 0x3060, 0x30c0, 0x3180, 0x3300, 0x3600, 0x3f00, 0x3980, 0x31c0, 0x30c0, 0x3060, 0x3030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'k'
410 {0x0000, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'l'
411 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3c, 0xff7e, 0xe3c7, 0xc183, 0xc183, 0xc183, 0xc183, 0xc183, 0xc183, 0xc183, 0xc183, 0xc183, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'm'
412 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x19e0, 0x1ff0, 0x1c38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'n'
413 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03c0, 0x0ff0, 0x0c30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0c30, 0x0ff0, 0x03c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'o'
414 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1bc0, 0x1ff0, 0x1c30, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1c30, 0x1ff0, 0x1bc0, 0x1800, 0x1800, 0x1800, 0x1800, 0x1800, 0x0000}, // 'p'
415 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03d8, 0x0ff8, 0x0c38, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x0c38, 0x0ff8, 0x03d8, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0000}, // 'q'
416 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0de0, 0x0fc0, 0x0e00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'r'
417 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07c0, 0x0fc0, 0x1c70, 0x1830, 0x1c00, 0x0fc0, 0x03e0, 0x0030, 0x1830, 0x1c70, 0x0fe0, 0x07c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 's'
418 {0x0000, 0x0000, 0x0100, 0x0300, 0x0300, 0x0300, 0x0fe0, 0x0fe0, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x03e0, 0x01e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 't'
419 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1818, 0x1c38, 0x0ff8, 0x0798, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'u'
420 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3018, 0x1830, 0x1830, 0x1830, 0x0c60, 0x0c60, 0x0c60, 0x06c0, 0x06c0, 0x06c0, 0x0380, 0x0380, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'v'
421 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8382, 0x8382, 0xc386, 0xc6c6, 0xc6c6, 0xc6c6, 0x6c6c, 0x6c6c, 0x6c6c, 0x3838, 0x3838, 0x3838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'w'
422 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x381c, 0x1c38, 0x0c30, 0x0660, 0x06c0, 0x06c0, 0x06c0, 0x06c0, 0x0660, 0x0c30, 0x1c38, 0x381c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'x'
423 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x180c, 0x0c18, 0x0c18, 0x0e18, 0x0630, 0x0630, 0x0730, 0x0360, 0x0360, 0x01c0, 0x01c0, 0x01c0, 0x0180, 0x0180, 0x0380, 0x0f00, 0x0e00, 0x0000}, // 'y'
424 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3ff8, 0x3ff8, 0x0030, 0x0060, 0x00c0, 0x0180, 0x0300, 0x0600, 0x0c00, 0x1800, 0x3ff8, 0x3ff8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // 'z'
425 {0x0000, 0x00c0, 0x0180, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0600, 0x0600, 0x0c00, 0x0600, 0x0200, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0300, 0x0180, 0x00c0, 0x0000, 0x0000}, // '{'
426 {0x0000, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0000}, // '|'
427 {0x0000, 0x0600, 0x0300, 0x0380, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x00c0, 0x00c0, 0x0060, 0x00c0, 0x0080, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0300, 0x0600, 0x0000, 0x0000}, // '}'
428 {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f08, 0x1ff8, 0x10f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}, // '~'
429 };
430 return kGlyphs;
431}
432
433} // namespace asciifont_detail
434
435/**
436 * @brief 8x8 fixed-width bitmap font converted from the STM32-EVAL
437 * fonts.c ASCII8x8_Table.
438 */
439template <typename RGB_T = RGB565>
440class Font8x8 : public BitmapFont<8, 8, uint8_t, RGB_T> {
441 public:
443 : BitmapFont<8, 8, uint8_t, RGB_T>(
445};
446
447/**
448 * @brief 8x12 fixed-width bitmap font converted from the STM32-EVAL
449 * fonts.c ASCII8x12_Table.
450 */
451template <typename RGB_T = RGB565>
452class Font8x12 : public BitmapFont<8, 12, uint8_t, RGB_T> {
453 public:
455 : BitmapFont<8, 12, uint8_t, RGB_T>(
457};
458
459/**
460 * @brief 12x12 fixed-width bitmap font converted from the STM32-EVAL
461 * fonts.c ASCII12x12_Table.
462 */
463template <typename RGB_T = RGB565>
464class Font12x12 : public BitmapFont<12, 12, uint16_t, RGB_T> {
465 public:
467 : BitmapFont<12, 12, uint16_t, RGB_T>(
469};
470
471/**
472 * @brief 16x24 fixed-width bitmap font converted from the STM32-EVAL
473 * fonts.c ASCII16x24_Table.
474 */
475template <typename RGB_T = RGB565>
476class Font16x24 : public BitmapFont<16, 24, uint16_t, RGB_T> {
477 public:
479 : BitmapFont<16, 24, uint16_t, RGB_T>(
481};
482
483} // namespace tinygpu
Fixed-size bitmap font backed by a caller-supplied glyph table.
Definition: BitmapFont.h:30
12x12 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII12x12_Table.
Definition: AsciiFonts.h:464
Font12x12()
Definition: AsciiFonts.h:466
16x24 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII16x24_Table.
Definition: AsciiFonts.h:476
Font16x24()
Definition: AsciiFonts.h:478
8x12 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII8x12_Table.
Definition: AsciiFonts.h:452
Font8x12()
Definition: AsciiFonts.h:454
8x8 fixed-width bitmap font converted from the STM32-EVAL fonts.c ASCII8x8_Table.
Definition: AsciiFonts.h:440
Font8x8()
Definition: AsciiFonts.h:442
RGB color stored in 16-bit RGB565 format, byte-swapped from the conventional bit layout.
Definition: RGB565.h:24
Raw glyph data for the fonts converted from STM32-EVAL fonts.c. Not part of the public API; use Font8...
Definition: AsciiFonts.h:23
const std::array< uint8_t, 8 > * table8x8()
Definition: AsciiFonts.h:26
const std::array< uint16_t, 12 > * table12x12()
Definition: AsciiFonts.h:230
const std::array< uint16_t, 24 > * table16x24()
Definition: AsciiFonts.h:332
const std::array< uint8_t, 12 > * table8x12()
Definition: AsciiFonts.h:128
Definition: DSIBusESP32.h:19