X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/b1db17617e16cb9468808f7e2aea0ad8c96c166e..a924faa722f2169e1cee19589221e1a5178313eb:/charset.plp diff --git a/charset.plp b/charset.plp index 05336c1..d0dd864 100644 --- a/charset.plp +++ b/charset.plp @@ -275,19 +275,15 @@ sub tabinput { $row{cell} = do 'charset-ucplanes.inc.pl' or Alert('Table data could not be read', $@ || $!); $row{endpoint} ||= 1023; - $row{endpoint} *= $row{cell}->{colsize}; - $row{startpoint} *= $row{cell}->{colsize}; } elsif (lc $input eq 'u') { $row{cell} = do 'charset-unicode.inc.pl' or Alert('Table data could not be read', $@ || $!); $row{endpoint} ||= 8191; - $row{endpoint} *= $row{cell}->{colsize}; - $row{startpoint} *= $row{cell}->{colsize}; $row{set} = 'Unicode ' . ( - $row{startpoint} < 0x10000 && $row{endpoint} < 0x10000 ? 'BMP' : - $row{startpoint} >= 0x10000 && $row{endpoint} < 0x20000 ? 'SMP' : + $row{startpoint} < 0x1000 && $row{endpoint} < 0x1000 ? 'BMP' : + $row{startpoint} >= 0x1000 && $row{endpoint} < 0x2000 ? 'SMP' : 'allocations' ); } @@ -366,7 +362,7 @@ sub range_cell { $len /= $colsize; $name //= $len <= 2 ? 'res' : 'reserved'; - if (my $part = ($offset - $info->{startpoint})/$colsize % $cols) { + if (my $part = ($offset/$colsize - $info->{startpoint}) % $cols) { # continued row my $rest = $cols - $part; # remaining $rest = $len if $len < $rest; #TODO: optimise @@ -426,7 +422,7 @@ for my $row (@request) { my $coldigits = ceil(log($colsize * $cols) / log(16)); # uniform length of hexadecimal header my $rowdiv = 16 ** $coldigits; # row divide for column digits $rowdiv = 1 if $rowdiv != $cols * $colsize; # divide only if all columns are matched - my $offset = $row->{startpoint} || 0; + my $offset = $row->{startpoint} * $colsize || 0; printf '
', !$row->{cell} && ' charmap'; my $title = $row->{set}; @@ -440,7 +436,7 @@ for my $row (@request) { print "\n"; } print ''; - while ($offset < $row->{endpoint}) { + while ($offset < $row->{endpoint} * $colsize) { if ($row->{skip}->{$offset}) { $offset += $cols * $colsize; next;