$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'
);
}
$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
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 '<div class="section"><table class="glyphs%s">', !$row->{cell} && ' charmap';
my $title = $row->{set};
print "\n";
}
print '<tbody>';
- while ($offset < $row->{endpoint}) {
+ while ($offset < $row->{endpoint} * $colsize) {
if ($row->{skip}->{$offset}) {
$offset += $cols * $colsize;
next;