/[pub]/test/oldencodeutils/lib/Encode/ISO2022/EightBit.pm
Suika

Diff of /test/oldencodeutils/lib/Encode/ISO2022/EightBit.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by wakaba, Mon Sep 16 02:17:48 2002 UTC revision 1.5 by wakaba, Sat Oct 12 07:27:01 2002 UTC
# Line 20  require Encode::ISO2022; Line 20  require Encode::ISO2022;
20  sub encode ($$;$) {  sub encode ($$;$) {
21    my ($obj, $str, $chk) = @_;    my ($obj, $str, $chk) = @_;
22    $_[1] = '' if $chk;    $_[1] = '' if $chk;
23      if (!defined $obj->{_encode_mapping} || $obj->{_encode_mapping}) {
24        require Encode::Table;
25        $str = Encode::Table::convert ($str, $obj->__encode_map,
26          -autoload => defined $obj->{_encode_mapping_autoload} ?
27                       $obj->{_encode_mapping_autoload} : 1);
28      }
29    $str = &Encode::ISO2022::internal_to_iso2022 ($str, $obj->__2022_encode);    $str = &Encode::ISO2022::internal_to_iso2022 ($str, $obj->__2022_encode);
30    return $str;    $str;
31  }  }
32    
33  sub decode ($$;$) {  sub decode ($$;$) {
34    my ($obj, $str, $chk) = @_;    my ($obj, $str, $chk) = @_;
35    $_[1] = '' if $chk;    $_[1] = '' if $chk;
36    return &Encode::ISO2022::iso2022_to_internal ($str, $obj->__2022_decode);    $str = &Encode::ISO2022::iso2022_to_internal ($str, $obj->__2022_decode);
37      if (!defined $obj->{_decode_mapping} || $obj->{_decode_mapping}) {
38        require Encode::Table;
39        $str = Encode::Table::convert ($str, $obj->__decode_map,
40          -autoload => defined $obj->{_decode_mapping_autoload} ?
41                       $obj->{_decode_mapping_autoload} : 1);
42      }
43      $str;
44  }  }
45    
46  ## prototype for EUCs  ## prototype for EUCs
# Line 57  sub __2022_decode ($) { Line 70  sub __2022_decode ($) {
70    my $C = shift->__2022__common;    my $C = shift->__2022__common;
71    $C;    $C;
72  }  }
73    sub __encode_map ($) {
74      [];
75    }
76    sub __decode_map ($) {
77      [];
78    }
79    
80    sub __clone ($) {
81      my $self = shift;
82      bless {%$self}, ref $self;
83    };
84    
85  package Encode::ISO2022::EightBit::EUCJapanOld;  package Encode::ISO2022::EightBit::EUCJapanOldDefinition;
86  use vars qw/@ISA/;  use vars qw/@ISA/;
87  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
88  __PACKAGE__->Define (qw/ujis x-ujis   deckanji/);  __PACKAGE__->Define (qw/ujis x-ujis euc-jp-1983 euc-japan-1983   deckanji/);
89    
90  =item ujis  =item ujis
91    
92  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese,  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese
93  old version (pre-1990).  (Alias: x-ujis)  with JIS X 0208 (JIS C 6226)-1983
94    (obsoleted definition of pre-1990 days).  (Alias: x-ujis,
95    euc-japan-1983, euc-jp-1983)
96    
97  =cut  =cut
98    
# Line 77  sub __2022__common ($) { Line 103  sub __2022__common ($) {
103    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{' @'};   ## Gaiji (undefined)    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{' @'};   ## Gaiji (undefined)
104    $C;    $C;
105  }  }
106    sub __encode_map ($) {
107      [qw/ucs_to_ascii ucs_to_jisx0208_1983 ucs_to_jisx0201_katakana/];
108    }
109    sub __decode_map ($) {
110      [qw/jisx0208_1983_to_ucs jisx0201_katakana_to_ucs/];
111    }
112    
113  package Encode::ISO2022::EightBit::EUCJapan;  package Encode::ISO2022::EightBit::EUCJapan;
114  use vars qw/@ISA/;  use vars qw/@ISA/;
115  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
116  __PACKAGE__->Define (qw/euc-japan euc-japan-1990 euc-jp eucjp euc_jp x-euc-jp  __PACKAGE__->Define (qw/euc-japan euc-japan-1990 euc-japan-1997 euc-jp euc-jp-1990
117    Extended_UNIX_Code_Packed_Format_for_Japanese csEUCPkdFmtJapanese    euc-jp-1997 euc-j eucjp euc_jp x-euc-jp
118      x-eucjp eucjis euc-jis eucj Extended_UNIX_Code_Packed_Format_for_Japanese
119      csEUCPkdFmtJapanese eujis
120    japanese-iso-8bit cp51932 japanese_euc    japanese-iso-8bit cp51932 japanese_euc
121        ajec eucjp-open  ibm-eucjp cp33722 33722  sdeckanji/);        ajec eucjp-open  ibm-eucjp cp33722 33722  sdeckanji/);
122    
123  =item euc-japan  =item euc-japan
124    
125  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese.  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese
126  (Alias: euc-japan-1990 (emacsen), euc-jp (IANA),  with JIS X 0208-1990.
127  eucjp (locale), euc_jp, x-euc-jp,  (Alias: euc-japan-1990 (emacsen), euc-japan-1997, euc-jp (IANA), euc-jp-1990,
128    euc-jp-1997, eujis (locale),
129    euc-j, eucjp (locale), euc_jp, eucj, x-eucjp, x-euc-jp, eucjis, euc-jis,
130  extended_unix_code_packed_format_for_japanese (IANA),  extended_unix_code_packed_format_for_japanese (IANA),
131  cseucpkdfmtjapanese (IANA), japanese-iso-8bit (emacsen),  cseucpkdfmtjapanese (IANA), japanese-iso-8bit (emacsen),
132  cp51932 (M$), japanese_euc)  cp51932 (M$), japanese_euc)
# Line 104  sub __2022__common ($) { Line 140  sub __2022__common ($) {
140    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{D};      ## JIS X 0212-1990    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{D};      ## JIS X 0212-1990
141    $C;    $C;
142  }  }
143    sub __encode_map ($) {
144      [qw/ucs_to_ascii ucs_to_jisx0208_1990 ucs_to_jisx0212_1990 ucs_to_jisx0201_katakana/];
145    }
146    sub __decode_map ($) {
147      [qw/jisx0208_1990_to_ucs jisx0212_1990_to_ucs jisx0201_katakana_to_ucs/];
148    }
149    
150    package Encode::ISO2022::EightBit::EUCJapan1978;
151    use vars qw/@ISA/;
152    push @ISA, 'Encode::ISO2022::EightBit';
153    __PACKAGE__->Define (qw/euc-japan-1978 euc-jp-1978/);
154    
155    =item euc-japan-1978
156    
157    EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese
158    with JIS X 0208 (JIS C 6226)-1978.  (Alias: euc-jp-1978)
159    
160    =cut
161    
162    sub __2022__common ($) {
163      my $C = shift->SUPER::__2022__common;
164      $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{'@'};    ## JIS X 0208-1978
165      $C->{G2} = $Encode::ISO2022::CHARSET{G94}->{I};       ## JIS X 0201 Katakana
166      $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{D};      ## JIS X 0212-1990
167      $C;
168    }
169    sub __encode_map ($) {
170      [qw/ucs_to_ascii ucs_to_jisx0208_1978 ucs_to_jisx0212_1990 ucs_to_jisx0201_katakana/];
171    }
172    sub __decode_map ($) {
173      [qw/jisx0208_1978_to_ucs jisx0212_1990_to_ucs jisx0201_katakana_to_ucs/];
174    }
175    
176  package Encode::ISO2022::EightBit::EUCJISX0213;  package Encode::ISO2022::EightBit::EUCJISX0213;
177  use vars qw/@ISA/;  use vars qw/@ISA/;
178  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
179  __PACKAGE__->Define (qw/euc-jisx0213 x-euc-jisx0213  __PACKAGE__->Define (qw/euc-jisx0213 x-euc-jisx0213 euc_jisx0213 eucjp0213
180        x-euc-jisx0213-packed  deckanji2000/);   euc-jp-3 euc-japan-2000 euc-jp-2000     x-euc-jisx0213-packed  deckanji2000/);
181    
182  =item euc-jisx0213  =item euc-jisx0213
183    
184  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese  EUC (ISO/IEC 2022 based 8-bit encoding) for Japanese
185  with JIS X 0213:2000, defined by JIS X 0213:2000.  with JIS X 0213:2000, defined by JIS X 0213:2000.
186  (Alias: x-euc-jisx0213)  (Alias: x-euc-jisx0213, euc_jisx0213, eucjp0213, euc-jp-3,
187    euc-japan-2000, euc-jp-2000)
188    
189  =cut  =cut
190    
# Line 126  sub __2022__common ($) { Line 195  sub __2022__common ($) {
195    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{P};      ## JIS X 0213:2000 plane 2    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{P};      ## JIS X 0213:2000 plane 2
196    $C;    $C;
197  }  }
198    sub __encode_map ($) {
199      [qw/ucs_to_ascii ucs_to_jisx0213_2000_1 ucs_to_jisx0213_2000_2 ucs_to_jisx0201_katakana/];
200    }
201    sub __decode_map ($) {
202      [qw/jisx0213_2000_1_to_ucs jisx0212_0213_to_ucs jisx0201_katakana_to_ucs/];
203    }
204    
205  package Encode::ISO2022::EightBit::EUCJISX0213Plane1;  package Encode::ISO2022::EightBit::EUCJISX0213Plane1;
206  use vars qw/@ISA/;  use vars qw/@ISA/;
# Line 139  with JIS X 0213:2000 plane 1, defined by Line 214  with JIS X 0213:2000 plane 1, defined by
214    
215  =cut  =cut
216    
217  sub __2022__common ($) {  sub __2022__encode ($) {
218    my $C = shift->SUPER::__2022__common;    my $C = shift->SUPER::__2022__common;
219    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{"\x7E"}; ## empty    $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{"\x7E"}; ## empty
220    $C;    $C;
221  }  }
222    sub __encode_map ($) {
223      [qw/ucs_to_ascii ucs_to_jisx0213_2000_1 ucs_to_jisx0201_katakana/];
224    }
225    sub __decode_map ($) {
226      [qw/jisx0213_2000_1_to_ucs jisx0212_0213_to_ucs jisx0201_katakana_to_ucs/];
227    }
228    
229  package Encode::ISO2022::EightBit::EUCCHINA;  package Encode::ISO2022::EightBit::EUCCHINA;
230  use vars qw/@ISA/;  use vars qw/@ISA/;
231  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
232  __PACKAGE__->Define (qw/euc-china euc-cn cn-gb cn-gb-2312 chinese-iso-8bit  __PACKAGE__->Define (qw/euc-china euc-cn euccn euc-gb
233     cn-gb cn-gb-2312 chinese-iso-8bit ugb
234   gb2312 csgb2312 x-euc-cn cp51936   ibm-euccn CP1383 1383/);   gb2312 csgb2312 x-euc-cn cp51936   ibm-euccn CP1383 1383/);
235    
236  =item euc-china  =item euc-china
237    
238  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese.  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese.
239  (Alias: euc-cn (emacsen), cn-gb (RFC 1922), cn-gb-2312 (RFC 1922),  (Alias: euc-cn (emacsen), euccn, euc-gb, cn-gb (RFC 1922), cn-gb-2312 (RFC 1922),
240  chinese-iso-8bit (emacsen), gb2312 (IANA), csgb2312 (IANA),  chinese-iso-8bit (emacsen), ugb (locale), gb2312 (IANA), csgb2312 (IANA),
241  x-euc-cn, CP51936 (M$))  x-euc-cn, CP51936 (M$))
242    
243  =cut  =cut
# Line 165  sub __2022__common ($) { Line 247  sub __2022__common ($) {
247    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{A};      ## GB 2312    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{A};      ## GB 2312
248    $C;    $C;
249  }  }
250    sub __encode_map ($) {
251      [qw/ucs_to_ascii ucs_to_gb2312_1980/];
252    }
253    sub __decode_map ($) {
254      [qw/gb2312_1980_to_ucs/];
255    }
256    
257  package Encode::ISO2022::EightBit::EUCCHINA165;  package Encode::ISO2022::EightBit::EUCCHINA165;
258  use vars qw/@ISA/;  use vars qw/@ISA/;
259  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
260  __PACKAGE__->Define (qw/cn-gb-isoir165/);  __PACKAGE__->Define (qw/cn-gb-isoir165 iso-ir-165/);
261    
262  =item euc-china  =item cn-gb-isoir165
263    
264  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese
265  with ISO-IR 165. (Alias: cn-gb-isoir165 (RFC 1922))  with ISO-IR 165. (Alias: cn-gb-isoir165 (RFC 1922),
266    ISO-IR-165)
267    
268  =cut  =cut
269    
# Line 183  sub __2022__common ($) { Line 272  sub __2022__common ($) {
272    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{"\x45"}; ## ISO-IR 165    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{"\x45"}; ## ISO-IR 165
273    $C;    $C;
274  }  }
275    sub __encode_map ($) {
276      [qw/ucs_to_ascii ucs_to_iso_ir_165/];
277    }
278    sub __decode_map ($) {
279      [qw/iso_ir_165_to_ucs/];
280    }
281    
282    package Encode::ISO2022::EightBit::EUCcwnn;
283    use vars qw/@ISA/;
284    push @ISA, 'Encode::ISO2022::EightBit';
285    __PACKAGE__->Define (qw/euc-cwnn cwnn-iso-8bit/);
286    
287    =item euc-cwnn
288    
289    EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese
290    with GB 2312, used by cwnn input system (Alias: cwnn-iso-8bit).
291    See <http://www.tomo.gr.jp/users/wnn/9912ml/msg00088.html>.
292    
293    =cut
294    
295    sub __2022__common ($) {
296      my $C = shift->SUPER::__2022__common;
297      $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{A};      ## GB 2312
298      $C->{G2} = $Encode::ISO2022::CHARSET{G94}->{'0'};     # omron_udc_zh (sisheng)
299            ## TODO: Implement by private set support
300      $C;
301    }
302    sub __encode_map ($) {
303      [qw/ucs_to_ascii ucs_to_gb2312_1980 ucs_to_omron_udc_zh/];
304    }
305    sub __decode_map ($) {
306      [qw/gb2312_1980_to_ucs omron_udc_zh_to_ucs/];
307    }
308    
309    ## cn-gb-12345, gb12345, euc-gb12345
310    
311  package Encode::ISO2022::EightBit::EUCKorea;  package Encode::ISO2022::EightBit::EUCKorea;
312  use vars qw/@ISA/;  use vars qw/@ISA/;
313  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
314  __PACKAGE__->Define (qw/euc-korea euc-kr cp970 cp51949 ibm-euckr x-euc-kr  __PACKAGE__->Define (qw/euc-korea euc-kr euckr cp970 cp51949 ibm-euckr x-euc-kr
315   cseuckr korean-iso-8bit/);   cseuckr korean-iso-8bit/);
316    
317  =item euc-korea  =item euc-korea
318    
319  EUC (ISO/IEC 2022 based 8-bit encoding) for Korean  EUC (ISO/IEC 2022 based 8-bit encoding) for Korean
320  (Alias: euc-kr (IANA), cp970, cp51949 (M$), ibm-euckr,  (Alias: euc-kr (IANA), euckr, cp970, cp51949 (M$), ibm-euckr,
321  x-euc-kr, cseuckr (IANA), korean-iso-8bit (emacsen))  x-euc-kr, cseuckr (IANA), korean-iso-8bit (emacsen))
322    
323  =cut  =cut
# Line 203  sub __2022__common ($) { Line 327  sub __2022__common ($) {
327    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{C};      ## KS X 1001    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{C};      ## KS X 1001
328    $C;    $C;
329  }  }
330    sub __encode_map ($) {
331      [qw/ucs_to_ascii ksx1001_1992_katakana/];
332    }
333    sub __decode_map ($) {
334      [qw/ksx1001_1992_to_ucs/];
335    }
336    
337  package Encode::ISO2022::EightBit::EUCTaiwan;  package Encode::ISO2022::EightBit::EUCTaiwan;
338  use vars qw/@ISA/;  use vars qw/@ISA/;
339  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
340  __PACKAGE__->Define (qw/euc-taiwan euc-tw x-euc-tw cns11643  ibm-euctw cp964/);  __PACKAGE__->Define (qw/euc-taiwan euc-tw euctw x-euc-tw cns11643 cseuctw
341        ibm-euctw cp964/);
342    
343  =item euc-taiwan  =item euc-taiwan
344    
345  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese  EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese
346  with CNS 11643.  (Alias: euc-tw, x-euc-tw, cns11643)  with CNS 11643.  (Alias: euc-tw, euctw, x-euc-tw, cseuctw, cns11643)
347    
348  =cut  =cut
349    
350  sub __2022__common ($) {  sub __2022__common ($) {
351    my $C = shift->SUPER::__2022__common;    my $C = shift->SUPER::__2022__common;
352    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{G};      ## plane 1    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{G};      ## plane 1
353    $C->{G2} = $Encode::ISO2022::CHARSET{G94n}->{H};      ## plane 2    #$C->{G2} =   ## BUG: does not support plane 2-16 yet
354    #$C->{G3} =   ## BUG: does not support plane 3-16 yet    $C->{G2} = $Encode::ISO2022::CHARSET{G94n}->{' `'};   # 3byte DRCS (temporary)
   $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{' `'};   # 3byte DRCS (temporary)  
355    $C;    $C;
356  }  }
357    sub __encode_map ($) {
358      [qw/ucs_to_ascii ucs_to_cns11643_1 ucs_to_cns11643_2 ucs_to_cns11643_3 ucs_to_cns11643_4 ucs_to_cns11643_5 ucs_to_cns11643_6 ucs_to_cns11643_7 ucs_to_cns11643_8 ucs_to_cns11643_9 ucs_to_cns11643_10 ucs_to_cns11643_11 ucs_to_cns11643_12 ucs_to_cns11643_13 ucs_to_cns11643_14 ucs_to_cns11643_15 ucs_to_cns11643_16/];
359    }
360    sub __decode_map ($) {
361      [qw/cns11643_1_to_ucs cns11643_2_to_ucs cns11643_3_to_ucs cns11643_4_to_ucs cns11643_5_to_ucs cns11643_6_to_ucs cns11643_7_to_ucs cns11643_8_to_ucs cns11643_9_to_ucs cns11643_10_to_ucs cns11643_11_to_ucs cns11643_12_to_ucs cns11643_13_to_ucs cns11643_14_to_ucs cns11643_15_to_ucs cns11643_16_to_ucs/];
362    }
363    
364    package Encode::ISO2022::EightBit::EUCtwnn;
365    use vars qw/@ISA/;
366    push @ISA, 'Encode::ISO2022::EightBit';
367    __PACKAGE__->Define (qw/euc-twnn twnn-iso-8bit/);
368    
369    =item euc-twnn
370    
371    EUC (ISO/IEC 2022 based 8-bit encoding) for Chinese
372    with CNS 11643, used by twnn input system (Alias: twnn-iso-8bit)
373    See <http://www.tomo.gr.jp/users/wnn/9912ml/msg00088.html>.
374    
375    =cut
376    
377    sub __2022__common ($) {
378      my $C = shift->SUPER::__2022__common;
379      $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{G};      ## plane 1
380      $C->{G2} = $Encode::ISO2022::CHARSET{G94}->{'0'};     # omron_udc_zh (sisheng)
381            ## TODO: Implement by private set support
382      $C->{G3} = $Encode::ISO2022::CHARSET{G94n}->{H};      ## plane 2
383      $C;
384    }
385    sub __encode_map ($) {
386      [qw/ucs_to_ascii ucs_to_cns11643_1 ucs_to_cns11643_2 ucs_to_omron_udc_zh/];
387    }
388    sub __decode_map ($) {
389      [qw/cns11643_1_to_ucs cns11643_2_to_ucs omron_udc_zh_to_ucs/];
390    }
391    
392  package Encode::ISO2022::EightBit::EUCKPS9566;  package Encode::ISO2022::EightBit::EUCKPS9566;
393  use vars qw/@ISA/;  use vars qw/@ISA/;
# Line 242  sub __2022__common ($) { Line 406  sub __2022__common ($) {
406    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{N};      ## KPS 9566-97    $C->{G1} = $Encode::ISO2022::CHARSET{G94n}->{N};      ## KPS 9566-97
407    $C;    $C;
408  }  }
409    sub __encode_map ($) {
410      [qw/ucs_to_ascii ucs_to_kps9566_1997/];
411    }
412    sub __decode_map ($) {
413      [qw/kps9566_1997_to_ucs/];
414    }
415    
416  package Encode::ISO2022::EightBit::SS2;  package Encode::ISO2022::EightBit::SS2;
417  use vars qw/@ISA/;  use vars qw/@ISA/;
# Line 268  sub __2022__common ($) { Line 438  sub __2022__common ($) {
438  package Encode::ISO2022::EightBit::CompoundText;  package Encode::ISO2022::EightBit::CompoundText;
439  use vars qw/@ISA/;  use vars qw/@ISA/;
440  push @ISA, 'Encode::ISO2022::EightBit';  push @ISA, 'Encode::ISO2022::EightBit';
441  __PACKAGE__->Define (qw/compound-text ctext x-ctext/);  __PACKAGE__->Define (qw/compound-text compound_text
442     x-compound-text ctext x-ctext ct/);
443    
444  =item compound-text  =item compound-text
445    
446  ISO/IEC 2022 based 8-bit encoding used in inter-client  ISO/IEC 2022 based 8-bit encoding used in inter-client
447  communication of X Window System (Alias: ctext (emacsen), x-ctext (emacsen))  communication of X Window System (Alias: ctext (emacsen), x-ctext (emacsen),
448    compound_text, x-compound-text, ct (loacle))
449    
450    Strictly, x-ctext, extended compound text (X Compound Text
451    based encoding for unknown ISO/IEC 2022 based encoding) is a
452    different coding system from X Compound Text.  See
453    [mule-jp:7455] <mid:rsqsoa5s2hr.fsf@crane.jaist.ac.jp> and
454    [mule-jp:7457] <mid:rsq4smlky85.fsf@crane.jaist.ac.jp>.
455    Mule's ctext allows private final bytes and 96^n sets.
456    
457    XFree86 extended compound text allows to use UTF-8
458    with ESC 02/05 04/06.  See
459    <http://cvsweb.xfree86.org/cvsweb/xc/doc/specs/CTEXT/ctext.tbl.ms>.
460    
461  =cut  =cut
462    
463    ## TODO: separate mule ctext and xfree86 ctext
464    
465  sub __2022__common ($) {  sub __2022__common ($) {
466    my $C = Encode::ISO2022->new_object;    my $C = Encode::ISO2022->new_object;
467    $C->{option}->{designate_to}->{C0}->{default} = -1;    $C->{option}->{designate_to}->{C0}->{default} = -1;
468    $C->{option}->{designate_to}->{C1}->{default} = -1;    $C->{option}->{designate_to}->{C1}->{default} = -1;
469    $C->{option}->{designate_to}->{G94}->{I} = 1;    $C->{option}->{designate_to}->{G94}->{I} = 1; ## JIS X 0201 Katakana
470    $C->{option}->{designate_to}->{G96}->{default} = 1;    $C->{option}->{designate_to}->{G96}->{default} = 1;
471    $C->{option}->{designate_to}->{G96n}->{default} = -1;    $C->{option}->{designate_to}->{G96n}->{default} = -1;
472    for my $t (qw/G94 G96 G94n/) {    for my $t (qw/G94 G96 G94n/) {
473      for (0x30..0x3F) {      for (0x30..0x3F) {
474        my $F = chr $_;        my $F = chr $_;
475        $C->{option}->{designate_to}->{$t}->{$F} = -1;        #$C->{option}->{designate_to}->{$t}->{$F} = -1;
476        $C->{option}->{designate_to}->{$t}->{'!'.$F} = -1;        $C->{option}->{designate_to}->{$t}->{'!'.$F} = -1;
477        $C->{option}->{designate_to}->{$t}->{'"'.$F} = -1;        $C->{option}->{designate_to}->{$t}->{'"'.$F} = -1;
478        $C->{option}->{designate_to}->{$t}->{'#'.$F} = -1;        $C->{option}->{designate_to}->{$t}->{'#'.$F} = -1;
# Line 301  sub __2022__common ($) { Line 486  sub __2022__common ($) {
486    $C->{option}->{Ginvoke_to_left}->[1] = 0;    $C->{option}->{Ginvoke_to_left}->[1] = 0;
487    $C->{option}->{C1invoke_to_right} = 1;    $C->{option}->{C1invoke_to_right} = 1;
488    $C->{option}->{reset}->{Ginvoke} = 0;    $C->{option}->{reset}->{Ginvoke} = 0;
489      $C->{option}->{use_revision} = 0;
490      ## XFree86 extension
491      $C->{option}->{designate_to}->{G94n}->{"\x42\x40"} = 0;       ## JIS X 0208-1990
492      $C->{option}->{designate_to}->{coding_system}->{"\x40"} = 1;  ## ISO/IEC 2022
493      $C->{option}->{designate_to}->{coding_system}->{"\x47"} = 1;  ## UTF-8
494      $C;
495    }
496    sub __2022_decode ($) {
497      my $C = shift->__2022__common;
498      ## Emacsen's x-ctext
499      $C->{G1} = $Encode::ISO2022::CHARSET{G96}->{A};       ## ISO/IEC 8859-1
500    $C;    $C;
501  }  }
502    sub __encode_map ($) {
503      [qw/ucs_to_ascii ucs_to_isoiec8859_1 ucs_to_isoiec8859_2 ucs_to_isoiec8859_3 ucs_to_isoiec8859_4 ucs_to_isoiec8859_5 ucs_to_isoiec8859_6 ucs_to_isoiec8859_7 ucs_to_isoiec8859_8 ucs_to_isoiec8859_9 ucs_to_gb2312_1980 ucs_to_jisx0208_1983 ucs_to_ksx1001_1992 ucs_to_jisx0212_1990 ucs_to_jisx0201_latin ucs_to_jisx0201_katakana/];
504    }
505    sub __decode_map ($) {
506      [qw/isoiec8859_2_to_ucs isoiec8859_3_to_ucs isoiec8859_4_to_ucs isoiec8859_5_to_ucs isoiec8859_6_to_ucs isoiec8859_7_to_ucs isoiec8859_8_to_ucs isoiec8859_9_to_ucs gb2312_1980_to_ucs jisx0208_1983_to_ucs ksx1001_1992_to_ucs jisx0212_1990_to_ucs/];
507    }
508    
509    
510  1;  1;
# Line 312  __END__ Line 514  __END__
514    
515  =head1 LICENSE  =head1 LICENSE
516    
517  Copyright 2002 wakaba <w@suika.fam.cx>  Copyright 2002 Wakaba <w@suika.fam.cx>
518    
519  This library is free software; you can redistribute it  This library is free software; you can redistribute it
520  and/or modify it under the same terms as Perl itself.  and/or modify it under the same terms as Perl itself.

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24