);
for my $cp ($offset .. $offset+$pagerows-1) {
- state $sameblock;
+ state $colpos;
my $block = Unicode::UCD::charblock($cp);
-
- if ($sameblock and $sameblock ne $block and $block ne 'No_Block') {
- say sprintf '<tbody><tr><th colspan=%d>%s', $pagecols+1, $block;
- undef $sameblock;
- }
-
- if (not $sameblock) {
+ if ($block ne (state $sameblock = $block) and $block ne 'No_Block') {
+ print '<tbody>';
+ printf '<tr><th colspan=%d>%s', $pagecols+1, $block
+ unless $block eq 'No_Block';
+ say '';
$sameblock = $block;
- if (my $gap = $cp % $pagecols) {
- say sprintf '<tr><th>%X<th colspan=%d>', $cp, $gap;
- }
+ $colpos = 0;
}
- say sprintf '<tr><th>%X', $cp if $cp % $pagecols == 0;
+ say sprintf '<tr><th>%X', $cp if $colpos++ % $pagecols == 0;
my $info = $glyphs->glyph_info($cp);
my ($class, $name, $mnem, $html, $string) = @{$info};