Dan Kogai <[EMAIL PROTECTED]> writes:
>On 2002.01.31, at 17:13, Nick Ing-Simmons wrote:
>>> Now the problem is escape-based codings such as ISO-2022.
>>
>> Can you explain the way those work?
>> I can imagine two ways for decode:
>> A - keep going with current sub-encoding till we get a fail,
>> then look at next few octets for an escape sequence.
>> B. - Scan ahead for next escape sequence (or end of available input)
>> then translate up to that.
>
> To answer these questions, let's see what the existing utilities do.
>Here I will discuss NKF, jcode.pl and my humble Jcode.
>
>
>jcode.pl ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
>
>* 1st appeared in 1992, BEFORE Perl5
>* still maintained; still widely used for the same reason cgi-lib.pl is
> used instead of CGI.pm
>* Written 100% in perl
>* No Unicode support
>* Method C? Just like method B but it uses regex to grab between escape
> boundaries (see Jcode.pm) below
So would I if doing it in perl.
>
>> You could bundle several encodings in one XS (the way Encode itself
>> bundles ASCII, ios-8859-* and koi8).
>
> I know. But it is bulky
As a quick hack - Tried bundling :
'euc-jp.ucm',
'jis0201.enc',
'jis0212.enc',
'jis0208.enc',
'shiftjis.enc',
The resulting XS's string table was only slightly larger than the one
for euc-jp.ucm on its own. (But time to compile was much longer.)
>and another problem is that Tcl has a
>different notion of 'Escape' (like euc_jp_0212, which is not exactly an
>escape but an extension)
Tcl has both E (escape) encoding and X (eXtension) encoding as type fields.
I don't remember that from tcl/tk ...
>which needs to be corrected for the practical
>use.
>
>> If any of the bundled encodings have similar sequences of code points
>> then we will get overall table size reductions too.
>>
>> In the limit one could have Encode::CJK, but perhaps
>> Encode::JP / Encode::CN / Encode::KR makes more sense ???
>
> Right. From a user's point of view distinct package space for each
>(human) language is better. But again, this can be implemented like
>
>Encode::EUC (does all euc-based conversion)
>Encode::JP (Wrapper module that calls Encode::EUC and Encode::ISO2022)
>Encode::KR
>Encode::ZN
>
> and so forth.
> Actually even more table reduction can be done between SHIFT_JIS and
>EUC. They are all based upon JISX0208 (and 0201 and 0212) so simple
>calculation
>converts one another.
Ah.
>
>> We could ship things pre-compiled (with origianal .ucm's gzipped, or
>> provide a way to extract a .ucm from the compiled form).
>> Also the compile process is all in perl and has not really been tunned.
>> It spends a lot of time trying to find common "strings" (which gets
>> tables
>> down in size so is a win.)
>
> Right. How we do that we still need more experiments but this is what
>should be done....
>
>Dan
--
Nick Ing-Simmons
http://www.ni-s.u-net.com/