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
|
#!/usr/bin/perl -w
%atascii = (
0 => "♥",
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 => "→",
34 => "\\\"",
92 => "\\\\",
96 => "◆",
123 => "♠",
125 => "↰",
126 => "◀",
127 => "▶",
);
%xl = (
0 => "á",
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 => "→",
34 => "\\\"",
92 => "\\\\",
96 => "¡",
123 => "Ä",
125 => "↰",
126 => "◀",
127 => "▶",
);
sub getcharname {
my $c = shift;
if($c == 127) {
return "[del]";
} elsif($c < 32) {
return "^" . chr($c + 64);
} else {
return chr($c);
}
}
sub mktable {
my ($name, $hash) = @_;
print "const char *$name\[\] = {\n";
for (0..127) {
my $cmt = sprintf("/* %3d \$%02x %5s */", $_, $_, getcharname($_));
print "\t\"" . ($hash->{$_} || chr($_)), "\", $cmt\n";
}
print "};\n\n";
}
print <<EOF;
/* ATASCII to UTF-8 tables. Generated by mkatables.pl.
Do not edit this file; edit mkatables.pl instead. */
EOF
mktable("ata2utf", \%atascii);
mktable("ics2utf", \%xl);
|