1 | #!/opt/bin/perl |
1 | #!/opt/bin/perl |
2 | |
2 | |
3 | # the generated tables mostly have NOT been checked so far! |
3 | # the generated tables mostly have NOT been checked so far! |
|
|
4 | |
|
|
5 | # apt install libencode-hanextra-perl libencode-jis2k-perl |
4 | |
6 | |
5 | use v5.8.2; |
7 | use v5.8.2; |
6 | use utf8; |
8 | use utf8; |
7 | use Encode; |
9 | use Encode; |
8 | use Encode::JP; |
10 | use Encode::JP; |
… | |
… | |
93 | $fun .= sprintf "if (· == 0x%04x) return 0x%04x;\n", $b + $_, $enc->[$b + $_]; |
95 | $fun .= sprintf "if (· == 0x%04x) return 0x%04x;\n", $b + $_, $enc->[$b + $_]; |
94 | } |
96 | } |
95 | } elsif (linear $enc, $b + $l, $b + $h, $enc->[$b + $l]) { |
97 | } elsif (linear $enc, $b + $l, $b + $h, $enc->[$b + $l]) { |
96 | my $dif = $enc->[$b + $l] - ($b + $l); |
98 | my $dif = $enc->[$b + $l] - ($b + $l); |
97 | $dif = $dif < 0 ? sprintf "- 0x%04x", -$dif : sprintf "+ 0x%04x", $dif; |
99 | $dif = $dif < 0 ? sprintf "- 0x%04x", -$dif : sprintf "+ 0x%04x", $dif; |
98 | $fun .= sprintf "if (· <= 0x%04x && 0x%04x <= ·) return · %s;\n", $b + $l, $b + $h, $dif; |
100 | $fun .= sprintf "if (· >= 0x%04x && 0x%04x >= ·) return · %s;\n", $b + $l, $b + $h, $dif; |
99 | } elsif ($map2[$p] <= 5) { # defunct |
101 | } elsif ($map2[$p] <= 5) { # defunct |
100 | $fun .= "switch (·)\n {\n"; |
102 | $fun .= "switch (·)\n {\n"; |
101 | for ($l .. $h) { |
103 | for ($l .. $h) { |
102 | next unless defined $enc->[$b + $_]; |
104 | next unless defined $enc->[$b + $_]; |
103 | $fun .= sprintf " case 0x%04x: return 0x%04x;\n", $b + $_, $enc->[$b + $_]; |
105 | $fun .= sprintf " case 0x%04x: return 0x%04x;\n", $b + $_, $enc->[$b + $_]; |