Hide useless whitespace of huge CJK blocks; only indicate start and end rows.
}
elsif (my $rows = int($len / $cols)) {
# multiple full rows
}
elsif (my $rows = int($len / $cols)) {
# multiple full rows
+ my $rowsize = $colsize * $cols;
if ($len -= $rows * $cols) {
# partial row remains
if ($len -= $rows * $cols) {
# partial row remains
- $table->{$offset + $colsize*$rows * $cols} //= [$len*$colsize, "$class joinu", '', $title];
+ $table->{$offset + $rowsize * $rows} //= [$len*$colsize, "$class joinu", '', $title];
+
+ # coalesce multiple rows
+ while ($rows > 3) {
+ $info->{skip}->{$offset += $rowsize}++;
+ $rows--;
+ }
+ if ($rows > 2) {
+ $info->{skip}->{$offset += $rowsize} = 0;
+ }
+
$attr .= sprintf ' rowspan=%d', $rows;
$len = $cols;
}
$attr .= sprintf ' rowspan=%d', $rows;
$len = $cols;
}
+ if (defined $row->{skip}->{$offset}) {
+ print '⋮';
+ }
+ else {
if (my $rowmod = $offset % $rowdiv) {
# offset in column units
printf '<small>+%X</small>', $rowmod;
if (my $rowmod = $offset % $rowdiv) {
# offset in column units
printf '<small>+%X</small>', $rowmod;