1use crate::Surface;
2
3pub trait Premium {
5 fn premium(&mut self, x: i32, y: i32, text: &str) -> i32;
8}
9
10impl<S: Surface> Premium for S {
11 fn premium(&mut self, x: i32, y: i32, text: &str) -> i32 {
12 let mut w = 0;
13 for (i, c) in text.chars().enumerate() {
14 if i > 0 {
15 w += 2;
16 }
17 w += glyph(self, x + w, y, c);
18 }
19 w
20 }
21}
22
23fn glyph<S: Surface>(surface: &mut S, x: i32, y: i32, c: char) -> i32 {
24 let (c, w, o) = lookup(c);
25 let h = c.len() as i32;
26 for (i, l) in c.iter().enumerate() {
27 for j in 0..16 {
28 if l & (1 << (15 - j)) != 0 {
29 surface.pixel(x + j - 2, y - h + o + i as i32);
30 }
31 }
32 }
33 w
34}
35
36fn lookup(c: char) -> (&'static [u16], i32, i32) {
37 match c {
38 'A' => (
39 &[
40 0b0001111000000000,
41 0b0011001100000000,
42 0b0011001100000000,
43 0b0011001100000000,
44 0b0011111100000000,
45 0b0011001100000000,
46 0b0011001100000000,
47 0b0011001100000000,
48 0b0011001100000000,
49 ],
50 6,
51 0,
52 ),
53 'B' => (
54 &[
55 0b0011111000000000,
56 0b0011001100000000,
57 0b0011001100000000,
58 0b0011001100000000,
59 0b0011111000000000,
60 0b0011001100000000,
61 0b0011001100000000,
62 0b0011001100000000,
63 0b0011111000000000,
64 ],
65 6,
66 0,
67 ),
68 'C' => (
69 &[
70 0b0001111000000000,
71 0b0011000100000000,
72 0b0011000000000000,
73 0b0011000000000000,
74 0b0011000000000000,
75 0b0011000000000000,
76 0b0011000000000000,
77 0b0011000100000000,
78 0b0001111000000000,
79 ],
80 6,
81 0,
82 ),
83 'D' => (
84 &[
85 0b0011111000000000,
86 0b0011001100000000,
87 0b0011001100000000,
88 0b0011001100000000,
89 0b0011001100000000,
90 0b0011001100000000,
91 0b0011001100000000,
92 0b0011001100000000,
93 0b0011111000000000,
94 ],
95 6,
96 0,
97 ),
98 'E' => (
99 &[
100 0b0011111100000000,
101 0b0011000000000000,
102 0b0011000000000000,
103 0b0011000000000000,
104 0b0011111000000000,
105 0b0011000000000000,
106 0b0011000000000000,
107 0b0011000000000000,
108 0b0011111100000000,
109 ],
110 6,
111 0,
112 ),
113 'F' => (
114 &[
115 0b0011111100000000,
116 0b0011000000000000,
117 0b0011000000000000,
118 0b0011000000000000,
119 0b0011111000000000,
120 0b0011000000000000,
121 0b0011000000000000,
122 0b0011000000000000,
123 0b0011000000000000,
124 ],
125 6,
126 0,
127 ),
128 'G' => (
129 &[
130 0b0001111000000000,
131 0b0011000100000000,
132 0b0011000000000000,
133 0b0011000000000000,
134 0b0011000000000000,
135 0b0011011100000000,
136 0b0011001100000000,
137 0b0011001100000000,
138 0b0001111000000000,
139 ],
140 6,
141 0,
142 ),
143 'H' => (
144 &[
145 0b0011001100000000,
146 0b0011001100000000,
147 0b0011001100000000,
148 0b0011001100000000,
149 0b0011111100000000,
150 0b0011001100000000,
151 0b0011001100000000,
152 0b0011001100000000,
153 0b0011001100000000,
154 ],
155 6,
156 0,
157 ),
158 'I' => (
159 &[
160 0b0011000000000000,
161 0b0011000000000000,
162 0b0011000000000000,
163 0b0011000000000000,
164 0b0011000000000000,
165 0b0011000000000000,
166 0b0011000000000000,
167 0b0011000000000000,
168 0b0011000000000000,
169 ],
170 2,
171 0,
172 ),
173 'J' => (
174 &[
175 0b0000001100000000,
176 0b0000001100000000,
177 0b0000001100000000,
178 0b0000001100000000,
179 0b0000001100000000,
180 0b0000001100000000,
181 0b0000001100000000,
182 0b0010001100000000,
183 0b0001111000000000,
184 ],
185 6,
186 0,
187 ),
188 'K' => (
189 &[
190 0b0011000110000000,
191 0b0011001100000000,
192 0b0011011000000000,
193 0b0011110000000000,
194 0b0011100000000000,
195 0b0011110000000000,
196 0b0011011000000000,
197 0b0011001100000000,
198 0b0011000110000000,
199 ],
200 7,
201 0,
202 ),
203 'L' => (
204 &[
205 0b0011000000000000,
206 0b0011000000000000,
207 0b0011000000000000,
208 0b0011000000000000,
209 0b0011000000000000,
210 0b0011000000000000,
211 0b0011000000000000,
212 0b0011000000000000,
213 0b0011111100000000,
214 ],
215 6,
216 0,
217 ),
218 'M' => (
219 &[
220 0b0011000001100000,
221 0b0011100011100000,
222 0b0011110111100000,
223 0b0011111111100000,
224 0b0011011101100000,
225 0b0011001001100000,
226 0b0011000001100000,
227 0b0011000001100000,
228 0b0011000001100000,
229 ],
230 9,
231 0,
232 ),
233 'N' => (
234 &[
235 0b0011000110000000,
236 0b0011000110000000,
237 0b0011100110000000,
238 0b0011110110000000,
239 0b0011111110000000,
240 0b0011011110000000,
241 0b0011001110000000,
242 0b0011000110000000,
243 0b0011000110000000,
244 ],
245 7,
246 0,
247 ),
248 'O' => (
249 &[
250 0b0001111000000000,
251 0b0011001100000000,
252 0b0011001100000000,
253 0b0011001100000000,
254 0b0011001100000000,
255 0b0011001100000000,
256 0b0011001100000000,
257 0b0011001100000000,
258 0b0001111000000000,
259 ],
260 6,
261 0,
262 ),
263 'P' => (
264 &[
265 0b0011111000000000,
266 0b0011001100000000,
267 0b0011001100000000,
268 0b0011001100000000,
269 0b0011001100000000,
270 0b0011111000000000,
271 0b0011000000000000,
272 0b0011000000000000,
273 0b0011000000000000,
274 ],
275 6,
276 0,
277 ),
278 'Q' => (
279 &[
280 0b0001111000000000,
281 0b0011001100000000,
282 0b0011001100000000,
283 0b0011001100000000,
284 0b0011001100000000,
285 0b0011001100000000,
286 0b0011001100000000,
287 0b0011001100000000,
288 0b0001111000000000,
289 0b0000001100000000,
290 ],
291 6,
292 1,
293 ),
294 'R' => (
295 &[
296 0b0011111000000000,
297 0b0011001100000000,
298 0b0011001100000000,
299 0b0011001100000000,
300 0b0011111000000000,
301 0b0011001100000000,
302 0b0011001100000000,
303 0b0011001100000000,
304 0b0011001100000000,
305 ],
306 6,
307 0,
308 ),
309 'S' => (
310 &[
311 0b0001111000000000,
312 0b0011000100000000,
313 0b0011000000000000,
314 0b0011000000000000,
315 0b0001111000000000,
316 0b0000001100000000,
317 0b0000001100000000,
318 0b0010001100000000,
319 0b0001111000000000,
320 ],
321 6,
322 0,
323 ),
324 'T' => (
325 &[
326 0b0111111000000000,
327 0b0001100000000000,
328 0b0001100000000000,
329 0b0001100000000000,
330 0b0001100000000000,
331 0b0001100000000000,
332 0b0001100000000000,
333 0b0001100000000000,
334 0b0001100000000000,
335 ],
336 4,
337 0,
338 ),
339 'U' => (
340 &[
341 0b0011001100000000,
342 0b0011001100000000,
343 0b0011001100000000,
344 0b0011001100000000,
345 0b0011001100000000,
346 0b0011001100000000,
347 0b0011001100000000,
348 0b0011001100000000,
349 0b0001111000000000,
350 ],
351 6,
352 0,
353 ),
354 'V' => (
355 &[
356 0b0011001100000000,
357 0b0011001100000000,
358 0b0011001100000000,
359 0b0011001100000000,
360 0b0011001100000000,
361 0b0011001100000000,
362 0b0011001100000000,
363 0b0001111000000000,
364 0b0000110000000000,
365 ],
366 6,
367 0,
368 ),
369 'W' => (
370 &[
371 0b0011001100110000,
372 0b0011001100110000,
373 0b0011001100110000,
374 0b0011001100110000,
375 0b0011001100110000,
376 0b0011001100110000,
377 0b0011001100110000,
378 0b0001111111100000,
379 0b0000110011000000,
380 ],
381 10,
382 0,
383 ),
384 'X' => (
385 &[
386 0b0011001100000000,
387 0b0011001100000000,
388 0b0011001100000000,
389 0b0011001100000000,
390 0b0001111000000000,
391 0b0011001100000000,
392 0b0011001100000000,
393 0b0011001100000000,
394 0b0011001100000000,
395 ],
396 6,
397 0,
398 ),
399 'Y' => (
400 &[
401 0b0011001100000000,
402 0b0011001100000000,
403 0b0011001100000000,
404 0b0011001100000000,
405 0b0001111000000000,
406 0b0000110000000000,
407 0b0000110000000000,
408 0b0000110000000000,
409 0b0000110000000000,
410 ],
411 6,
412 0,
413 ),
414 'Z' => (
415 &[
416 0b0011111100000000,
417 0b0000001100000000,
418 0b0000001100000000,
419 0b0000011000000000,
420 0b0000110000000000,
421 0b0001100000000000,
422 0b0011000000000000,
423 0b0011000000000000,
424 0b0011111100000000,
425 ],
426 6,
427 0,
428 ),
429 'a' => (
430 &[
431 0b0001111000000000,
432 0b0000001100000000,
433 0b0001111100000000,
434 0b0011001100000000,
435 0b0011001100000000,
436 0b0011001100000000,
437 0b0001111100000000,
438 ],
439 6,
440 0,
441 ),
442 'b' => (
443 &[
444 0b0011000000000000,
445 0b0011000000000000,
446 0b0011111000000000,
447 0b0011001100000000,
448 0b0011001100000000,
449 0b0011001100000000,
450 0b0011001100000000,
451 0b0011001100000000,
452 0b0011111000000000,
453 ],
454 6,
455 0,
456 ),
457 'c' => (
458 &[
459 0b0001111000000000,
460 0b0011000100000000,
461 0b0011000000000000,
462 0b0011000000000000,
463 0b0011000000000000,
464 0b0011000100000000,
465 0b0001111000000000,
466 ],
467 6,
468 0,
469 ),
470 'd' => (
471 &[
472 0b0000001100000000,
473 0b0000001100000000,
474 0b0001111100000000,
475 0b0011001100000000,
476 0b0011001100000000,
477 0b0011001100000000,
478 0b0011001100000000,
479 0b0011001100000000,
480 0b0001111100000000,
481 ],
482 6,
483 0,
484 ),
485 'e' => (
486 &[
487 0b0001111000000000,
488 0b0011001100000000,
489 0b0011001100000000,
490 0b0011111100000000,
491 0b0011000000000000,
492 0b0011000100000000,
493 0b0001111000000000,
494 ],
495 6,
496 0,
497 ),
498 'f' => (
499 &[
500 0b0001100000000000,
501 0b0011000000000000,
502 0b0111100000000000,
503 0b0011000000000000,
504 0b0011000000000000,
505 0b0011000000000000,
506 0b0011000000000000,
507 0b0011000000000000,
508 0b0011000000000000,
509 ],
510 3,
511 0,
512 ),
513 'g' => (
514 &[
515 0b0001111100000000,
516 0b0011001100000000,
517 0b0011001100000000,
518 0b0011001100000000,
519 0b0011001100000000,
520 0b0011001100000000,
521 0b0001111100000000,
522 0b0000001100000000,
523 0b0010001100000000,
524 0b0001111000000000,
525 ],
526 6,
527 3,
528 ),
529 'h' => (
530 &[
531 0b0011000000000000,
532 0b0011000000000000,
533 0b0011111000000000,
534 0b0011001100000000,
535 0b0011001100000000,
536 0b0011001100000000,
537 0b0011001100000000,
538 0b0011001100000000,
539 0b0011001100000000,
540 ],
541 6,
542 0,
543 ),
544 'i' => (
545 &[
546 0b0011000000000000,
547 0b0000000000000000,
548 0b0011000000000000,
549 0b0011000000000000,
550 0b0011000000000000,
551 0b0011000000000000,
552 0b0011000000000000,
553 0b0011000000000000,
554 0b0011000000000000,
555 ],
556 2,
557 0,
558 ),
559 'j' => (
560 &[
561 0b0011000000000000,
562 0b0000000000000000,
563 0b0011000000000000,
564 0b0011000000000000,
565 0b0011000000000000,
566 0b0011000000000000,
567 0b0011000000000000,
568 0b0011000000000000,
569 0b0011000000000000,
570 0b0011000000000000,
571 0b0110000000000000,
572 ],
573 2,
574 2,
575 ),
576 'k' => (
577 &[
578 0b0011000000000000,
579 0b0011000000000000,
580 0b0011001100000000,
581 0b0011011000000000,
582 0b0011110000000000,
583 0b0011100000000000,
584 0b0011110000000000,
585 0b0011011000000000,
586 0b0011001100000000,
587 ],
588 6,
589 0,
590 ),
591 'l' => (
592 &[
593 0b0011000000000000,
594 0b0011000000000000,
595 0b0011000000000000,
596 0b0011000000000000,
597 0b0011000000000000,
598 0b0011000000000000,
599 0b0011000000000000,
600 0b0011000000000000,
601 0b0011000000000000,
602 ],
603 2,
604 0,
605 ),
606 'm' => (
607 &[
608 0b0011111111100000,
609 0b0011001100110000,
610 0b0011001100110000,
611 0b0011001100110000,
612 0b0011001100110000,
613 0b0011001100110000,
614 0b0011001100110000,
615 ],
616 10,
617 0,
618 ),
619 'n' => (
620 &[
621 0b0011111000000000,
622 0b0011001100000000,
623 0b0011001100000000,
624 0b0011001100000000,
625 0b0011001100000000,
626 0b0011001100000000,
627 0b0011001100000000,
628 ],
629 6,
630 0,
631 ),
632 'o' => (
633 &[
634 0b0001111000000000,
635 0b0011001100000000,
636 0b0011001100000000,
637 0b0011001100000000,
638 0b0011001100000000,
639 0b0011001100000000,
640 0b0001111000000000,
641 ],
642 6,
643 0,
644 ),
645 'p' => (
646 &[
647 0b0011111000000000,
648 0b0011001100000000,
649 0b0011001100000000,
650 0b0011001100000000,
651 0b0011001100000000,
652 0b0011001100000000,
653 0b0011111000000000,
654 0b0011000000000000,
655 0b0011000000000000,
656 ],
657 6,
658 2,
659 ),
660 'q' => (
661 &[
662 0b0001111100000000,
663 0b0011001100000000,
664 0b0011001100000000,
665 0b0011001100000000,
666 0b0011001100000000,
667 0b0011001100000000,
668 0b0001111100000000,
669 0b0000001100000000,
670 0b0000001100000000,
671 ],
672 6,
673 2,
674 ),
675 'r' => (
676 &[
677 0b0011011000000000,
678 0b0011111000000000,
679 0b0011000000000000,
680 0b0011000000000000,
681 0b0011000000000000,
682 0b0011000000000000,
683 0b0011000000000000,
684 ],
685 5,
686 0,
687 ),
688 's' => (
689 &[
690 0b0001111000000000,
691 0b0011000100000000,
692 0b0011000000000000,
693 0b0001111000000000,
694 0b0000001100000000,
695 0b0010001100000000,
696 0b0001111000000000,
697 ],
698 6,
699 0,
700 ),
701 't' => (
702 &[
703 0b0011000000000000,
704 0b0011000000000000,
705 0b0111100000000000,
706 0b0011000000000000,
707 0b0011000000000000,
708 0b0011000000000000,
709 0b0011000000000000,
710 0b0011000000000000,
711 0b0001100000000000,
712 ],
713 3,
714 0,
715 ),
716 'u' => (
717 &[
718 0b0011001100000000,
719 0b0011001100000000,
720 0b0011001100000000,
721 0b0011001100000000,
722 0b0011001100000000,
723 0b0011001100000000,
724 0b0001111000000000,
725 ],
726 6,
727 0,
728 ),
729 'v' => (
730 &[
731 0b0011001100000000,
732 0b0011001100000000,
733 0b0011001100000000,
734 0b0011001100000000,
735 0b0011001100000000,
736 0b0001111000000000,
737 0b0000110000000000,
738 ],
739 6,
740 0,
741 ),
742 'w' => (
743 &[
744 0b0011001100110000,
745 0b0011001100110000,
746 0b0011001100110000,
747 0b0011001100110000,
748 0b0011001100110000,
749 0b0001111111100000,
750 0b0000110011000000,
751 ],
752 10,
753 0,
754 ),
755 'x' => (
756 &[
757 0b0011001100000000,
758 0b0011001100000000,
759 0b0011001100000000,
760 0b0001111000000000,
761 0b0011001100000000,
762 0b0011001100000000,
763 0b0011001100000000,
764 ],
765 6,
766 0,
767 ),
768 'y' => (
769 &[
770 0b0011001100000000,
771 0b0011001100000000,
772 0b0011001100000000,
773 0b0011001100000000,
774 0b0011001100000000,
775 0b0011001100000000,
776 0b0001111100000000,
777 0b0000001100000000,
778 0b0010001100000000,
779 0b0001111000000000,
780 ],
781 6,
782 3,
783 ),
784 'z' => (
785 &[
786 0b0011111100000000,
787 0b0000001100000000,
788 0b0000011000000000,
789 0b0000110000000000,
790 0b0001100000000000,
791 0b0011000000000000,
792 0b0011111100000000,
793 ],
794 6,
795 0,
796 ),
797 '0' => (
798 &[
799 0b0001111000000000,
800 0b0011001100000000,
801 0b0011001100000000,
802 0b0011001100000000,
803 0b0011001100000000,
804 0b0011001100000000,
805 0b0011001100000000,
806 0b0011001100000000,
807 0b0001111000000000,
808 ],
809 6,
810 0,
811 ),
812 '1' => (
813 &[
814 0b0001100000000000,
815 0b0011100000000000,
816 0b0001100000000000,
817 0b0001100000000000,
818 0b0001100000000000,
819 0b0001100000000000,
820 0b0001100000000000,
821 0b0001100000000000,
822 0b0001100000000000,
823 ],
824 3,
825 0,
826 ),
827 '2' => (
828 &[
829 0b0001111000000000,
830 0b0010001100000000,
831 0b0000001100000000,
832 0b0000001100000000,
833 0b0000011000000000,
834 0b0000110000000000,
835 0b0001100000000000,
836 0b0011000000000000,
837 0b0011111100000000,
838 ],
839 6,
840 0,
841 ),
842 '3' => (
843 &[
844 0b0011111100000000,
845 0b0000011000000000,
846 0b0000110000000000,
847 0b0001111000000000,
848 0b0000001100000000,
849 0b0000001100000000,
850 0b0000001100000000,
851 0b0010001100000000,
852 0b0001111000000000,
853 ],
854 6,
855 0,
856 ),
857 '4' => (
858 &[
859 0b0000001100000000,
860 0b0000011100000000,
861 0b0000101100000000,
862 0b0001001100000000,
863 0b0010001100000000,
864 0b0011111110000000,
865 0b0000001100000000,
866 0b0000001100000000,
867 0b0000001100000000,
868 ],
869 6,
870 0,
871 ),
872 '5' => (
873 &[
874 0b0011111100000000,
875 0b0011000000000000,
876 0b0011000000000000,
877 0b0011111000000000,
878 0b0000001100000000,
879 0b0000001100000000,
880 0b0000001100000000,
881 0b0010001100000000,
882 0b0001111000000000,
883 ],
884 6,
885 0,
886 ),
887 '6' => (
888 &[
889 0b0000111000000000,
890 0b0001100000000000,
891 0b0011000000000000,
892 0b0011111000000000,
893 0b0011001100000000,
894 0b0011001100000000,
895 0b0011001100000000,
896 0b0011001100000000,
897 0b0001111000000000,
898 ],
899 6,
900 0,
901 ),
902 '7' => (
903 &[
904 0b0011111100000000,
905 0b0000001100000000,
906 0b0000001100000000,
907 0b0000001100000000,
908 0b0000011000000000,
909 0b0000110000000000,
910 0b0000110000000000,
911 0b0000110000000000,
912 0b0000110000000000,
913 ],
914 6,
915 0,
916 ),
917 '8' => (
918 &[
919 0b0001111000000000,
920 0b0011001100000000,
921 0b0011001100000000,
922 0b0011001100000000,
923 0b0001111000000000,
924 0b0011001100000000,
925 0b0011001100000000,
926 0b0011001100000000,
927 0b0001111000000000,
928 ],
929 6,
930 0,
931 ),
932 '9' => (
933 &[
934 0b0001111000000000,
935 0b0011001100000000,
936 0b0011001100000000,
937 0b0011001100000000,
938 0b0011001100000000,
939 0b0001111100000000,
940 0b0000001100000000,
941 0b0000011000000000,
942 0b0001110000000000,
943 ],
944 6,
945 0,
946 ),
947 '.' => (&[0b0011000000000000, 0b0011000000000000], 2, 0),
948 ',' => (
949 &[
950 0b0011000000000000,
951 0b0011000000000000,
952 0b0001000000000000,
953 0b0010000000000000,
954 ],
955 2,
956 2,
957 ),
958 ':' => (
959 &[
960 0b0011000000000000,
961 0b0011000000000000,
962 0b0000000000000000,
963 0b0000000000000000,
964 0b0000000000000000,
965 0b0011000000000000,
966 0b0011000000000000,
967 ],
968 2,
969 0,
970 ),
971 ';' => (
972 &[
973 0b0011000000000000,
974 0b0011000000000000,
975 0b0000000000000000,
976 0b0000000000000000,
977 0b0000000000000000,
978 0b0011000000000000,
979 0b0011000000000000,
980 0b0001000000000000,
981 0b0010000000000000,
982 ],
983 2,
984 2,
985 ),
986 '!' => (
987 &[
988 0b0011000000000000,
989 0b0011000000000000,
990 0b0011000000000000,
991 0b0011000000000000,
992 0b0011000000000000,
993 0b0011000000000000,
994 0b0000000000000000,
995 0b0011000000000000,
996 0b0011000000000000,
997 ],
998 2,
999 0,
1000 ),
1001 '?' => (
1002 &[
1003 0b0001111000000000,
1004 0b0010001100000000,
1005 0b0000001100000000,
1006 0b0000011000000000,
1007 0b0000110000000000,
1008 0b0000110000000000,
1009 0b0000000000000000,
1010 0b0000110000000000,
1011 0b0000110000000000,
1012 ],
1013 6,
1014 0,
1015 ),
1016 '\'' => (
1017 &[
1018 0b0011000000000000,
1019 0b0011000000000000,
1020 0b0001000000000000,
1021 0b0010000000000000,
1022 ],
1023 2,
1024 -5,
1025 ),
1026 '_' => (&[0b0011111000000000], 5, 0),
1027 '+' => (
1028 &[
1029 0b0000100000000000,
1030 0b0000100000000000,
1031 0b0011111000000000,
1032 0b0000100000000000,
1033 0b0000100000000000,
1034 ],
1035 5,
1036 -1,
1037 ),
1038 '-' => (&[0b0011111000000000], 5, -3),
1039 '/' => (
1040 &[
1041 0b0000110000000000,
1042 0b0000110000000000,
1043 0b0000110000000000,
1044 0b0001100000000000,
1045 0b0001100000000000,
1046 0b0001100000000000,
1047 0b0011000000000000,
1048 0b0011000000000000,
1049 0b0011000000000000,
1050 ],
1051 4,
1052 0,
1053 ),
1054 '\\' => (
1055 &[
1056 0b0011000000000000,
1057 0b0011000000000000,
1058 0b0011000000000000,
1059 0b0001100000000000,
1060 0b0001100000000000,
1061 0b0001100000000000,
1062 0b0000110000000000,
1063 0b0000110000000000,
1064 0b0000110000000000,
1065 ],
1066 4,
1067 0,
1068 ),
1069 '(' => (
1070 &[
1071 0b0001100000000000,
1072 0b0011000000000000,
1073 0b0011000000000000,
1074 0b0011000000000000,
1075 0b0011000000000000,
1076 0b0011000000000000,
1077 0b0011000000000000,
1078 0b0011000000000000,
1079 0b0001100000000000,
1080 ],
1081 3,
1082 0,
1083 ),
1084 ')' => (
1085 &[
1086 0b0011000000000000,
1087 0b0001100000000000,
1088 0b0001100000000000,
1089 0b0001100000000000,
1090 0b0001100000000000,
1091 0b0001100000000000,
1092 0b0001100000000000,
1093 0b0001100000000000,
1094 0b0011000000000000,
1095 ],
1096 3,
1097 0,
1098 ),
1099 '<' => (
1100 &[
1101 0b0000110000000000,
1102 0b0001100000000000,
1103 0b0011000000000000,
1104 0b0001100000000000,
1105 0b0000110000000000,
1106 ],
1107 4,
1108 -1,
1109 ),
1110 '>' => (
1111 &[
1112 0b0011000000000000,
1113 0b0001100000000000,
1114 0b0000110000000000,
1115 0b0001100000000000,
1116 0b0011000000000000,
1117 ],
1118 4,
1119 -1,
1120 ),
1121 '[' => (
1122 &[
1123 0b0011110000000000,
1124 0b0011000000000000,
1125 0b0011000000000000,
1126 0b0011000000000000,
1127 0b0011000000000000,
1128 0b0011000000000000,
1129 0b0011000000000000,
1130 0b0011000000000000,
1131 0b0011110000000000,
1132 ],
1133 4,
1134 0,
1135 ),
1136 ']' => (
1137 &[
1138 0b0011110000000000,
1139 0b0000110000000000,
1140 0b0000110000000000,
1141 0b0000110000000000,
1142 0b0000110000000000,
1143 0b0000110000000000,
1144 0b0000110000000000,
1145 0b0000110000000000,
1146 0b0011110000000000,
1147 ],
1148 4,
1149 0,
1150 ),
1151 '{' => (
1152 &[
1153 0b0000110000000000,
1154 0b0001100000000000,
1155 0b0001100000000000,
1156 0b0001100000000000,
1157 0b0011000000000000,
1158 0b0001100000000000,
1159 0b0001100000000000,
1160 0b0001100000000000,
1161 0b0000110000000000,
1162 ],
1163 4,
1164 0,
1165 ),
1166 '}' => (
1167 &[
1168 0b0011000000000000,
1169 0b0001100000000000,
1170 0b0001100000000000,
1171 0b0001100000000000,
1172 0b0000110000000000,
1173 0b0001100000000000,
1174 0b0001100000000000,
1175 0b0001100000000000,
1176 0b0011000000000000,
1177 ],
1178 4,
1179 0,
1180 ),
1181 '°' => (
1182 &[0b0011100000000000, 0b0010100000000000, 0b0011100000000000],
1183 3,
1184 -6,
1185 ),
1186 'Ä' => (
1187 &[
1188 0b0001001000000000,
1189 0b0000000000000000,
1190 0b0001111000000000,
1191 0b0011001100000000,
1192 0b0011001100000000,
1193 0b0011001100000000,
1194 0b0011111100000000,
1195 0b0011001100000000,
1196 0b0011001100000000,
1197 0b0011001100000000,
1198 0b0011001100000000,
1199 ],
1200 6,
1201 0,
1202 ),
1203 'Ö' => (
1204 &[
1205 0b0001001000000000,
1206 0b0000000000000000,
1207 0b0001111000000000,
1208 0b0011001100000000,
1209 0b0011001100000000,
1210 0b0011001100000000,
1211 0b0011001100000000,
1212 0b0011001100000000,
1213 0b0011001100000000,
1214 0b0011001100000000,
1215 0b0001111000000000,
1216 ],
1217 6,
1218 0,
1219 ),
1220 'Ü' => (
1221 &[
1222 0b0001001000000000,
1223 0b0000000000000000,
1224 0b0011001100000000,
1225 0b0011001100000000,
1226 0b0011001100000000,
1227 0b0011001100000000,
1228 0b0011001100000000,
1229 0b0011001100000000,
1230 0b0011001100000000,
1231 0b0011001100000000,
1232 0b0001111000000000,
1233 ],
1234 6,
1235 0,
1236 ),
1237 'ä' => (
1238 &[
1239 0b0001001000000000,
1240 0b0000000000000000,
1241 0b0001111000000000,
1242 0b0000001100000000,
1243 0b0001111100000000,
1244 0b0011001100000000,
1245 0b0011001100000000,
1246 0b0011001100000000,
1247 0b0001111100000000,
1248 ],
1249 6,
1250 0,
1251 ),
1252 'ö' => (
1253 &[
1254 0b0001001000000000,
1255 0b0000000000000000,
1256 0b0001111000000000,
1257 0b0011001100000000,
1258 0b0011001100000000,
1259 0b0011001100000000,
1260 0b0011001100000000,
1261 0b0011001100000000,
1262 0b0001111000000000,
1263 ],
1264 6,
1265 0,
1266 ),
1267 'ü' => (
1268 &[
1269 0b0001001000000000,
1270 0b0000000000000000,
1271 0b0011001100000000,
1272 0b0011001100000000,
1273 0b0011001100000000,
1274 0b0011001100000000,
1275 0b0011001100000000,
1276 0b0011001100000000,
1277 0b0001111000000000,
1278 ],
1279 6,
1280 0,
1281 ),
1282 'ß' => (
1283 &[
1284 0b0001111000000000,
1285 0b0011001100000000,
1286 0b0011001100000000,
1287 0b0011001100000000,
1288 0b0011011000000000,
1289 0b0011001100000000,
1290 0b0011001100000000,
1291 0b0011001100000000,
1292 0b0011011000000000,
1293 ],
1294 6,
1295 0,
1296 ),
1297 '$' => (
1298 &[
1299 0b0000011000000000,
1300 0b0001111110000000,
1301 0b0011011001000000,
1302 0b0011011000000000,
1303 0b0011011000000000,
1304 0b0001111110000000,
1305 0b0000011011000000,
1306 0b0000011011000000,
1307 0b0010011011000000,
1308 0b0001111110000000,
1309 0b0000011000000000,
1310 ],
1311 8,
1312 1,
1313 ),
1314 '€' => (
1315 &[
1316 0b0000111100000000,
1317 0b0001100010000000,
1318 0b0001100000000000,
1319 0b0011111000000000,
1320 0b0001100000000000,
1321 0b0011111000000000,
1322 0b0001100000000000,
1323 0b0001100010000000,
1324 0b0000111100000000,
1325 ],
1326 7,
1327 0,
1328 ),
1329 ' ' => (&[], 2, 0),
1330 _ => (&[], -2, 0),
1331 }
1332}