1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
pub fn convert_byte(b: &u8) -> &'static str {
    match *b {
        0x05 => " ",   //  0x0005  ENQUIRY
        0x06 => " ",   //  0x0006  ACKNOWLEDGE
        0x07 => " ",   //  0x0007  BELL
        0x08 => " ",   //  0x0008  BACKSPACE
        0x09 => "\t",  //  0x0009  HORIZONTAL TABULATION
        0x0a => "\n",  //  0x000a  LINE FEED
        0x0b => " ",   //  0x000b  VERTICAL TABULATION
        0x0c => " ",   //  0x000c  FORM FEED
        0x0d => " ",   //  0x000d  CARRIAGE RETURN
        0x0e => " ",   //  0x000e  SHIFT OUT
        0x0f => " ",   //  0x000f  SHIFT IN
        0x10 => " ",   //  0x0010  DATA LINK ESCAPE
        0x11 => " ",   //  0x0011  DEVICE CONTROL ONE
        0x12 => " ",   //  0x0012  DEVICE CONTROL TWO
        0x13 => " ",   //  0x0013  DEVICE CONTROL THREE
        0x14 => " ",   //  0x0014  DEVICE CONTROL FOUR
        0x15 => " ",   //  0x0015  NEGATIVE ACKNOWLEDGE
        0x16 => " ",   //  0x0016  SYNCHRONOUS IDLE
        0x17 => " ",   //  0x0017  END OF TRANSMISSION BLOCK
        0x18 => " ",   //  0x0018  CANCEL
        0x19 => " ",   //  0x0019  END OF MEDIUM
        0x1a => " ",   //  0x001a  SUBSTITUTE
        0x1b => " ",   //  0x001b  ESCAPE
        0x1c => " ",   //  0x001c  FILE SEPARATOR
        0x1d => " ",   //  0x001d  GROUP SEPARATOR
        0x1e => " ",   //  0x001e  RECORD SEPARATOR
        0x1f => " ",   //  0x001f  UNIT SEPARATOR
        0x20 => " ",   //  0x0020  SPACE
        0x21 => "!",   //  0x0021  EXCLAMATION MARK
        0x22 => "\"",  //  0x0022  QUOTATION MARK
        0x23 => "#",   //  0x0023  NUMBER SIGN
        0x24 => "$",   //  0x0024  DOLLAR SIGN
        0x25 => "%",   //  0x0025  PERCENT SIGN
        0x26 => "&",   //  0x0026  AMPERSAND
        0x27 => "'",   //  0x0027  APOSTROPHE
        0x28 => "(",   //  0x0028  LEFT PARENTHESIS
        0x29 => ")",   //  0x0029  RIGHT PARENTHESIS
        0x2a => "*",   //  0x002a  ASTERISK
        0x2b => "+",   //  0x002b  PLUS SIGN
        0x2c => ",",   //  0x002c  COMMA
        0x2d => "-",   //  0x002d  HYPHEN-MINUS
        0x2e => ".",   //  0x002e  FULL STOP
        0x2f => "/",   //  0x002f  SOLIDUS
        0x30 => "0",   //  0x0030  DIGIT ZERO
        0x31 => "1",   //  0x0031  DIGIT ONE
        0x32 => "2",   //  0x0032  DIGIT TWO
        0x33 => "3",   //  0x0033  DIGIT THREE
        0x34 => "4",   //  0x0034  DIGIT FOUR
        0x35 => "5",   //  0x0035  DIGIT FIVE
        0x36 => "6",   //  0x0036  DIGIT SIX
        0x37 => "7",   //  0x0037  DIGIT SEVEN
        0x38 => "8",   //  0x0038  DIGIT EIGHT
        0x39 => "9",   //  0x0039  DIGIT NINE
        0x3a => ":",   //  0x003a  COLON
        0x3b => ";",   //  0x003b  SEMICOLON
        0x3c => "<",   //  0x003c  LESS-THAN SIGN
        0x3d => "=",   //  0x003d  EQUALS SIGN
        0x3e => ">",   //  0x003e  GREATER-THAN SIGN
        0x3f => "?",   //  0x003f  QUESTION MARK
        0x40 => "@",   //  0x0040  COMMERCIAL AT
        0x41 => "A",   //  0x0041  LATIN CAPITAL LETTER A
        0x42 => "B",   //  0x0042  LATIN CAPITAL LETTER B
        0x43 => "C",   //  0x0043  LATIN CAPITAL LETTER C
        0x44 => "D",   //  0x0044  LATIN CAPITAL LETTER D
        0x45 => "E",   //  0x0045  LATIN CAPITAL LETTER E
        0x46 => "F",   //  0x0046  LATIN CAPITAL LETTER F
        0x47 => "G",   //  0x0047  LATIN CAPITAL LETTER G
        0x48 => "H",   //  0x0048  LATIN CAPITAL LETTER H
        0x49 => "I",   //  0x0049  LATIN CAPITAL LETTER I
        0x4a => "J",   //  0x004a  LATIN CAPITAL LETTER J
        0x4b => "K",   //  0x004b  LATIN CAPITAL LETTER K
        0x4c => "L",   //  0x004c  LATIN CAPITAL LETTER L
        0x4d => "M",   //  0x004d  LATIN CAPITAL LETTER M
        0x4e => "N",   //  0x004e  LATIN CAPITAL LETTER N
        0x4f => "O",   //  0x004f  LATIN CAPITAL LETTER O
        0x50 => "P",   //  0x0050  LATIN CAPITAL LETTER P
        0x51 => "Q",   //  0x0051  LATIN CAPITAL LETTER Q
        0x52 => "R",   //  0x0052  LATIN CAPITAL LETTER R
        0x53 => "S",   //  0x0053  LATIN CAPITAL LETTER S
        0x54 => "T",   //  0x0054  LATIN CAPITAL LETTER T
        0x55 => "U",   //  0x0055  LATIN CAPITAL LETTER U
        0x56 => "V",   //  0x0056  LATIN CAPITAL LETTER V
        0x57 => "W",   //  0x0057  LATIN CAPITAL LETTER W
        0x58 => "X",   //  0x0058  LATIN CAPITAL LETTER X
        0x59 => "Y",   //  0x0059  LATIN CAPITAL LETTER Y
        0x5a => "Z",   //  0x005a  LATIN CAPITAL LETTER Z
        0x5b => "[",   //  0x005b  LEFT SQUARE BRACKET
        0x5c => "\\",  //  0x005c  REVERSE SOLIDUS
        0x5d => "]",   //  0x005d  RIGHT SQUARE BRACKET
        0x5e => "^",   //  0x005e  CIRCUMFLEX ACCENT
        0x5f => "_",   //  0x005f  LOW LINE
        0x60 => "`",   //  0x0060  GRAVE ACCENT
        0x61 => "a",   //  0x0061  LATIN SMALL LETTER A
        0x62 => "b",   //  0x0062  LATIN SMALL LETTER B
        0x63 => "c",   //  0x0063  LATIN SMALL LETTER C
        0x64 => "d",   //  0x0064  LATIN SMALL LETTER D
        0x65 => "e",   //  0x0065  LATIN SMALL LETTER E
        0x66 => "f",   //  0x0066  LATIN SMALL LETTER F
        0x67 => "g",   //  0x0067  LATIN SMALL LETTER G
        0x68 => "h",   //  0x0068  LATIN SMALL LETTER H
        0x69 => "i",   //  0x0069  LATIN SMALL LETTER I
        0x6a => "j",   //  0x006a  LATIN SMALL LETTER J
        0x6b => "k",   //  0x006b  LATIN SMALL LETTER K
        0x6c => "l",   //  0x006c  LATIN SMALL LETTER L
        0x6d => "m",   //  0x006d  LATIN SMALL LETTER M
        0x6e => "n",   //  0x006e  LATIN SMALL LETTER N
        0x6f => "o",   //  0x006f  LATIN SMALL LETTER O
        0x70 => "p",   //  0x0070  LATIN SMALL LETTER P
        0x71 => "q",   //  0x0071  LATIN SMALL LETTER Q
        0x72 => "r",   //  0x0072  LATIN SMALL LETTER R
        0x73 => "s",   //  0x0073  LATIN SMALL LETTER S
        0x74 => "t",   //  0x0074  LATIN SMALL LETTER T
        0x75 => "u",   //  0x0075  LATIN SMALL LETTER U
        0x76 => "v",   //  0x0076  LATIN SMALL LETTER V
        0x77 => "w",   //  0x0077  LATIN SMALL LETTER W
        0x78 => "x",   //  0x0078  LATIN SMALL LETTER X
        0x79 => "y",   //  0x0079  LATIN SMALL LETTER Y
        0x7a => "z",   //  0x007a  LATIN SMALL LETTER Z
        0x7b => "{",   //  0x007b  LEFT CURLY BRACKET
        0x7c => "|",   //  0x007c  VERTICAL LINE
        0x7d => "}",   //  0x007d  RIGHT CURLY BRACKET
        0x7e => "~",   //  0x007e  TILDE
        0x7f => " ",   //  0x007f  DELETE
        0x80 => "Ç",  //  0x00c7  LATIN CAPITAL LETTER C WITH CEDILLA
        0x81 => "ü",  //  0x00fc  LATIN SMALL LETTER U WITH DIAERESIS
        0x82 => "é",  //  0x00e9  LATIN SMALL LETTER E WITH ACUTE
        0x83 => "â",  //  0x00e2  LATIN SMALL LETTER A WITH CIRCUMFLEX
        0x84 => "ä",  //  0x00e4  LATIN SMALL LETTER A WITH DIAERESIS
        0x85 => "à",  //  0x00e0  LATIN SMALL LETTER A WITH GRAVE
        0x86 => "å",  //  0x00e5  LATIN SMALL LETTER A WITH RING ABOVE
        0x87 => "ç",  //  0x00e7  LATIN SMALL LETTER C WITH CEDILLA
        0x88 => "ê",  //  0x00ea  LATIN SMALL LETTER E WITH CIRCUMFLEX
        0x89 => "ë",  //  0x00eb  LATIN SMALL LETTER E WITH DIAERESIS
        0x8a => "è",  //  0x00e8  LATIN SMALL LETTER E WITH GRAVE
        0x8b => "ï",  //  0x00ef  LATIN SMALL LETTER I WITH DIAERESIS
        0x8c => "î",  //  0x00ee  LATIN SMALL LETTER I WITH CIRCUMFLEX
        0x8d => "ì",  //  0x00ec  LATIN SMALL LETTER I WITH GRAVE
        0x8e => "Ä",  //  0x00c4  LATIN CAPITAL LETTER A WITH DIAERESIS
        0x8f => "Å",  //  0x00c5  LATIN CAPITAL LETTER A WITH RING ABOVE
        0x90 => "É",  //  0x00c9  LATIN CAPITAL LETTER E WITH ACUTE
        0x91 => "æ",  //  0x00e6  LATIN SMALL LIGATURE AE
        0x92 => "Æ",  //  0x00c6  LATIN CAPITAL LIGATURE AE
        0x93 => "ô",  //  0x00f4  LATIN SMALL LETTER O WITH CIRCUMFLEX
        0x94 => "ö",  //  0x00f6  LATIN SMALL LETTER O WITH DIAERESIS
        0x95 => "ò",  //  0x00f2  LATIN SMALL LETTER O WITH GRAVE
        0x96 => "û",  //  0x00fb  LATIN SMALL LETTER U WITH CIRCUMFLEX
        0x97 => "ù",  //  0x00f9  LATIN SMALL LETTER U WITH GRAVE
        0x98 => "ÿ",  //  0x00ff  LATIN SMALL LETTER Y WITH DIAERESIS
        0x99 => "Ö",  //  0x00d6  LATIN CAPITAL LETTER O WITH DIAERESIS
        0x9a => "Ü",  //  0x00dc  LATIN CAPITAL LETTER U WITH DIAERESIS
        0x9b => "¢",  //  0x00a2  CENT SIGN
        0x9c => "£",  //  0x00a3  POUND SIGN
        0x9d => "¥",  //  0x00a5  YEN SIGN
        0x9e => "₧", //  0x20a7  PESETA SIGN
        0x9f => "ƒ",  //  0x0192  LATIN SMALL LETTER F WITH HOOK
        0xa0 => "á",  //  0x00e1  LATIN SMALL LETTER A WITH ACUTE
        0xa1 => "í",  //  0x00ed  LATIN SMALL LETTER I WITH ACUTE
        0xa2 => "ó",  //  0x00f3  LATIN SMALL LETTER O WITH ACUTE
        0xa3 => "ú",  //  0x00fa  LATIN SMALL LETTER U WITH ACUTE
        0xa4 => "ñ",  //  0x00f1  LATIN SMALL LETTER N WITH TILDE
        0xa5 => "Ñ",  //  0x00d1  LATIN CAPITAL LETTER N WITH TILDE
        0xa6 => "ª",  //  0x00aa  FEMININE ORDINAL INDICATOR
        0xa7 => "º",  //  0x00ba  MASCULINE ORDINAL INDICATOR
        0xa8 => "¿",  //  0x00bf  INVERTED QUESTION MARK
        0xa9 => "⌐", //  0x2310  REVERSED NOT SIGN
        0xaa => "¬",  //  0x00ac  NOT SIGN
        0xab => "½",  //  0x00bd  VULGAR FRACTION ONE HALF
        0xac => "¼",  //  0x00bc  VULGAR FRACTION ONE QUARTER
        0xad => "¡",  //  0x00a1  INVERTED EXCLAMATION MARK
        0xae => "«",  //  0x00ab  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
        0xaf => "»",  //  0x00bb  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
        0xb0 => "░", //  0x2591  LIGHT SHADE
        0xb1 => "▒", //  0x2592  MEDIUM SHADE
        0xb2 => "▓", //  0x2593  DARK SHADE
        0xb3 => "│", //  0x2502  BOX DRAWINGS LIGHT VERTICAL
        0xb4 => "┤", //  0x2524  BOX DRAWINGS LIGHT VERTICAL AND LEFT
        0xb5 => "╡", //  0x2561  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
        0xb6 => "╢", //  0x2562  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
        0xb7 => "╖", //  0x2556  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
        0xb8 => "╕", //  0x2555  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
        0xb9 => "╣", //  0x2563  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
        0xba => "║", //  0x2551  BOX DRAWINGS DOUBLE VERTICAL
        0xbb => "╗", //  0x2557  BOX DRAWINGS DOUBLE DOWN AND LEFT
        0xbc => "╝", //  0x255d  BOX DRAWINGS DOUBLE UP AND LEFT
        0xbd => "╜", //  0x255c  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
        0xbe => "╛", //  0x255b  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
        0xbf => "┐", //  0x2510  BOX DRAWINGS LIGHT DOWN AND LEFT
        0xc0 => "└", //  0x2514  BOX DRAWINGS LIGHT UP AND RIGHT
        0xc1 => "┴", //  0x2534  BOX DRAWINGS LIGHT UP AND HORIZONTAL
        0xc2 => "┬", //  0x252c  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
        0xc3 => "├", //  0x251c  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
        0xc4 => "─", //  0x2500  BOX DRAWINGS LIGHT HORIZONTAL
        0xc5 => "┼", //  0x253c  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
        0xc6 => "╞", //  0x255e  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
        0xc7 => "╟", //  0x255f  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
        0xc8 => "╚", //  0x255a  BOX DRAWINGS DOUBLE UP AND RIGHT
        0xc9 => "╔", //  0x2554  BOX DRAWINGS DOUBLE DOWN AND RIGHT
        0xca => "╩", //  0x2569  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
        0xcb => "╦", //  0x2566  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
        0xcc => "╠", //  0x2560  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
        0xcd => "═", //  0x2550  BOX DRAWINGS DOUBLE HORIZONTAL
        0xce => "╬", //  0x256c  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
        0xcf => "╶", //  0x2567  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
        0xd0 => "╸", //  0x2568  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
        0xd1 => "╤", //  0x2564  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
        0xd2 => "╥", //  0x2565  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
        0xd3 => "╙", //  0x2559  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
        0xd4 => "╘", //  0x2558  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
        0xd5 => "╒", //  0x2552  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
        0xd6 => "╓", //  0x2553  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
        0xd7 => "╫", //  0x256b  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
        0xd8 => "╪", //  0x256a  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
        0xd9 => "┘", //  0x2518  BOX DRAWINGS LIGHT UP AND LEFT
        0xda => "┌", //  0x250c  BOX DRAWINGS LIGHT DOWN AND RIGHT
        0xdb => "█", //  0x2588  FULL BLOCK
        0xdc => "▄", //  0x2584  LOWER HALF BLOCK
        0xdd => "▌", //  0x258c  LEFT HALF BLOCK
        0xde => "▐", //  0x2590  RIGHT HALF BLOCK
        0xdf => "▀", //  0x2580  UPPER HALF BLOCK
        0xe0 => "ʱ",  //  0x03b1  GREEK SMALL LETTER ALPHA
        0xe1 => "ß",  //  0x00df  LATIN SMALL LETTER SHARP S
        0xe2 => "γ",  //  0x0393  GREEK CAPITAL LETTER GAMMA
        0xe3 => "π",  //  0x03c0  GREEK SMALL LETTER PI
        0xe4 => "Σ",  //  0x03a3  GREEK CAPITAL LETTER SIGMA
        0xe5 => "σ",  //  0x03c3  GREEK SMALL LETTER SIGMA
        0xe6 => "µ",  //  0x00b5  MICRO SIGN
        0xe7 => "τ",  //  0x03c4  GREEK SMALL LETTER TAU
        0xe8 => "Φ",  //  0x03a6  GREEK CAPITAL LETTER PHI
        0xe9 => "Θ",  //  0x0398  GREEK CAPITAL LETTER THETA
        0xea => "Ω",  //  0x03a9  GREEK CAPITAL LETTER OMEGA
        0xeb => "δ",  //  0x03b4  GREEK SMALL LETTER DELTA
        0xec => "∞", //  0x221e  INFINITY
        0xed => "φ",  //  0x03c6  GREEK SMALL LETTER PHI
        0xee => "ε",  //  0x03b5  GREEK SMALL LETTER EPSILON
        0xef => "∩", //  0x2229  INTERSECTION
        0xf0 => "≡", //  0x2261  IDENTICAL TO
        0xf1 => "±",  //  0x00b1  PLUS-MINUS SIGN
        0xf2 => "≥", //  0x2265  GREATER-THAN OR EQUAL TO
        0xf3 => "≤", //  0x2264  LESS-THAN OR EQUAL TO
        0xf4 => "⌠", //  0x2320  TOP HALF INTEGRAL
        0xf5 => "⌠", //  0x2321  BOTTOM HALF INTEGRAL
        0xf6 => "÷",  //  0x00f7  DIVISION SIGN
        0xf7 => "≈", //  0x2248  ALMOST EQUAL TO
        0xf8 => "°",  //  0x00b0  DEGREE SIGN
        0xf9 => "∙", //  0x2219  BULLET OPERATOR
        0xfa => "·",  //  0x00b7  MIDDLE DOT
        0xfb => "√", //  0x221a  SQUARE ROOT
        0xfc => "ⁿ", //  0x207f  SUPERSCRIPT LATIN SMALL LETTER N
        0xfd => "²",  //  0x00b2  SUPERSCRIPT TWO
        0xfe => "■", //  0x25a0  BLACK SQUARE
        0xff => " ",   //  0x00a0  NO-BREAK SPACE
        _ => unreachable!(),
    }
}

#[cfg(test)]
mod tests {
    #[test]
    fn test_cp437_byte_to_utf8_bytes() {
        let convert_table: Vec<(u8, &str)> = vec![
            (0x0a, "\n"),
            (0x24, "$"),
            (0x4a, "J"),
            (0x30, "0"),
            (0x5f, "_"),
            (0x64, "d"),
            (0x3c, "<"),
            (0x88, "ê"),
            (0x96, "û"),
            (0xb2, "▓"),
            (0xd1, "╤"),
            (0xfb, "√"),
        ];
        for (cp437_byte, utf8_string) in convert_table {
            let converted: [u8; 3] = crate::convert_cp437_byte_to_utf8_bytes(&cp437_byte);
            let converted_non_zero: Vec<u8> = converted
                .iter()
                .filter_map(|x| if *x != 0x00u8 { Some(*x) } else { None })
                .collect();
            let converted_string: &str = std::str::from_utf8(&converted_non_zero).unwrap();
            assert_eq!(converted_string, utf8_string);
        }
    }
}

/// Converts 1 byte CP437 to 3 bytes UTF-8
pub fn convert_cp437_byte_to_utf8_bytes(b: &u8) -> [u8; 3] {
    match *b {
        0x00 => [0x00, 0x00, 0x00], // " "  0x0000  NULL
        0x01 => [0x00, 0x00, 0x01], // " "  0x0001  Start of Heading
        0x02 => [0x00, 0x00, 0x02], // " "  0x0002  Start of Text
        0x03 => [0x00, 0x00, 0x03], // " "  0x0003  End of Text
        0x04 => [0x00, 0x00, 0x04], // " "  0x0004  End of Transmission
        0x05 => [0x00, 0x00, 0x20], // " "  0x0005  ENQUIRY
        0x06 => [0x00, 0x00, 0x20], // " "  0x0006  ACKNOWLEDGE
        0x07 => [0x00, 0x00, 0x20], // " "  0x0007  BELL
        0x08 => [0x00, 0x00, 0x20], // " "  0x0008  BACKSPACE
        0x09 => [0x00, 0x00, 0x09], // "\t" 0x0009  HORIZONTAL TABULATION
        0x0a => [0x00, 0x00, 0x0a], // "\n" 0x000a  LINE FEED
        0x0b => [0x00, 0x00, 0x20], // " "  0x000b  VERTICAL TABULATION
        0x0c => [0x00, 0x00, 0x20], // " "  0x000c  FORM FEED
        0x0d => [0x00, 0x00, 0x20], // " "  0x000d  CARRIAGE RETURN
        0x0e => [0x00, 0x00, 0x20], // " "  0x000e  SHIFT OUT
        0x0f => [0x00, 0x00, 0x20], // " "  0x000f  SHIFT IN
        0x10 => [0x00, 0x00, 0x20], // " "  0x0010  DATA LINK ESCAPE
        0x11 => [0x00, 0x00, 0x20], // " "  0x0011  DEVICE CONTROL ONE
        0x12 => [0x00, 0x00, 0x20], // " "  0x0012  DEVICE CONTROL TWO
        0x13 => [0x00, 0x00, 0x20], // " "  0x0013  DEVICE CONTROL THREE
        0x14 => [0x00, 0x00, 0x20], // " "  0x0014  DEVICE CONTROL FOUR
        0x15 => [0x00, 0x00, 0x20], // " "  0x0015  NEGATIVE ACKNOWLEDGE
        0x16 => [0x00, 0x00, 0x20], // " "  0x0016  SYNCHRONOUS IDLE
        0x17 => [0x00, 0x00, 0x20], // " "  0x0017  END OF TRANSMISSION BLOCK
        0x18 => [0x00, 0x00, 0x20], // " "  0x0018  CANCEL
        0x19 => [0x00, 0x00, 0x20], // " "  0x0019  END OF MEDIUM
        0x1a => [0x00, 0x00, 0x20], // " "  0x001a  SUBSTITUTE
        0x1b => [0x00, 0x00, 0x20], // " "  0x001b  ESCAPE
        0x1c => [0x00, 0x00, 0x20], // " "  0x001c  FILE SEPARATOR
        0x1d => [0x00, 0x00, 0x20], // " "  0x001d  GROUP SEPARATOR
        0x1e => [0x00, 0x00, 0x20], // " "  0x001e  RECORD SEPARATOR
        0x1f => [0x00, 0x00, 0x20], // " "  0x001f  UNIT SEPARATOR
        0x20 => [0x00, 0x00, 0x20], // " "  0x0020  SPACE
        0x21 => [0x00, 0x00, 0x21], // "!"  0x0021  EXCLAMATION MARK
        0x22 => [0x00, 0x00, 0x22], // "\"" 0x0022  QUOTATION MARK
        0x23 => [0x00, 0x00, 0x23], // "#"  0x0023  NUMBER SIGN
        0x24 => [0x00, 0x00, 0x24], // "$"  0x0024  DOLLAR SIGN
        0x25 => [0x00, 0x00, 0x25], // "%"  0x0025  PERCENT SIGN
        0x26 => [0x00, 0x00, 0x26], // "&"  0x0026  AMPERSAND
        0x27 => [0x00, 0x00, 0x27], // "'"  0x0027  APOSTROPHE
        0x28 => [0x00, 0x00, 0x28], // "("  0x0028  LEFT PARENTHESIS
        0x29 => [0x00, 0x00, 0x29], // ")"  0x0029  RIGHT PARENTHESIS
        0x2a => [0x00, 0x00, 0x2a], // "*"  0x002a  ASTERISK
        0x2b => [0x00, 0x00, 0x2b], // "+"  0x002b  PLUS SIGN
        0x2c => [0x00, 0x00, 0x2c], // ","  0x002c  COMMA
        0x2d => [0x00, 0x00, 0x2d], // "-"  0x002d  HYPHEN-MINUS
        0x2e => [0x00, 0x00, 0x2e], // "."  0x002e  FULL STOP
        0x2f => [0x00, 0x00, 0x2f], // "/"  0x002f  SOLIDUS
        0x30 => [0x00, 0x00, 0x30], // "0"  0x0030  DIGIT ZERO
        0x31 => [0x00, 0x00, 0x31], // "1"  0x0031  DIGIT ONE
        0x32 => [0x00, 0x00, 0x32], // "2"  0x0032  DIGIT TWO
        0x33 => [0x00, 0x00, 0x33], // "3"  0x0033  DIGIT THREE
        0x34 => [0x00, 0x00, 0x34], // "4"  0x0034  DIGIT FOUR
        0x35 => [0x00, 0x00, 0x35], // "5"  0x0035  DIGIT FIVE
        0x36 => [0x00, 0x00, 0x36], // "6"  0x0036  DIGIT SIX
        0x37 => [0x00, 0x00, 0x37], // "7"  0x0037  DIGIT SEVEN
        0x38 => [0x00, 0x00, 0x38], // "8"  0x0038  DIGIT EIGHT
        0x39 => [0x00, 0x00, 0x39], // "9"  0x0039  DIGIT NINE
        0x3a => [0x00, 0x00, 0x3a], // ":"  0x003a  COLON
        0x3b => [0x00, 0x00, 0x3b], // ";"  0x003b  SEMICOLON
        0x3c => [0x00, 0x00, 0x3c], // "<"  0x003c  LESS-THAN SIGN
        0x3d => [0x00, 0x00, 0x3d], // "="  0x003d  EQUALS SIGN
        0x3e => [0x00, 0x00, 0x3e], // ">"  0x003e  GREATER-THAN SIGN
        0x3f => [0x00, 0x00, 0x3f], // "?"  0x003f  QUESTION MARK
        0x40 => [0x00, 0x00, 0x40], // "@"  0x0040  COMMERCIAL AT
        0x41 => [0x00, 0x00, 0x41], // "A"  0x0041  LATIN CAPITAL LETTER A
        0x42 => [0x00, 0x00, 0x42], // "B"  0x0042  LATIN CAPITAL LETTER B
        0x43 => [0x00, 0x00, 0x43], // "C"  0x0043  LATIN CAPITAL LETTER C
        0x44 => [0x00, 0x00, 0x44], // "D"  0x0044  LATIN CAPITAL LETTER D
        0x45 => [0x00, 0x00, 0x45], // "E"  0x0045  LATIN CAPITAL LETTER E
        0x46 => [0x00, 0x00, 0x46], // "F"  0x0046  LATIN CAPITAL LETTER F
        0x47 => [0x00, 0x00, 0x47], // "G"  0x0047  LATIN CAPITAL LETTER G
        0x48 => [0x00, 0x00, 0x48], // "H"  0x0048  LATIN CAPITAL LETTER H
        0x49 => [0x00, 0x00, 0x49], // "I"  0x0049  LATIN CAPITAL LETTER I
        0x4a => [0x00, 0x00, 0x4a], // "J"  0x004a  LATIN CAPITAL LETTER J
        0x4b => [0x00, 0x00, 0x4b], // "K"  0x004b  LATIN CAPITAL LETTER K
        0x4c => [0x00, 0x00, 0x4c], // "L"  0x004c  LATIN CAPITAL LETTER L
        0x4d => [0x00, 0x00, 0x4d], // "M"  0x004d  LATIN CAPITAL LETTER M
        0x4e => [0x00, 0x00, 0x4e], // "N"  0x004e  LATIN CAPITAL LETTER N
        0x4f => [0x00, 0x00, 0x4f], // "O"  0x004f  LATIN CAPITAL LETTER O
        0x50 => [0x00, 0x00, 0x50], // "P"  0x0050  LATIN CAPITAL LETTER P
        0x51 => [0x00, 0x00, 0x51], // "Q"  0x0051  LATIN CAPITAL LETTER Q
        0x52 => [0x00, 0x00, 0x52], // "R"  0x0052  LATIN CAPITAL LETTER R
        0x53 => [0x00, 0x00, 0x53], // "S"  0x0053  LATIN CAPITAL LETTER S
        0x54 => [0x00, 0x00, 0x54], // "T"  0x0054  LATIN CAPITAL LETTER T
        0x55 => [0x00, 0x00, 0x55], // "U"  0x0055  LATIN CAPITAL LETTER U
        0x56 => [0x00, 0x00, 0x56], // "V"  0x0056  LATIN CAPITAL LETTER V
        0x57 => [0x00, 0x00, 0x57], // "W"  0x0057  LATIN CAPITAL LETTER W
        0x58 => [0x00, 0x00, 0x58], // "X"  0x0058  LATIN CAPITAL LETTER X
        0x59 => [0x00, 0x00, 0x59], // "Y"  0x0059  LATIN CAPITAL LETTER Y
        0x5a => [0x00, 0x00, 0x5a], // "Z"  0x005a  LATIN CAPITAL LETTER Z
        0x5b => [0x00, 0x00, 0x5b], // "["  0x005b  LEFT SQUARE BRACKET
        0x5c => [0x00, 0x00, 0x5c], // "\\" 0x005c  REVERSE SOLIDUS
        0x5d => [0x00, 0x00, 0x5d], // "]"  0x005d  RIGHT SQUARE BRACKET
        0x5e => [0x00, 0x00, 0x5e], // "^"  0x005e  CIRCUMFLEX ACCENT
        0x5f => [0x00, 0x00, 0x5f], // "_"  0x005f  LOW LINE
        0x60 => [0x00, 0x00, 0x60], // "`"  0x0060  GRAVE ACCENT
        0x61 => [0x00, 0x00, 0x61], // "a"  0x0061  LATIN SMALL LETTER A
        0x62 => [0x00, 0x00, 0x62], // "b"  0x0062  LATIN SMALL LETTER B
        0x63 => [0x00, 0x00, 0x63], // "c"  0x0063  LATIN SMALL LETTER C
        0x64 => [0x00, 0x00, 0x64], // "d"  0x0064  LATIN SMALL LETTER D
        0x65 => [0x00, 0x00, 0x65], // "e"  0x0065  LATIN SMALL LETTER E
        0x66 => [0x00, 0x00, 0x66], // "f"  0x0066  LATIN SMALL LETTER F
        0x67 => [0x00, 0x00, 0x67], // "g"  0x0067  LATIN SMALL LETTER G
        0x68 => [0x00, 0x00, 0x68], // "h"  0x0068  LATIN SMALL LETTER H
        0x69 => [0x00, 0x00, 0x69], // "i"  0x0069  LATIN SMALL LETTER I
        0x6a => [0x00, 0x00, 0x6a], // "j"  0x006a  LATIN SMALL LETTER J
        0x6b => [0x00, 0x00, 0x6b], // "k"  0x006b  LATIN SMALL LETTER K
        0x6c => [0x00, 0x00, 0x6c], // "l"  0x006c  LATIN SMALL LETTER L
        0x6d => [0x00, 0x00, 0x6d], // "m"  0x006d  LATIN SMALL LETTER M
        0x6e => [0x00, 0x00, 0x6e], // "n"  0x006e  LATIN SMALL LETTER N
        0x6f => [0x00, 0x00, 0x6f], // "o"  0x006f  LATIN SMALL LETTER O
        0x70 => [0x00, 0x00, 0x70], // "p"  0x0070  LATIN SMALL LETTER P
        0x71 => [0x00, 0x00, 0x71], // "q"  0x0071  LATIN SMALL LETTER Q
        0x72 => [0x00, 0x00, 0x72], // "r"  0x0072  LATIN SMALL LETTER R
        0x73 => [0x00, 0x00, 0x73], // "s"  0x0073  LATIN SMALL LETTER S
        0x74 => [0x00, 0x00, 0x74], // "t"  0x0074  LATIN SMALL LETTER T
        0x75 => [0x00, 0x00, 0x75], // "u"  0x0075  LATIN SMALL LETTER U
        0x76 => [0x00, 0x00, 0x76], // "v"  0x0076  LATIN SMALL LETTER V
        0x77 => [0x00, 0x00, 0x77], // "w"  0x0077  LATIN SMALL LETTER W
        0x78 => [0x00, 0x00, 0x78], // "x"  0x0078  LATIN SMALL LETTER X
        0x79 => [0x00, 0x00, 0x79], // "y"  0x0079  LATIN SMALL LETTER Y
        0x7a => [0x00, 0x00, 0x7a], // "z"  0x007a  LATIN SMALL LETTER Z
        0x7b => [0x00, 0x00, 0x7b], // "{"  0x007b  LEFT CURLY BRACKET
        0x7c => [0x00, 0x00, 0x7c], // "|"  0x007c  VERTICAL LINE
        0x7d => [0x00, 0x00, 0x7d], // "}"  0x007d  RIGHT CURLY BRACKET
        0x7e => [0x00, 0x00, 0x7e], // "~"  0x007e  TILDE
        0x7f => [0xe2, 0x8C, 0x82], // "⌂"  0x007f  HOUSE
        0x80 => [0x00, 0xc3, 0x87], // "Ç"  0x00c7  LATIN CAPITAL LETTER C WITH CEDILLA
        0x81 => [0x00, 0xc3, 0xbc], // "ü"  0x00fc  LATIN SMALL LETTER U WITH DIAERESIS
        0x82 => [0x00, 0xc3, 0xa9], // "é"  0x00e9  LATIN SMALL LETTER E WITH ACUTE
        0x83 => [0x00, 0xc3, 0xa2], // "â"  0x00e2  LATIN SMALL LETTER A WITH CIRCUMFLEX
        0x84 => [0x00, 0xc3, 0xa4], // "ä"  0x00e4  LATIN SMALL LETTER A WITH DIAERESIS
        0x85 => [0x00, 0xc3, 0xa0], // "à"  0x00e0  LATIN SMALL LETTER A WITH GRAVE
        0x86 => [0x00, 0xc3, 0xa5], // "å"  0x00e5  LATIN SMALL LETTER A WITH RING ABOVE
        0x87 => [0x00, 0xc3, 0xa7], // "ç"  0x00e7  LATIN SMALL LETTER C WITH CEDILLA
        0x88 => [0x00, 0xc3, 0xaa], // "ê"  0x00ea  LATIN SMALL LETTER E WITH CIRCUMFLEX
        0x89 => [0x00, 0xc3, 0xab], // "ë"  0x00eb  LATIN SMALL LETTER E WITH DIAERESIS
        0x8a => [0x00, 0xc3, 0xa8], // "è"  0x00e8  LATIN SMALL LETTER E WITH GRAVE
        0x8b => [0x00, 0xc3, 0xaf], // "ï"  0x00ef  LATIN SMALL LETTER I WITH DIAERESIS
        0x8c => [0x00, 0xc3, 0xae], // "î"  0x00ee  LATIN SMALL LETTER I WITH CIRCUMFLEX
        0x8d => [0x00, 0xc3, 0xac], // "ì"  0x00ec  LATIN SMALL LETTER I WITH GRAVE
        0x8e => [0x00, 0xc3, 0x84], // "Ä"  0x00c4  LATIN CAPITAL LETTER A WITH DIAERESIS
        0x8f => [0x00, 0xc3, 0x85], // "Å"  0x00c5  LATIN CAPITAL LETTER A WITH RING ABOVE
        0x90 => [0x00, 0xc3, 0x89], // "É"  0x00c9  LATIN CAPITAL LETTER E WITH ACUTE
        0x91 => [0x00, 0xc3, 0xa6], // "æ"  0x00e6  LATIN SMALL LIGATURE AE
        0x92 => [0x00, 0xc3, 0x86], // "Æ"  0x00c6  LATIN CAPITAL LIGATURE AE
        0x93 => [0x00, 0xc3, 0xb4], // "ô"  0x00f4  LATIN SMALL LETTER O WITH CIRCUMFLEX
        0x94 => [0x00, 0xc3, 0xb6], // "ö"  0x00f6  LATIN SMALL LETTER O WITH DIAERESIS
        0x95 => [0x00, 0xc3, 0xb2], // "ò"  0x00f2  LATIN SMALL LETTER O WITH GRAVE
        0x96 => [0x00, 0xc3, 0xbb], // "û"  0x00fb  LATIN SMALL LETTER U WITH CIRCUMFLEX
        0x97 => [0x00, 0xc3, 0xb9], // "ù"  0x00f9  LATIN SMALL LETTER U WITH GRAVE
        0x98 => [0x00, 0xc3, 0xbf], // "ÿ"  0x00ff  LATIN SMALL LETTER Y WITH DIAERESIS
        0x99 => [0x00, 0xc3, 0x96], // "Ö"  0x00d6  LATIN CAPITAL LETTER O WITH DIAERESIS
        0x9a => [0x00, 0xc3, 0x9c], // "Ü"  0x00dc  LATIN CAPITAL LETTER U WITH DIAERESIS
        0x9b => [0x00, 0xc2, 0xa2], // "¢"  0x00a2  CENT SIGN
        0x9c => [0x00, 0xc2, 0xa3], // "£"  0x00a3  POUND SIGN
        0x9d => [0x00, 0xc2, 0xa5], // "¥"  0x00a5  YEN SIGN
        0x9e => [0xe2, 0x82, 0xa7], // "₧"  0x20a7  PESETA SIGN
        0x9f => [0x00, 0xc6, 0x92], // "ƒ"  0x0192  LATIN SMALL LETTER F WITH HOOK
        0xa0 => [0x00, 0xc3, 0xa1], // "á"  0x00e1  LATIN SMALL LETTER A WITH ACUTE
        0xa1 => [0x00, 0xc3, 0xad], // "í"  0x00ed  LATIN SMALL LETTER I WITH ACUTE
        0xa2 => [0x00, 0xc3, 0xb3], // "ó"  0x00f3  LATIN SMALL LETTER O WITH ACUTE
        0xa3 => [0x00, 0xc3, 0xba], // "ú"  0x00fa  LATIN SMALL LETTER U WITH ACUTE
        0xa4 => [0x00, 0xc3, 0xb1], // "ñ"  0x00f1  LATIN SMALL LETTER N WITH TILDE
        0xa5 => [0x00, 0xc3, 0x91], // "Ñ"  0x00d1  LATIN CAPITAL LETTER N WITH TILDE
        0xa6 => [0x00, 0xc2, 0xaa], // "ª"  0x00aa  FEMININE ORDINAL INDICATOR
        0xa7 => [0x00, 0xc2, 0xba], // "º"  0x00ba  MASCULINE ORDINAL INDICATOR
        0xa8 => [0x00, 0xc2, 0xbf], // "¿"  0x00bf  INVERTED QUESTION MARK
        0xa9 => [0xe2, 0x8c, 0x90], // "⌐"  0x2310  REVERSED NOT SIGN
        0xaa => [0x00, 0xc2, 0xac], // "¬"  0x00ac  NOT SIGN
        0xab => [0x00, 0xc2, 0xbd], // "½"  0x00bd  VULGAR FRACTION ONE HALF
        0xac => [0x00, 0xc2, 0xbc], // "¼"  0x00bc  VULGAR FRACTION ONE QUARTER
        0xad => [0x00, 0xc2, 0xa1], // "¡"  0x00a1  INVERTED EXCLAMATION MARK
        0xae => [0x00, 0xc2, 0xab], // "«"  0x00ab  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
        0xaf => [0x00, 0xc2, 0xbb], // "»"  0x00bb  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
        0xb0 => [0xe2, 0x96, 0x91], // "░"  0x2591  LIGHT SHADE
        0xb1 => [0xe2, 0x96, 0x92], // "▒"  0x2592  MEDIUM SHADE
        0xb2 => [0xe2, 0x96, 0x93], // "▓"  0x2593  DARK SHADE
        0xb3 => [0xe2, 0x94, 0x82], // "│"  0x2502  BOX DRAWINGS LIGHT VERTICAL
        0xb4 => [0xe2, 0x94, 0xa4], // "┤"  0x2524  BOX DRAWINGS LIGHT VERTICAL AND LEFT
        0xb5 => [0xe2, 0x95, 0xa1], // "╡"  0x2561  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
        0xb6 => [0xe2, 0x95, 0xa2], // "╢"  0x2562  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
        0xb7 => [0xe2, 0x95, 0x96], // "╖"  0x2556  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
        0xb8 => [0xe2, 0x95, 0x95], // "╕"  0x2555  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
        0xb9 => [0xe2, 0x95, 0xa3], // "╣"  0x2563  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
        0xba => [0xe2, 0x95, 0x91], // "║"  0x2551  BOX DRAWINGS DOUBLE VERTICAL
        0xbb => [0xe2, 0x95, 0x97], // "╗"  0x2557  BOX DRAWINGS DOUBLE DOWN AND LEFT
        0xbc => [0xe2, 0x95, 0x9d], // "╝"  0x255d  BOX DRAWINGS DOUBLE UP AND LEFT
        0xbd => [0xe2, 0x95, 0x9c], // "╜"  0x255c  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
        0xbe => [0xe2, 0x95, 0x9b], // "╛"  0x255b  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
        0xbf => [0xe2, 0x94, 0x90], // "┐"  0x2510  BOX DRAWINGS LIGHT DOWN AND LEFT
        0xc0 => [0xe2, 0x94, 0x94], // "└"  0x2514  BOX DRAWINGS LIGHT UP AND RIGHT
        0xc1 => [0xe2, 0x94, 0xb4], // "┴"  0x2534  BOX DRAWINGS LIGHT UP AND HORIZONTAL
        0xc2 => [0xe2, 0x94, 0xac], // "┬"  0x252c  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
        0xc3 => [0xe2, 0x94, 0x9c], // "├"  0x251c  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
        0xc4 => [0xe2, 0x94, 0x80], // "─"  0x2500  BOX DRAWINGS LIGHT HORIZONTAL
        0xc5 => [0xe2, 0x94, 0xbc], // "┼"  0x253c  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
        0xc6 => [0xe2, 0x95, 0x9e], // "╞"  0x255e  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
        0xc7 => [0xe2, 0x95, 0x9f], // "╟"  0x255f  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
        0xc8 => [0xe2, 0x95, 0x9a], // "╚"  0x255a  BOX DRAWINGS DOUBLE UP AND RIGHT
        0xc9 => [0xe2, 0x95, 0x94], // "╔"  0x2554  BOX DRAWINGS DOUBLE DOWN AND RIGHT
        0xca => [0xe2, 0x95, 0xa9], // "╩"  0x2569  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
        0xcb => [0xe2, 0x95, 0xa6], // "╦"  0x2566  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
        0xcc => [0xe2, 0x95, 0xa0], // "╠"  0x2560  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
        0xcd => [0xe2, 0x95, 0x90], // "═"  0x2550  BOX DRAWINGS DOUBLE HORIZONTAL
        0xce => [0xe2, 0x95, 0xac], // "╬"  0x256c  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
        0xcf => [0xe2, 0x95, 0xb6], // "╶"  0x2567  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
        0xd0 => [0xe2, 0x95, 0xb8], // "╸"  0x2568  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
        0xd1 => [0xe2, 0x95, 0xa4], // "╤"  0x2564  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
        0xd2 => [0xe2, 0x95, 0xa5], // "╥"  0x2565  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
        0xd3 => [0xe2, 0x95, 0x99], // "╙"  0x2559  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
        0xd4 => [0xe2, 0x95, 0x98], // "╘"  0x2558  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
        0xd5 => [0xe2, 0x95, 0x92], // "╒"  0x2552  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
        0xd6 => [0xe2, 0x95, 0x93], // "╓"  0x2553  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
        0xd7 => [0xe2, 0x95, 0xab], // "╫"  0x256b  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
        0xd8 => [0xe2, 0x95, 0xaa], // "╪"  0x256a  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
        0xd9 => [0xe2, 0x94, 0x98], // "┘"  0x2518  BOX DRAWINGS LIGHT UP AND LEFT
        0xda => [0xe2, 0x94, 0x8c], // "┌"  0x250c  BOX DRAWINGS LIGHT DOWN AND RIGHT
        0xdb => [0xe2, 0x96, 0x88], // "█"  0x2588  FULL BLOCK
        0xdc => [0xe2, 0x96, 0x84], // "▄"  0x2584  LOWER HALF BLOCK
        0xdd => [0xe2, 0x96, 0x8c], // "▌"  0x258c  LEFT HALF BLOCK
        0xde => [0xe2, 0x96, 0x90], // "▐"  0x2590  RIGHT HALF BLOCK
        0xdf => [0xe2, 0x96, 0x80], // "▀"  0x2580  UPPER HALF BLOCK
        0xe0 => [0x00, 0xce, 0xb1], // "α"  0x03b1  GREEK SMALL LETTER ALPHA
        0xe1 => [0x00, 0xc3, 0x9f], // "ß"  0x00df  LATIN SMALL LETTER SHARP S
        0xe2 => [0x00, 0xce, 0x93], // "Γ"  0x0393  GREEK CAPITAL LETTER GAMMA
        0xe3 => [0x00, 0xcf, 0x80], // "π"  0x03c0  GREEK SMALL LETTER PI
        0xe4 => [0x00, 0xce, 0xa3], // "Σ"  0x03a3  GREEK CAPITAL LETTER SIGMA
        0xe5 => [0x00, 0xcf, 0x83], // "σ"  0x03c3  GREEK SMALL LETTER SIGMA
        0xe6 => [0x00, 0xc2, 0xb5], // "µ"  0x00b5  MICRO SIGN
        0xe7 => [0x00, 0xcf, 0x84], // "τ"  0x03c4  GREEK SMALL LETTER TAU
        0xe8 => [0x00, 0xce, 0xa6], // "Φ"  0x03a6  GREEK CAPITAL LETTER PHI
        0xe9 => [0x00, 0xce, 0x98], // "Θ"  0x0398  GREEK CAPITAL LETTER THETA
        0xea => [0x00, 0xce, 0xa9], // "Ω"  0x03a9  GREEK CAPITAL LETTER OMEGA
        0xeb => [0x00, 0xce, 0xb4], // "δ"  0x03b4  GREEK SMALL LETTER DELTA
        0xec => [0xe2, 0x88, 0x9e], // "∞"  0x221e  INFINITY
        0xed => [0x00, 0xcf, 0x86], // "φ"  0x03c6  GREEK SMALL LETTER PHI
        0xee => [0x00, 0xce, 0xb5], // "ε"  0x03b5  GREEK SMALL LETTER EPSILON
        0xef => [0xe2, 0x88, 0xa9], // "∩"  0x2229  INTERSECTION
        0xf0 => [0xe2, 0x89, 0xa1], // "≡"  0x2261  IDENTICAL TO
        0xf1 => [0x00, 0xc2, 0xb1], // "±"  0x00b1  PLUS-MINUS SIGN
        0xf2 => [0xe2, 0x89, 0xa5], // "≥"  0x2265  GREATER-THAN OR EQUAL TO
        0xf3 => [0xe2, 0x89, 0xa4], // "≤"  0x2264  LESS-THAN OR EQUAL TO
        0xf4 => [0xe2, 0x8c, 0xa0], // "⌠"  0x2320  TOP HALF INTEGRAL
        0xf5 => [0xe2, 0x8c, 0xa0], // "⌠"  0x2321  BOTTOM HALF INTEGRAL
        0xf6 => [0x00, 0xc3, 0xb7], // "÷"  0x00f7  DIVISION SIGN
        0xf7 => [0xe2, 0x89, 0x88], // "≈"  0x2248  ALMOST EQUAL TO
        0xf8 => [0x00, 0xc2, 0xb0], // "°"  0x00b0  DEGREE SIGN
        0xf9 => [0xe2, 0x88, 0x99], // "∙"  0x2219  BULLET OPERATOR
        0xfa => [0x00, 0xc2, 0xb7], // "·"  0x00b7  MIDDLE DOT
        0xfb => [0xe2, 0x88, 0x9a], // "√"  0x221a  SQUARE ROOT
        0xfc => [0xe2, 0x81, 0xbf], // "ⁿ"  0x207f  SUPERSCRIPT LATIN SMALL LETTER N
        0xfd => [0x00, 0xc2, 0xb2], // "²"  0x00b2  SUPERSCRIPT TWO
        0xfe => [0xe2, 0x96, 0xa0], // "■"  0x25a0  BLACK SQUARE
        0xff => [0x00, 0x00, 0x20], // " "  0x00a0  NO-BREAK SPACE
                                     // _ => unreachable!()
    }
}

// UTF-16 by accident :(
// pub fn convert_byte_to_byte(b : &u8) -> [u8; 2] {
// 	match *b {
// 		0x00 => [0x00,0x00], //	" "	 0x0000  NULL
// 		0x01 => [0x00,0x01], //	" "	 0x0001  Start of Heading
// 		0x02 => [0x00,0x02], //	" "	 0x0002  Start of Text
// 		0x03 => [0x00,0x03], //	" "	 0x0003  End of Text
// 		0x04 => [0x00,0x04], //	" "	 0x0004  End of Transmission
// 		0x05 => [0x00,0x20], //	" "	 0x0005  ENQUIRY
// 		0x06 => [0x00,0x20], //	" "	 0x0006  ACKNOWLEDGE
// 		0x07 => [0x00,0x20], //	" "	 0x0007  BELL
// 		0x08 => [0x00,0x20], //	" "	 0x0008  BACKSPACE
// 		0x09 => [0x00,0x09], // "\t" 0x0009  HORIZONTAL TABULATION
// 		0x0a => [0x00,0x0a], // "\n" 0x000a  LINE FEED
// 		0x0b => [0x00,0x20], //	" "	 0x000b  VERTICAL TABULATION
// 		0x0c => [0x00,0x20], //	" "	 0x000c  FORM FEED
// 		0x0d => [0x00,0x20], //	" "	 0x000d  CARRIAGE RETURN
// 		0x0e => [0x00,0x20], //	" "	 0x000e  SHIFT OUT
// 		0x0f => [0x00,0x20], //	" "	 0x000f  SHIFT IN
// 		0x10 => [0x00,0x20], //	" "	 0x0010  DATA LINK ESCAPE
// 		0x11 => [0x00,0x20], //	" "	 0x0011  DEVICE CONTROL ONE
// 		0x12 => [0x00,0x20], //	" "	 0x0012  DEVICE CONTROL TWO
// 		0x13 => [0x00,0x20], //	" "	 0x0013  DEVICE CONTROL THREE
// 		0x14 => [0x00,0x20], //	" "	 0x0014  DEVICE CONTROL FOUR
// 		0x15 => [0x00,0x20], //	" "	 0x0015  NEGATIVE ACKNOWLEDGE
// 		0x16 => [0x00,0x20], //	" "	 0x0016  SYNCHRONOUS IDLE
// 		0x17 => [0x00,0x20], //	" "	 0x0017  END OF TRANSMISSION BLOCK
// 		0x18 => [0x00,0x20], //	" "	 0x0018  CANCEL
// 		0x19 => [0x00,0x20], //	" "	 0x0019  END OF MEDIUM
// 		0x1a => [0x00,0x20], //	" "	 0x001a  SUBSTITUTE
// 		0x1b => [0x00,0x20], //	" "	 0x001b  ESCAPE
// 		0x1c => [0x00,0x20], //	" "	 0x001c  FILE SEPARATOR
// 		0x1d => [0x00,0x20], //	" "	 0x001d  GROUP SEPARATOR
// 		0x1e => [0x00,0x20], //	" "	 0x001e  RECORD SEPARATOR
// 		0x1f => [0x00,0x20], //	" "	 0x001f  UNIT SEPARATOR
// 		0x20 => [0x00,0x20], //	" "	 0x0020  SPACE
// 		0x21 => [0x00,0x21], //	"!"	 0x0021  EXCLAMATION MARK
// 		0x22 => [0x00,0x22], //	"\"" 0x0022  QUOTATION MARK
// 		0x23 => [0x00,0x23], //	"#"  0x0023  NUMBER SIGN
// 		0x24 => [0x00,0x24], //	"$"  0x0024  DOLLAR SIGN
// 		0x25 => [0x00,0x25], //	"%"  0x0025  PERCENT SIGN
// 		0x26 => [0x00,0x26], //	"&"  0x0026  AMPERSAND
// 		0x27 => [0x00,0x27], //	"'"  0x0027  APOSTROPHE
// 		0x28 => [0x00,0x28], //	"("  0x0028  LEFT PARENTHESIS
// 		0x29 => [0x00,0x29], //	")"  0x0029  RIGHT PARENTHESIS
// 		0x2a => [0x00,0x2a], //	"*"  0x002a  ASTERISK
// 		0x2b => [0x00,0x2b], //	"+"  0x002b  PLUS SIGN
// 		0x2c => [0x00,0x2c], //	","  0x002c  COMMA
// 		0x2d => [0x00,0x2d], //	"-"  0x002d  HYPHEN-MINUS
// 		0x2e => [0x00,0x2e], //	"."  0x002e  FULL STOP
// 		0x2f => [0x00,0x2f], //	"/"  0x002f  SOLIDUS
// 		0x30 => [0x00,0x30], //	"0"  0x0030  DIGIT ZERO
// 		0x31 => [0x00,0x31], //	"1"  0x0031  DIGIT ONE
// 		0x32 => [0x00,0x32], //	"2"  0x0032  DIGIT TWO
// 		0x33 => [0x00,0x33], //	"3"  0x0033  DIGIT THREE
// 		0x34 => [0x00,0x34], //	"4"  0x0034  DIGIT FOUR
// 		0x35 => [0x00,0x35], //	"5"  0x0035  DIGIT FIVE
// 		0x36 => [0x00,0x36], //	"6"  0x0036  DIGIT SIX
// 		0x37 => [0x00,0x37], //	"7"  0x0037  DIGIT SEVEN
// 		0x38 => [0x00,0x38], //	"8"  0x0038  DIGIT EIGHT
// 		0x39 => [0x00,0x39], //	"9"  0x0039  DIGIT NINE
// 		0x3a => [0x00,0x3a], //	":"  0x003a  COLON
// 		0x3b => [0x00,0x3b], //	";"  0x003b  SEMICOLON
// 		0x3c => [0x00,0x3c], //	"<"  0x003c  LESS-THAN SIGN
// 		0x3d => [0x00,0x3d], //	"="  0x003d  EQUALS SIGN
// 		0x3e => [0x00,0x3e], //	">"  0x003e  GREATER-THAN SIGN
// 		0x3f => [0x00,0x3f], //	"?"  0x003f  QUESTION MARK
// 		0x40 => [0x00,0x40], //	"@"  0x0040  COMMERCIAL AT
// 		0x41 => [0x00,0x41], //	"A"  0x0041  LATIN CAPITAL LETTER A
// 		0x42 => [0x00,0x42], //	"B"  0x0042  LATIN CAPITAL LETTER B
// 		0x43 => [0x00,0x43], //	"C"  0x0043  LATIN CAPITAL LETTER C
// 		0x44 => [0x00,0x44], //	"D"  0x0044  LATIN CAPITAL LETTER D
// 		0x45 => [0x00,0x45], //	"E"  0x0045  LATIN CAPITAL LETTER E
// 		0x46 => [0x00,0x46], //	"F"  0x0046  LATIN CAPITAL LETTER F
// 		0x47 => [0x00,0x47], //	"G"  0x0047  LATIN CAPITAL LETTER G
// 		0x48 => [0x00,0x48], //	"H"  0x0048  LATIN CAPITAL LETTER H
// 		0x49 => [0x00,0x49], //	"I"  0x0049  LATIN CAPITAL LETTER I
// 		0x4a => [0x00,0x4a], //	"J"  0x004a  LATIN CAPITAL LETTER J
// 		0x4b => [0x00,0x4b], //	"K"  0x004b  LATIN CAPITAL LETTER K
// 		0x4c => [0x00,0x4c], //	"L"  0x004c  LATIN CAPITAL LETTER L
// 		0x4d => [0x00,0x4d], //	"M"  0x004d  LATIN CAPITAL LETTER M
// 		0x4e => [0x00,0x4e], //	"N"  0x004e  LATIN CAPITAL LETTER N
// 		0x4f => [0x00,0x4f], //	"O"  0x004f  LATIN CAPITAL LETTER O
// 		0x50 => [0x00,0x50], //	"P"  0x0050  LATIN CAPITAL LETTER P
// 		0x51 => [0x00,0x51], //	"Q"  0x0051  LATIN CAPITAL LETTER Q
// 		0x52 => [0x00,0x52], //	"R"  0x0052  LATIN CAPITAL LETTER R
// 		0x53 => [0x00,0x53], //	"S"  0x0053  LATIN CAPITAL LETTER S
// 		0x54 => [0x00,0x54], //	"T"  0x0054  LATIN CAPITAL LETTER T
// 		0x55 => [0x00,0x55], //	"U"  0x0055  LATIN CAPITAL LETTER U
// 		0x56 => [0x00,0x56], //	"V"  0x0056  LATIN CAPITAL LETTER V
// 		0x57 => [0x00,0x57], //	"W"  0x0057  LATIN CAPITAL LETTER W
// 		0x58 => [0x00,0x58], //	"X"  0x0058  LATIN CAPITAL LETTER X
// 		0x59 => [0x00,0x59], //	"Y"  0x0059  LATIN CAPITAL LETTER Y
// 		0x5a => [0x00,0x5a], //	"Z"  0x005a  LATIN CAPITAL LETTER Z
// 		0x5b => [0x00,0x5b], //	"["  0x005b  LEFT SQUARE BRACKET
// 		0x5c => [0x00,0x5c], //	"\\" 0x005c  REVERSE SOLIDUS
// 		0x5d => [0x00,0x5d], //	"]"  0x005d  RIGHT SQUARE BRACKET
// 		0x5e => [0x00,0x5e], //	"^"  0x005e  CIRCUMFLEX ACCENT
// 		0x5f => [0x00,0x5f], //	"_"  0x005f  LOW LINE
// 		0x60 => [0x00,0x60], //	"`"  0x0060  GRAVE ACCENT
// 		0x61 => [0x00,0x61], //	"a"  0x0061  LATIN SMALL LETTER A
// 		0x62 => [0x00,0x62], //	"b"  0x0062  LATIN SMALL LETTER B
// 		0x63 => [0x00,0x63], //	"c"  0x0063  LATIN SMALL LETTER C
// 		0x64 => [0x00,0x64], //	"d"  0x0064  LATIN SMALL LETTER D
// 		0x65 => [0x00,0x65], //	"e"  0x0065  LATIN SMALL LETTER E
// 		0x66 => [0x00,0x66], //	"f"  0x0066  LATIN SMALL LETTER F
// 		0x67 => [0x00,0x67], //	"g"  0x0067  LATIN SMALL LETTER G
// 		0x68 => [0x00,0x68], //	"h"  0x0068  LATIN SMALL LETTER H
// 		0x69 => [0x00,0x69], //	"i"  0x0069  LATIN SMALL LETTER I
// 		0x6a => [0x00,0x6a], //	"j"  0x006a  LATIN SMALL LETTER J
// 		0x6b => [0x00,0x6b], //	"k"  0x006b  LATIN SMALL LETTER K
// 		0x6c => [0x00,0x6c], //	"l"  0x006c  LATIN SMALL LETTER L
// 		0x6d => [0x00,0x6d], //	"m"  0x006d  LATIN SMALL LETTER M
// 		0x6e => [0x00,0x6e], //	"n"  0x006e  LATIN SMALL LETTER N
// 		0x6f => [0x00,0x6f], //	"o"  0x006f  LATIN SMALL LETTER O
// 		0x70 => [0x00,0x70], //	"p"  0x0070  LATIN SMALL LETTER P
// 		0x71 => [0x00,0x71], //	"q"  0x0071  LATIN SMALL LETTER Q
// 		0x72 => [0x00,0x72], //	"r"  0x0072  LATIN SMALL LETTER R
// 		0x73 => [0x00,0x73], //	"s"  0x0073  LATIN SMALL LETTER S
// 		0x74 => [0x00,0x74], //	"t"  0x0074  LATIN SMALL LETTER T
// 		0x75 => [0x00,0x75], //	"u"  0x0075  LATIN SMALL LETTER U
// 		0x76 => [0x00,0x76], //	"v"  0x0076  LATIN SMALL LETTER V
// 		0x77 => [0x00,0x77], //	"w"  0x0077  LATIN SMALL LETTER W
// 		0x78 => [0x00,0x78], //	"x"  0x0078  LATIN SMALL LETTER X
// 		0x79 => [0x00,0x79], //	"y"  0x0079  LATIN SMALL LETTER Y
// 		0x7a => [0x00,0x7a], //	"z"  0x007a  LATIN SMALL LETTER Z
// 		0x7b => [0x00,0x7b], //	"{"  0x007b  LEFT CURLY BRACKET
// 		0x7c => [0x00,0x7c], //	"|"  0x007c  VERTICAL LINE
// 		0x7d => [0x00,0x7d], //	"}"  0x007d  RIGHT CURLY BRACKET
// 		0x7e => [0x00,0x7e], //	"~"  0x007e  TILDE
// 		0x7f => [0x23,0x02], // "⌂"  0x007f  HOUSE
// 		0x80 => [0x00,0xc7], //	"Ç"  0x00c7  LATIN CAPITAL LETTER C WITH CEDILLA
// 		0x81 => [0x00,0xfc], //	"ü"  0x00fc  LATIN SMALL LETTER U WITH DIAERESIS
// 		0x82 => [0x00,0xe9], //	"é"  0x00e9  LATIN SMALL LETTER E WITH ACUTE
// 		0x83 => [0x00,0xe2], //	"â"  0x00e2  LATIN SMALL LETTER A WITH CIRCUMFLEX
// 		0x84 => [0x00,0xe4], //	"ä"  0x00e4  LATIN SMALL LETTER A WITH DIAERESIS
// 		0x85 => [0x00,0xe0], //	"à"  0x00e0  LATIN SMALL LETTER A WITH GRAVE
// 		0x86 => [0x00,0xe5], //	"å"  0x00e5  LATIN SMALL LETTER A WITH RING ABOVE
// 		0x87 => [0x00,0xe7], //	"ç"  0x00e7  LATIN SMALL LETTER C WITH CEDILLA
// 		0x88 => [0x00,0xea], //	"ê"  0x00ea  LATIN SMALL LETTER E WITH CIRCUMFLEX
// 		0x89 => [0x00,0xeb], //	"ë"  0x00eb  LATIN SMALL LETTER E WITH DIAERESIS
// 		0x8a => [0x00,0xe8], //	"è"  0x00e8  LATIN SMALL LETTER E WITH GRAVE
// 		0x8b => [0x00,0xef], //	"ï"  0x00ef  LATIN SMALL LETTER I WITH DIAERESIS
// 		0x8c => [0x00,0xee], //	"î"  0x00ee  LATIN SMALL LETTER I WITH CIRCUMFLEX
// 		0x8d => [0x00,0xec], //	"ì"  0x00ec  LATIN SMALL LETTER I WITH GRAVE
// 		0x8e => [0x00,0xc4], //	"Ä"  0x00c4  LATIN CAPITAL LETTER A WITH DIAERESIS
// 		0x8f => [0x00,0xc5], //	"Å"  0x00c5  LATIN CAPITAL LETTER A WITH RING ABOVE
// 		0x90 => [0x00,0xc9], //	"É"  0x00c9  LATIN CAPITAL LETTER E WITH ACUTE
// 		0x91 => [0x00,0xe6], //	"æ"  0x00e6  LATIN SMALL LIGATURE AE
// 		0x92 => [0x00,0xc6], //	"Æ"  0x00c6  LATIN CAPITAL LIGATURE AE
// 		0x93 => [0x00,0xf4], //	"ô"  0x00f4  LATIN SMALL LETTER O WITH CIRCUMFLEX
// 		0x94 => [0x00,0xf6], //	"ö"  0x00f6  LATIN SMALL LETTER O WITH DIAERESIS
// 		0x95 => [0x00,0xf2], //	"ò"  0x00f2  LATIN SMALL LETTER O WITH GRAVE
// 		0x96 => [0x00,0xfb], //	"û"  0x00fb  LATIN SMALL LETTER U WITH CIRCUMFLEX
// 		0x97 => [0x00,0xf9], //	"ù"  0x00f9  LATIN SMALL LETTER U WITH GRAVE
// 		0x98 => [0x00,0xff], //	"ÿ"  0x00ff  LATIN SMALL LETTER Y WITH DIAERESIS
// 		0x99 => [0x00,0xd6], //	"Ö"  0x00d6  LATIN CAPITAL LETTER O WITH DIAERESIS
// 		0x9a => [0x00,0xdc], //	"Ü"  0x00dc  LATIN CAPITAL LETTER U WITH DIAERESIS
// 		0x9b => [0x00,0xa2], //	"¢"  0x00a2  CENT SIGN
// 		0x9c => [0x00,0xa3], //	"£"  0x00a3  POUND SIGN
// 		0x9d => [0x00,0xa5], //	"¥"  0x00a5  YEN SIGN
// 		0x9e => [0x20,0xa7], //	"₧"  0x20a7  PESETA SIGN
// 		0x9f => [0x01,0x92], //	"ƒ"  0x0192  LATIN SMALL LETTER F WITH HOOK
// 		0xa0 => [0x00,0xe1], //	"á"  0x00e1  LATIN SMALL LETTER A WITH ACUTE
// 		0xa1 => [0x00,0xed], //	"í"  0x00ed  LATIN SMALL LETTER I WITH ACUTE
// 		0xa2 => [0x00,0xf3], //	"ó"  0x00f3  LATIN SMALL LETTER O WITH ACUTE
// 		0xa3 => [0x00,0xfa], //	"ú"  0x00fa  LATIN SMALL LETTER U WITH ACUTE
// 		0xa4 => [0x00,0xf1], //	"ñ"  0x00f1  LATIN SMALL LETTER N WITH TILDE
// 		0xa5 => [0x00,0xd1], //	"Ñ"  0x00d1  LATIN CAPITAL LETTER N WITH TILDE
// 		0xa6 => [0x00,0xaa], //	"ª"  0x00aa  FEMININE ORDINAL INDICATOR
// 		0xa7 => [0x00,0xba], //	"º"  0x00ba  MASCULINE ORDINAL INDICATOR
// 		0xa8 => [0x00,0xbf], //	"¿"  0x00bf  INVERTED QUESTION MARK
// 		0xa9 => [0x23,0x10], //	"⌐"  0x2310  REVERSED NOT SIGN
// 		0xaa => [0x00,0xac], //	"¬"  0x00ac  NOT SIGN
// 		0xab => [0x00,0xbd], //	"½"  0x00bd  VULGAR FRACTION ONE HALF
// 		0xac => [0x00,0xbc], //	"¼"  0x00bc  VULGAR FRACTION ONE QUARTER
// 		0xad => [0x00,0xa1], //	"¡"  0x00a1  INVERTED EXCLAMATION MARK
// 		0xae => [0x00,0xab], //	"«"  0x00ab  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// 		0xaf => [0x00,0xbb], //	"»"  0x00bb  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
// 		0xb0 => [0x25,0x91], //	"░"  0x2591  LIGHT SHADE
// 		0xb1 => [0x25,0x92], //	"▒"  0x2592  MEDIUM SHADE
// 		0xb2 => [0x25,0x93], //	"▓"  0x2593  DARK SHADE
// 		0xb3 => [0x25,0x02], //	"│"  0x2502  BOX DRAWINGS LIGHT VERTICAL
// 		0xb4 => [0x25,0x24], //	"┤"  0x2524  BOX DRAWINGS LIGHT VERTICAL AND LEFT
// 		0xb5 => [0x25,0x61], //	"╡"  0x2561  BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
// 		0xb6 => [0x25,0x62], //	"╢"  0x2562  BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
// 		0xb7 => [0x25,0x56], //	"╖"  0x2556  BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
// 		0xb8 => [0x25,0x55], //	"╕"  0x2555  BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
// 		0xb9 => [0x25,0x63], //	"╣"  0x2563  BOX DRAWINGS DOUBLE VERTICAL AND LEFT
// 		0xba => [0x25,0x51], //	"║"  0x2551  BOX DRAWINGS DOUBLE VERTICAL
// 		0xbb => [0x25,0x57], //	"╗"  0x2557  BOX DRAWINGS DOUBLE DOWN AND LEFT
// 		0xbc => [0x25,0x5d], //	"╝"  0x255d  BOX DRAWINGS DOUBLE UP AND LEFT
// 		0xbd => [0x25,0x5c], //	"╜"  0x255c  BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
// 		0xbe => [0x25,0x5b], //	"╛"  0x255b  BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
// 		0xbf => [0x25,0x10], //	"┐"  0x2510  BOX DRAWINGS LIGHT DOWN AND LEFT
// 		0xc0 => [0x25,0x14], //	"└"  0x2514  BOX DRAWINGS LIGHT UP AND RIGHT
// 		0xc1 => [0x25,0x34], //	"┴"  0x2534  BOX DRAWINGS LIGHT UP AND HORIZONTAL
// 		0xc2 => [0x25,0x2c], //	"┬"  0x252c  BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
// 		0xc3 => [0x25,0x1c], //	"├"  0x251c  BOX DRAWINGS LIGHT VERTICAL AND RIGHT
// 		0xc4 => [0x25,0x00], //	"─"  0x2500  BOX DRAWINGS LIGHT HORIZONTAL
// 		0xc5 => [0x25,0x3c], //	"┼"  0x253c  BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
// 		0xc6 => [0x25,0x5e], //	"╞"  0x255e  BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
// 		0xc7 => [0x25,0x5f], //	"╟"  0x255f  BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
// 		0xc8 => [0x25,0x5a], //	"╚"  0x255a  BOX DRAWINGS DOUBLE UP AND RIGHT
// 		0xc9 => [0x25,0x54], //	"╔"  0x2554  BOX DRAWINGS DOUBLE DOWN AND RIGHT
// 		0xca => [0x25,0x69], //	"╩"  0x2569  BOX DRAWINGS DOUBLE UP AND HORIZONTAL
// 		0xcb => [0x25,0x66], //	"╦"  0x2566  BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
// 		0xcc => [0x25,0x60], //	"╠"  0x2560  BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
// 		0xcd => [0x25,0x50], //	"═"  0x2550  BOX DRAWINGS DOUBLE HORIZONTAL
// 		0xce => [0x25,0x6c], //	"╬"  0x256c  BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
// 		0xcf => [0x25,0x67], //	"╶"  0x2567  BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
// 		0xd0 => [0x25,0x68], //	"╸"  0x2568  BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
// 		0xd1 => [0x25,0x64], //	"╤"  0x2564  BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
// 		0xd2 => [0x25,0x65], //	"╥"  0x2565  BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
// 		0xd3 => [0x25,0x59], //	"╙"  0x2559  BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
// 		0xd4 => [0x25,0x58], //	"╘"  0x2558  BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
// 		0xd5 => [0x25,0x52], //	"╒"  0x2552  BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
// 		0xd6 => [0x25,0x53], //	"╓"  0x2553  BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
// 		0xd7 => [0x25,0x6b], //	"╫"  0x256b  BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
// 		0xd8 => [0x25,0x6a], //	"╪"  0x256a  BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
// 		0xd9 => [0x25,0x18], //	"┘"  0x2518  BOX DRAWINGS LIGHT UP AND LEFT
// 		0xda => [0x25,0x0c], //	"┌"  0x250c  BOX DRAWINGS LIGHT DOWN AND RIGHT
// 		0xdb => [0x25,0x88], //	"█"  0x2588  FULL BLOCK
// 		0xdc => [0x25,0x84], //	"▄"  0x2584  LOWER HALF BLOCK
// 		0xdd => [0x25,0x8c], //	"▌"  0x258c  LEFT HALF BLOCK
// 		0xde => [0x25,0x90], //	"▐"  0x2590  RIGHT HALF BLOCK
// 		0xdf => [0x25,0x80], //	"▀"  0x2580  UPPER HALF BLOCK
// 		0xe0 => [0x03,0xb1], //	"α"  0x03b1  GREEK SMALL LETTER ALPHA
// 		0xe1 => [0x03,0xdf], //	"ß"  0x00df  LATIN SMALL LETTER SHARP S
// 		0xe2 => [0x03,0x93], //	"Γ"  0x0393  GREEK CAPITAL LETTER GAMMA
// 		0xe3 => [0x03,0xc0], //	"π"  0x03c0  GREEK SMALL LETTER PI
// 		0xe4 => [0x03,0xa3], //	"Σ"  0x03a3  GREEK CAPITAL LETTER SIGMA
// 		0xe5 => [0x03,0xc3], //	"σ"  0x03c3  GREEK SMALL LETTER SIGMA
// 		0xe6 => [0x03,0xb5], //	"µ"  0x00b5  MICRO SIGN
// 		0xe7 => [0x03,0xc4], //	"τ"  0x03c4  GREEK SMALL LETTER TAU
// 		0xe8 => [0x03,0xa6], //	"Φ"  0x03a6  GREEK CAPITAL LETTER PHI
// 		0xe9 => [0x03,0x98], //	"Θ"  0x0398  GREEK CAPITAL LETTER THETA
// 		0xea => [0x03,0xa9], //	"Ω"  0x03a9  GREEK CAPITAL LETTER OMEGA
// 		0xeb => [0x03,0xb4], //	"δ"  0x03b4  GREEK SMALL LETTER DELTA
// 		0xec => [0x22,0x1e], //	"∞"  0x221e  INFINITY
// 		0xed => [0x03,0xc6], //	"φ"  0x03c6  GREEK SMALL LETTER PHI
// 		0xee => [0x03,0xb5], //	"ε"  0x03b5  GREEK SMALL LETTER EPSILON
// 		0xef => [0x22,0x29], //	"∩"  0x2229  INTERSECTION
// 		0xf0 => [0x22,0x61], //	"≡"  0x2261  IDENTICAL TO
// 		0xf1 => [0x00,0xb1], //	"±"  0x00b1  PLUS-MINUS SIGN
// 		0xf2 => [0x22,0x65], //	"≥"  0x2265  GREATER-THAN OR EQUAL TO
// 		0xf3 => [0x22,0x64], //	"≤"  0x2264  LESS-THAN OR EQUAL TO
// 		0xf4 => [0x23,0x20], //	"⌠"  0x2320  TOP HALF INTEGRAL
// 		0xf5 => [0x23,0x21], //	"⌠"  0x2321  BOTTOM HALF INTEGRAL
// 		0xf6 => [0x00,0xf7], //	"÷"  0x00f7  DIVISION SIGN
// 		0xf7 => [0x22,0x48], //	"≈"  0x2248  ALMOST EQUAL TO
// 		0xf8 => [0x00,0xb0], //	"°"  0x00b0  DEGREE SIGN
// 		0xf9 => [0x22,0x19], //	"∙"  0x2219  BULLET OPERATOR
// 		0xfa => [0x00,0xb7], //	"·"  0x00b7  MIDDLE DOT
// 		0xfb => [0x22,0x1a], //	"√"  0x221a  SQUARE ROOT
// 		0xfc => [0x20,0x7f], //	"ⁿ"  0x207f  SUPERSCRIPT LATIN SMALL LETTER N
// 		0xfd => [0x00,0xb2], //	"²"  0x00b2  SUPERSCRIPT TWO
// 		0xfe => [0x25,0xa0], //	"■"  0x25a0  BLACK SQUARE
// 		0xff => [0x00,0x20], //	" "  0x00a0  NO-BREAK SPACE
// 		// _ => unreachable!()
// 	}
// }