Skip to main content

max / quasi-type

6.9 KB · 187 lines History Blame Raw
1 // Generated by scripts/derive-cell-table.py from Unicode character names.
2 // Do not edit by hand: re-run the script instead. See its header for why
3 // the table is derived rather than authored.
4 //
5 // 121 stems, 4 arcs, 3 diagonals, 29 fills, 3 shades.
6
7 use super::Arm::{D, H, L, N};
8 use super::{Dash, Diagonal, Shade};
9
10 /// Arms in the order left, right, up, down.
11 pub(super) const STEMS: [(u32, [super::Arm; 4], Dash); 121] = [
12 (0x2500, [L, L, N, N], Dash::None),
13 (0x2501, [H, H, N, N], Dash::None),
14 (0x2502, [N, N, L, L], Dash::None),
15 (0x2503, [N, N, H, H], Dash::None),
16 (0x2504, [L, L, N, N], Dash::Triple),
17 (0x2505, [H, H, N, N], Dash::Triple),
18 (0x2506, [N, N, L, L], Dash::Triple),
19 (0x2507, [N, N, H, H], Dash::Triple),
20 (0x2508, [L, L, N, N], Dash::Quadruple),
21 (0x2509, [H, H, N, N], Dash::Quadruple),
22 (0x250A, [N, N, L, L], Dash::Quadruple),
23 (0x250B, [N, N, H, H], Dash::Quadruple),
24 (0x250C, [N, L, N, L], Dash::None),
25 (0x250D, [N, H, N, L], Dash::None),
26 (0x250E, [N, L, N, H], Dash::None),
27 (0x250F, [N, H, N, H], Dash::None),
28 (0x2510, [L, N, N, L], Dash::None),
29 (0x2511, [H, N, N, L], Dash::None),
30 (0x2512, [L, N, N, H], Dash::None),
31 (0x2513, [H, N, N, H], Dash::None),
32 (0x2514, [N, L, L, N], Dash::None),
33 (0x2515, [N, H, L, N], Dash::None),
34 (0x2516, [N, L, H, N], Dash::None),
35 (0x2517, [N, H, H, N], Dash::None),
36 (0x2518, [L, N, L, N], Dash::None),
37 (0x2519, [H, N, L, N], Dash::None),
38 (0x251A, [L, N, H, N], Dash::None),
39 (0x251B, [H, N, H, N], Dash::None),
40 (0x251C, [N, L, L, L], Dash::None),
41 (0x251D, [N, H, L, L], Dash::None),
42 (0x251E, [N, L, H, L], Dash::None),
43 (0x251F, [N, L, L, H], Dash::None),
44 (0x2520, [N, L, H, H], Dash::None),
45 (0x2521, [N, H, H, L], Dash::None),
46 (0x2522, [N, H, L, H], Dash::None),
47 (0x2523, [N, H, H, H], Dash::None),
48 (0x2524, [L, N, L, L], Dash::None),
49 (0x2525, [H, N, L, L], Dash::None),
50 (0x2526, [L, N, H, L], Dash::None),
51 (0x2527, [L, N, L, H], Dash::None),
52 (0x2528, [L, N, H, H], Dash::None),
53 (0x2529, [H, N, H, L], Dash::None),
54 (0x252A, [H, N, L, H], Dash::None),
55 (0x252B, [H, N, H, H], Dash::None),
56 (0x252C, [L, L, N, L], Dash::None),
57 (0x252D, [H, L, N, L], Dash::None),
58 (0x252E, [L, H, N, L], Dash::None),
59 (0x252F, [H, H, N, L], Dash::None),
60 (0x2530, [L, L, N, H], Dash::None),
61 (0x2531, [H, L, N, H], Dash::None),
62 (0x2532, [L, H, N, H], Dash::None),
63 (0x2533, [H, H, N, H], Dash::None),
64 (0x2534, [L, L, L, N], Dash::None),
65 (0x2535, [H, L, L, N], Dash::None),
66 (0x2536, [L, H, L, N], Dash::None),
67 (0x2537, [H, H, L, N], Dash::None),
68 (0x2538, [L, L, H, N], Dash::None),
69 (0x2539, [H, L, H, N], Dash::None),
70 (0x253A, [L, H, H, N], Dash::None),
71 (0x253B, [H, H, H, N], Dash::None),
72 (0x253C, [L, L, L, L], Dash::None),
73 (0x253D, [H, L, L, L], Dash::None),
74 (0x253E, [L, H, L, L], Dash::None),
75 (0x253F, [H, H, L, L], Dash::None),
76 (0x2540, [L, L, H, L], Dash::None),
77 (0x2541, [L, L, L, H], Dash::None),
78 (0x2542, [L, L, H, H], Dash::None),
79 (0x2543, [H, L, H, L], Dash::None),
80 (0x2544, [L, H, H, L], Dash::None),
81 (0x2545, [H, L, L, H], Dash::None),
82 (0x2546, [L, H, L, H], Dash::None),
83 (0x2547, [H, H, H, L], Dash::None),
84 (0x2548, [H, H, L, H], Dash::None),
85 (0x2549, [H, L, H, H], Dash::None),
86 (0x254A, [L, H, H, H], Dash::None),
87 (0x254B, [H, H, H, H], Dash::None),
88 (0x254C, [L, L, N, N], Dash::Double),
89 (0x254D, [H, H, N, N], Dash::Double),
90 (0x254E, [N, N, L, L], Dash::Double),
91 (0x254F, [N, N, H, H], Dash::Double),
92 (0x2550, [D, D, N, N], Dash::None),
93 (0x2551, [N, N, D, D], Dash::None),
94 (0x2552, [N, D, N, L], Dash::None),
95 (0x2553, [N, L, N, D], Dash::None),
96 (0x2554, [N, D, N, D], Dash::None),
97 (0x2555, [D, N, N, L], Dash::None),
98 (0x2556, [L, N, N, D], Dash::None),
99 (0x2557, [D, N, N, D], Dash::None),
100 (0x2558, [N, D, L, N], Dash::None),
101 (0x2559, [N, L, D, N], Dash::None),
102 (0x255A, [N, D, D, N], Dash::None),
103 (0x255B, [D, N, L, N], Dash::None),
104 (0x255C, [L, N, D, N], Dash::None),
105 (0x255D, [D, N, D, N], Dash::None),
106 (0x255E, [N, D, L, L], Dash::None),
107 (0x255F, [N, L, D, D], Dash::None),
108 (0x2560, [N, D, D, D], Dash::None),
109 (0x2561, [D, N, L, L], Dash::None),
110 (0x2562, [L, N, D, D], Dash::None),
111 (0x2563, [D, N, D, D], Dash::None),
112 (0x2564, [D, D, N, L], Dash::None),
113 (0x2565, [L, L, N, D], Dash::None),
114 (0x2566, [D, D, N, D], Dash::None),
115 (0x2567, [D, D, L, N], Dash::None),
116 (0x2568, [L, L, D, N], Dash::None),
117 (0x2569, [D, D, D, N], Dash::None),
118 (0x256A, [D, D, L, L], Dash::None),
119 (0x256B, [L, L, D, D], Dash::None),
120 (0x256C, [D, D, D, D], Dash::None),
121 (0x2574, [L, N, N, N], Dash::None),
122 (0x2575, [N, N, L, N], Dash::None),
123 (0x2576, [N, L, N, N], Dash::None),
124 (0x2577, [N, N, N, L], Dash::None),
125 (0x2578, [H, N, N, N], Dash::None),
126 (0x2579, [N, N, H, N], Dash::None),
127 (0x257A, [N, H, N, N], Dash::None),
128 (0x257B, [N, N, N, H], Dash::None),
129 (0x257C, [L, H, N, N], Dash::None),
130 (0x257D, [N, N, L, H], Dash::None),
131 (0x257E, [H, L, N, N], Dash::None),
132 (0x257F, [N, N, H, L], Dash::None),
133 ];
134
135 /// The rounded corners. Same arms as a stem, drawn as a quarter turn.
136 pub(super) const ARCS: [(u32, [super::Arm; 4]); 4] = [
137 (0x256D, [N, L, N, L]),
138 (0x256E, [L, N, N, L]),
139 (0x256F, [L, N, L, N]),
140 (0x2570, [N, L, L, N]),
141 ];
142
143 pub(super) const DIAGONALS: [(u32, Diagonal); 3] = [
144 (0x2571, Diagonal::Rising),
145 (0x2572, Diagonal::Falling),
146 (0x2573, Diagonal::Cross),
147 ];
148
149 /// Filled rectangles in eighths of the cell: x0, y0, x1, y1, with y up.
150 pub(super) const FILLS: [(u32, &[(u8, u8, u8, u8)]); 29] = [
151 (0x2580, &[(0, 4, 8, 8)]),
152 (0x2581, &[(0, 0, 8, 1)]),
153 (0x2582, &[(0, 0, 8, 2)]),
154 (0x2583, &[(0, 0, 8, 3)]),
155 (0x2584, &[(0, 0, 8, 4)]),
156 (0x2585, &[(0, 0, 8, 5)]),
157 (0x2586, &[(0, 0, 8, 6)]),
158 (0x2587, &[(0, 0, 8, 7)]),
159 (0x2588, &[(0, 0, 8, 8)]),
160 (0x2589, &[(0, 0, 7, 8)]),
161 (0x258A, &[(0, 0, 6, 8)]),
162 (0x258B, &[(0, 0, 5, 8)]),
163 (0x258C, &[(0, 0, 4, 8)]),
164 (0x258D, &[(0, 0, 3, 8)]),
165 (0x258E, &[(0, 0, 2, 8)]),
166 (0x258F, &[(0, 0, 1, 8)]),
167 (0x2590, &[(4, 0, 8, 8)]),
168 (0x2594, &[(0, 7, 8, 8)]),
169 (0x2595, &[(7, 0, 8, 8)]),
170 (0x2596, &[(0, 0, 4, 4)]),
171 (0x2597, &[(4, 0, 8, 4)]),
172 (0x2598, &[(0, 4, 4, 8)]),
173 (0x2599, &[(0, 4, 4, 8), (0, 0, 4, 4), (4, 0, 8, 4)]),
174 (0x259A, &[(0, 4, 4, 8), (4, 0, 8, 4)]),
175 (0x259B, &[(0, 4, 4, 8), (4, 4, 8, 8), (0, 0, 4, 4)]),
176 (0x259C, &[(0, 4, 4, 8), (4, 4, 8, 8), (4, 0, 8, 4)]),
177 (0x259D, &[(4, 4, 8, 8)]),
178 (0x259E, &[(4, 4, 8, 8), (0, 0, 4, 4)]),
179 (0x259F, &[(4, 4, 8, 8), (0, 0, 4, 4), (4, 0, 8, 4)]),
180 ];
181
182 pub(super) const SHADES: [(u32, Shade); 3] = [
183 (0x2591, Shade::Light),
184 (0x2592, Shade::Medium),
185 (0x2593, Shade::Dark),
186 ];
187