- if ($input eq '') {
- $row{offset} = delete $row{startpoint};
- $row{set} = 'Unicode characters';
- my $block = $row{offset} >> 8;
- $row{endpoint} ||= ($block + 1 << 8) - 1;
- $block == ($row{endpoint} >> 8) or undef $block;
-
- $row{table} = join '', map { chr } $row{offset} .. $row{endpoint};
- utf8::upgrade($row{table}); # prevent latin1 output
-
- $row{endpoint} -= $row{offset};
-
- if (defined $block) {
- $row{set} = sprintf 'Unicode block U+%02Xxx', $block;
- $row{offset} %= 0x100;
- }
- }
- elsif (lc $input eq 'uu') {
- $row{cell} = do 'charset-ucplanes.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
- $row{endpoint} ||= 0x3FF;
- $row{set} = 'Unicode planes';
- }
- elsif (lc $input eq 'u') {
- $row{cell} = do 'charset-unicode.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
-
- $row{endpoint} ||= 0x1FFF;
- $row{set} = 'Unicode ' . (
- $row{startpoint} < 0x1000 && $row{endpoint} < 0x1000 ? 'BMP' :
- $row{startpoint} >= 0x1000 && $row{endpoint} < 0x2000 ? 'SMP' :
- 'allocations'
- );
- }
- elsif ($input =~ m/^utf-*8$/i) {
- $row{set} = 'UTF-8';
- $row{cell} = do 'charset-utf8.inc.pl'
- or Alert('Table data could not be read', $@ || $!);
- $row{endpoint} = 0xFF;
- }