charset: relevant unicode blocks in language comparisons
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 8 Apr 2017 15:02:37 +0000 (17:02 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 24 Apr 2017 23:51:41 +0000 (01:51 +0200)
charset.plp

index 7dc1aee17066daf22f5a83bff6d63fa36a69fdc2..6119859478217b3a87f5a467c0619e975de8392c 100644 (file)
@@ -48,10 +48,12 @@ sub tabinput {
                turkish    => [qw( iso-8859-9 iso-8859-3 cp1254 cp857 MacTurkish )],
                baltic     => [qw( iso-8859-4 iso-8859-13 cp1257 cp775 )],
                nordic     => [qw( iso-8859-10 cp865 cp861 MacIcelandic MacSami )],
                turkish    => [qw( iso-8859-9 iso-8859-3 cp1254 cp857 MacTurkish )],
                baltic     => [qw( iso-8859-4 iso-8859-13 cp1257 cp775 )],
                nordic     => [qw( iso-8859-10 cp865 cp861 MacIcelandic MacSami )],
-               cyrillic   => [qw( koi8-r koi8-u koi8-f iso-8859-5 cp1251 MacCyrillic cp866 cp855 )], # MacUkrainian is broken
-               arabic     => [qw( iso-8859-6 cp1256 MacArabic cp864 cp1006 MacFarsi )],
-               greek      => [qw( iso-8859-7 cp1253 MacGreek cp737 cp869 )],
-               hebrew     => [qw( iso-8859-8 cp1255 MacHebrew cp862 )],
+               cyrillic   => [qw( koi8-r koi8-u koi8-f iso-8859-5 cp1251 MacCyrillic cp866 cp855
+                                  U4 U2DE-2DF UA64-A69 U50-52 )], # MacUkrainian is broken
+               arabic     => [qw( iso-8859-6 cp1256 MacArabic cp864 cp1006 MacFarsi
+                                  U6 U8A-8F+0-31+64 U75-77 )],
+               greek      => [qw( iso-8859-7 cp1253 MacGreek cp737 cp869  U37-3F U1F )],
+               hebrew     => [qw( iso-8859-8 cp1255 MacHebrew cp862  U59-5F )],
                thai       => [qw( iso-8859-11 cp874 MacThai )],
                vietnamese => [qw( viscii cp1258 MacVietnamese )],
                symbol     => [qw( symbol dingbats MacDingbats AdobeZdingbat AdobeSymbol )],
                thai       => [qw( iso-8859-11 cp874 MacThai )],
                vietnamese => [qw( viscii cp1258 MacVietnamese )],
                symbol     => [qw( symbol dingbats MacDingbats AdobeZdingbat AdobeSymbol )],
@@ -193,13 +195,14 @@ sub tabinput {
                }
        }
 
                }
        }
 
-       if ($input =~ /^U([0-9a-f]+)(?:-([0-9a-f]+))?/) {
+       if ($input =~ /^U([0-9a-fA-F]+)(?:-([0-9a-fA-F]+))?/) {
                my $start = hex($1) << ($2 ? 4 : 8);
                my $start = hex($1) << ($2 ? 4 : 8);
-               my $end = $2 ? hex($2) << 4 : $start + 240;
-               $row{table} = join '', map { chr } $start .. $end+15;
+               my $end = $2 ? (hex($2) << 4) + $row{cols} - 1 : $start + 255;
+               $row{table} = join '', map { chr } $start .. $end;
                utf8::upgrade($row{table});  # prevent latin1 output
                utf8::upgrade($row{table});  # prevent latin1 output
-               $row{endpoint} = $end + 14 - $start;
+               $row{endpoint} = $end - $start;
                $row{set} = sprintf 'Unicode block U+%02Xxx', $start >> 8;
                $row{set} = sprintf 'Unicode block U+%02Xxx', $start >> 8;
+               $row{offset} = $start % 256;
        }
        elsif ($input eq 'U') {
                $row{set} = 'Unicode planes';
        }
        elsif ($input eq 'U') {
                $row{set} = 'Unicode planes';