1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#!/usr/bin/perl
use strict;
use warnings;
use Unicode::UCD qw( charprop );
STDOUT->autoflush(1);
sub iswide
{
my ( $cp ) = @_;
my $width = charprop( $cp, "East_Asian_Width" ) or return;
return $width eq "Wide" || $width eq "Fullwidth";
}
my ( $start, $end );
foreach my $cp ( 0 .. 0x1FFFF ) {
iswide($cp) or next;
if( defined $end and $end == $cp-1 ) {
# extend the range
$end = $cp;
next;
}
# start a new range
printf " { %#04x, %#04x },\n", $start, $end if defined $start;
$start = $end = $cp;
}
printf " { %#04x, %#04x },\n", $start, $end if defined $start;
|