Changeset 3816

Show
Ignore:
Timestamp:
12/30/07 19:55:27 (11 months ago)
Author:
tokuhirom
Message:

Encode-JP-Mobile: ucm version convert-pictogram branch.

Location:
lang/perl/Encode-JP-Mobile/branches/feature-convert-pictogram-ucm
Files:
3 added
4 removed
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Encode-JP-Mobile/branches/feature-convert-pictogram-ucm/Makefile.PL

    r3800 r3816  
    1515my @ucms = qw(  
    1616    sjis-imode sjis-kddi sjis-kddi-auto sjis-softbank-auto 
    17     utf8-docomo-pictogram utf8-kddi-pictogram utf8-softbank-pictogram 
     17    utf8-docomo utf8-kddi utf8-softbank 
    1818); 
    1919my %tables = ( 
  • lang/perl/Encode-JP-Mobile/branches/feature-convert-pictogram-ucm/lib/Encode/JP/Mobile.pm

    r3800 r3816  
    1111 
    1212use Encode::Alias; 
     13# sjis 
    1314define_alias('x-sjis-docomo' => 'x-sjis-imode'); 
    1415define_alias('x-sjis-ezweb' => 'x-sjis-kddi'); 
     
    1718define_alias('x-sjis-airh' => 'cp932'); 
    1819define_alias('x-sjis-vodafone-auto' => 'x-sjis-softbank-auto'); 
     20 
     21# utf8 
     22define_alias( 'x-utf8-imode'    => 'x-utf8-docomo' ); 
     23define_alias( 'x-utf8-ezweb'    => 'x-utf8-kddi' ); 
     24define_alias( 'x-utf8-vodafone' => 'x-utf8-softbank' ); 
    1925 
    2026# backward compatiblity 
     
    3137use Encode::JP::Mobile::KDDIJIS; 
    3238 
    33 use Encode::JP::Mobile::UTF8; 
     39# use Encode::JP::Mobile::UTF8; 
    3440 
    3541sub InDoCoMoPictograms { 
  • lang/perl/Encode-JP-Mobile/branches/feature-convert-pictogram-ucm/t/emoji_convert_utf8.t

    r1641 r3816  
    1212    my ($docomo, $kddi, $softbank) = @_; 
    1313     
    14     is encode('x-utf8-docomo',   decode('utf-8', $docomo)), $docomo; 
    15     is encode('x-utf8-kddi',     decode('utf-8', $docomo)), $kddi; 
    16     is encode('x-utf8-softbank', decode('utf-8', $docomo)), $softbank; 
     14    is encode('x-utf8-docomo',   decode('utf-8', $docomo)), $docomo, 'I => I'; 
     15    is encode('x-utf8-kddi',     decode('utf-8', $docomo)), $kddi, 'I => E'; 
     16    is encode('x-utf8-softbank', decode('utf-8', $docomo)), $softbank, 'I => V'; 
    1717     
    1818    is encode('x-utf8-docomo',   decode('utf-8', $kddi)), $docomo; 
    19     is encode('x-utf8-kddi',     decode('utf-8', $kddi)), $kddi; 
     19    is encode('x-utf8-kddi',     decode('utf-8', $kddi)), $kddi, 'E => E'; 
    2020    is encode('x-utf8-softbank', decode('utf-8', $kddi)), $softbank; 
    2121     
    22     is encode('x-utf8-docomo',   decode('utf-8', $softbank)), $docomo; 
     22    is encode('x-utf8-docomo',   decode('utf-8', $softbank)), $docomo, 'V => I'; 
    2323    is encode('x-utf8-kddi',     decode('utf-8', $softbank)), $kddi; 
    2424    is encode('x-utf8-softbank', decode('utf-8', $softbank)), $softbank; 
     
    3535     
    3636    is encode('x-utf8-docomo',   decode('utf-8', $kddi)), $docomo; 
    37     is encode('x-utf8-kddi',     decode('utf-8', $kddi)), $kddi; 
     37    is encode('x-utf8-kddi',     decode('utf-8', $kddi)), $kddi, 'E => E'; 
    3838    is encode('x-utf8-softbank', decode('utf-8', $kddi)), $softbank; 
    3939     
    4040    is encode('x-utf8-docomo',   decode('utf-8', $softbank)), $docomo; 
    41     is encode('x-utf8-kddi',     decode('utf-8', $softbank)), $kddi; 
     41    is encode('x-utf8-kddi',     decode('utf-8', $softbank)), $kddi, 'V => E'; 
    4242    is encode('x-utf8-softbank', decode('utf-8', $softbank)), $softbank; 
    4343} 
  • lang/perl/Encode-JP-Mobile/branches/feature-convert-pictogram-ucm/tools/make-pictogram-ucm.pl

    r3801 r3816  
    33use YAML; 
    44use Encode; 
     5use Encode::JP::Mobile; 
    56 
    67my $map = YAML::LoadFile 'dat/convert-map-utf8.yaml'; 
     
    1213); 
    1314 
     15my $uni_range_for = { 
     16    docomo   => Encode::JP::Mobile::InDoCoMoPictograms(), 
     17    kddi     => Encode::JP::Mobile::InKDDIPictograms(), 
     18    softbank => Encode::JP::Mobile::InSoftBankPictograms(), 
     19}; 
     20 
     21my $cp932_ucm = shift @ARGV or die "Usage: $0 cp932.ucm\n"; 
     22 
    1423for my $to (qw( docomo kddi softbank )) { 
    15     open my $fh, '>', "ucm/x-utf8-$to-pictogram.ucm"; 
     24    open my $fh, '>', "ucm/x-utf8-$to.ucm" or die $!; 
    1625    print {$fh} <<HEAD 
    17 <code_set_name> "x-utf8-$to-pictogram" 
    18 <code_set_alias> "x-utf8-$alias{$to}-pictogram" 
     26<code_set_name> "x-utf8-$to" 
     27<code_set_alias> "x-utf8-$alias{$to}" 
    1928<mb_cur_min> 1 
    2029<mb_cur_max> 2 
     
    2433    ; 
    2534 
     35    # basic map 
     36    print {$fh} unicode_ucm($cp932_ucm); 
     37 
     38    # convert map 
    2639    for my $from (qw( docomo kddi softbank )) { 
    2740        next if $from eq $to; 
    2841 
    29         print {$fh} "# pictogram convert map ($from => $to)\n"; 
     42        print {$fh} "\n\n# pictogram convert map ($from => $to)\n"; 
    3043 
    3144        for my $srcuni (sort keys %{$map->{$from}}) { 
     
    3346            printf {$fh} "<U%s> %s |1 # %s\n", $srcuni, unihex2utf8hex($dstuni), comment_for($from); 
    3447        } 
     48    } 
     49 
     50    if ($to eq 'kddi') { 
     51        # ura-kddi 
     52        range_each($to, sub { 
     53            my $unicode = shift; 
     54            my $sjiscode = hex unpack "H*", encode('x-sjis-kddi', chr $unicode); 
     55            my $unihex = sprintf '%X', $sjiscode - 0x0700; 
     56            print {$fh} sprintf "<U%s> %s |1 # %s\n", $unihex, unihex2utf8hex($unihex), "UraKDDI pictogram"; 
     57        }); 
     58    } else { 
     59        range_each($to, sub { 
     60            my $unicode = shift; 
     61            my $unihex = sprintf '%X', $unicode; 
     62            print {$fh} sprintf "<U%s> %s |1 # %s\n", $unihex, unihex2utf8hex($unihex), "$to pictogram"; 
     63        }); 
    3564    } 
    3665 
     
    5584} 
    5685 
     86sub unicode_ucm { 
     87    my $cp932_ucm = shift; 
     88    my $res = ''; 
     89    open my $fh, '<', $cp932_ucm or die "$!: $cp932_ucm"; 
     90    while (my $line = <$fh>) { 
     91        if ($line =~ /^<U(.{4})> \S+ \|0 # (.+)$/) { 
     92            my ($unihex, $comment) = ($1, $2); 
     93 
     94            # for FallBack. 
     95            next if $comment eq 'PRIVATE USE AREA'; 
     96 
     97            $res .= sprintf "<U%s> %s |1 # %s\n", $unihex, unihex2utf8hex($unihex), $comment; 
     98        } 
     99    } 
     100    $res; 
     101} 
     102 
     103sub range_each { 
     104    my ($carrier, $code) = @_; 
     105 
     106    my $map = $uni_range_for->{$carrier}; 
     107    for my $range (split /\n/, $map) { 
     108        my ($min, $max) = map { hex $_ } split /\t/, $range; 
     109        my $i = $min; 
     110        while ($i <= $max) { 
     111            $code->( $i ); 
     112            $i++; 
     113        } 
     114    } 
     115} 
     116