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; |
|
|
10 | use Encode::JP; |
|
|
11 | use Encode::CN; |
|
|
12 | use Encode::KR; |
|
|
13 | use Encode::HanExtra; |
|
|
14 | use Encode::JIS2K; |
8 | |
15 | |
9 | my $gen; |
16 | my $gen; |
10 | |
17 | |
11 | $TO_UNICODE = 0; # also generate to_unicode tables |
18 | $TO_UNICODE = 0; # also generate to_unicode tables |
12 | |
19 | |
… | |
… | |
88 | $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 + $_]; |
89 | } |
96 | } |
90 | } elsif (linear $enc, $b + $l, $b + $h, $enc->[$b + $l]) { |
97 | } elsif (linear $enc, $b + $l, $b + $h, $enc->[$b + $l]) { |
91 | my $dif = $enc->[$b + $l] - ($b + $l); |
98 | my $dif = $enc->[$b + $l] - ($b + $l); |
92 | $dif = $dif < 0 ? sprintf "- 0x%04x", -$dif : sprintf "+ 0x%04x", $dif; |
99 | $dif = $dif < 0 ? sprintf "- 0x%04x", -$dif : sprintf "+ 0x%04x", $dif; |
93 | $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; |
94 | } elsif ($map2[$p] <= 5) { # defunct |
101 | } elsif ($map2[$p] <= 5) { # defunct |
95 | $fun .= "switch (·)\n {\n"; |
102 | $fun .= "switch (·)\n {\n"; |
96 | for ($l .. $h) { |
103 | for ($l .. $h) { |
97 | next unless defined $enc->[$b + $_]; |
104 | next unless defined $enc->[$b + $_]; |
98 | $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 + $_]; |
… | |
… | |
234 | // AUTOMATICALLLY GENERATED by gentables |
241 | // AUTOMATICALLLY GENERATED by gentables |
235 | // |
242 | // |
236 | #ifdef ENCODING_$group |
243 | #ifdef ENCODING_$group |
237 | |
244 | |
238 | $tab1$tab2 |
245 | $tab1$tab2 |
239 | struct rxvt_codeset_conv_$base : rxvt_codeset_conv { |
|
|
240 | uint32_t from_unicode (unicode_t unicode) const { |
246 | static uint32_t cs_$base\_from_unicode (unicode_t unicode) { |
241 | $fun1 } |
247 | $fun1} |
242 | EOF |
248 | EOF |
243 | |
249 | |
244 | if ($TO_UNICODE) { |
250 | if ($TO_UNICODE) { |
245 | print OUT <<EOF |
251 | print OUT <<EOF |
246 | #if ENCODING_TO_UNICODE |
252 | #if ENCODING_TO_UNICODE |
247 | unicode_t to_unicode (uint32_t enc) const { |
253 | static unicode_t cs_$base\_to_unicode (uint32_t enc) { |
248 | $fun2 } |
254 | $fun2} |
249 | #endif |
255 | #endif |
250 | EOF |
256 | EOF |
251 | } |
257 | } |
252 | |
258 | |
253 | print OUT <<EOF; |
259 | print OUT <<EOF; |
254 | } rxvt_codeset_conv_$base; |
|
|
255 | |
260 | |
256 | #else |
261 | #else |
257 | |
262 | |
258 | #define rxvt_codeset_conv_$base rxvt_codeset_conv_unknown |
263 | #define cs_$base\_from_unicode cs_unknown_from_unicode |
|
|
264 | #define cs_$base\_to_unicode cs_unknown_to_unicode |
259 | |
265 | |
260 | #endif |
266 | #endif |
261 | EOF |
267 | EOF |
262 | |
268 | |
263 | close OUT; |
269 | close OUT; |
264 | } |
270 | } |
265 | |
271 | |
266 | __DATA__ |
272 | __DATA__ |
267 | VN viscii viscii |
273 | VN viscii viscii |
268 | KR ksc5601_1987_0 ksc5601-raw |
274 | KR ksc5601_1987_0 ksc5601-raw |
269 | CN gb2312_1980_0 gb2312-raw |
275 | ZH gb2312_1980_0 gb2312-raw |
|
|
276 | ZH gbk_0 gbk |
270 | CN_EXT cns11643_1992_1 cns11643-1 |
277 | ZH_EXT cns11643_1992_1 cns11643-1 |
271 | CN_EXT cns11643_1992_2 cns11643-2 |
278 | ZH_EXT cns11643_1992_2 cns11643-2 |
272 | CN_EXT cns11643_1992_3 cns11643-3 |
279 | ZH_EXT cns11643_1992_3 cns11643-3 |
273 | CN_EXT cns11643_1992_4 cns11643-4 |
280 | ZH_EXT cns11643_1992_4 cns11643-4 |
274 | CN_EXT cns11643_1992_5 cns11643-5 |
281 | ZH_EXT cns11643_1992_5 cns11643-5 |
275 | CN_EXT cns11643_1992_6 cns11643-6 |
282 | ZH_EXT cns11643_1992_6 cns11643-6 |
276 | CN_EXT cns11643_1992_7 cns11643-7 |
283 | ZH_EXT cns11643_1992_7 cns11643-7 |
277 | CN_EXT cns11643_1992_f cns11643-f |
284 | ZH_EXT cns11643_1992_f cns11643-f |
278 | CN big5 big5 |
285 | ZH big5 big5 |
279 | CN_EXT big5_ext big5ext |
286 | ZH_EXT big5_ext big5ext |
280 | CN_EXT big5_plus big5plus |
287 | ZH_EXT big5_plus big5plus |
281 | EU koi8_r koi8-r |
288 | EU koi8_r koi8-r |
282 | EU koi8_u koi8-u |
289 | EU koi8_u koi8-u |
283 | DEFAULT iso8859_1 iso-8859-1 |
290 | DEFAULT iso8859_1 iso-8859-1 |
284 | EU iso8859_2 iso-8859-2 |
291 | EU iso8859_2 iso-8859-2 |
285 | EU iso8859_3 iso-8859-3 |
292 | EU iso8859_3 iso-8859-3 |
… | |
… | |
290 | EU iso8859_8 iso-8859-8 |
297 | EU iso8859_8 iso-8859-8 |
291 | EU iso8859_9 iso-8859-9 |
298 | EU iso8859_9 iso-8859-9 |
292 | EU iso8859_10 iso-8859-10 |
299 | EU iso8859_10 iso-8859-10 |
293 | EU iso8859_11 iso-8859-11 |
300 | EU iso8859_11 iso-8859-11 |
294 | EU iso8859_13 iso-8859-13 |
301 | EU iso8859_13 iso-8859-13 |
295 | EU iso8859_14 iso-8859-14 |
302 | EU iso8859_14 iso-8859-14 |
296 | DEFAULT iso8859_15 iso-8859-15 |
303 | DEFAULT iso8859_15 iso-8859-15 |
297 | EU iso8859_16 iso-8859-16 |
304 | EU iso8859_16 iso-8859-16 |
298 | JP jis0201_1976_0 jis0201-raw |
305 | JP jis0201_1976_0 jis0201-raw |
299 | JP jis0208_1990_0 jis0208-raw |
306 | JP jis0208_1990_0 jis0208-raw |
300 | JP jis0212_1990_0 jis0212-raw |
307 | JP jis0212_1990_0 jis0212-raw |