X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/338647d07cc1d93ccb35d47e937b38e7f8ac3e05..HEAD:/font.plp diff --git a/font.plp b/font.plp index 07df3bd..7019573 100644 --- a/font.plp +++ b/font.plp @@ -4,7 +4,7 @@ my $font = $Request; Html({ title => 'font coverage '.($font ? "for $font" : 'sheet'), - version => '1.2', + version => '1.4', keywords => [qw( unicode font glyph char character support overview cover coverage script block symbol sign mark reference table @@ -14,13 +14,13 @@ Html({ }); if ($font) { - my ($fontmeta, @cover) = do "data/font/$font.inc.pl"; - $fontmeta or Abort("Unknown font $font", '404 font not found'); + my $fontmeta = eval { Data("data/font/$font") } + or Abort("Unknown font $font", '404 font not found', ref $@ && $@->[1]); my $map = eval { $get{map} or return; - my $groupinfo = do 'data/unicode-cover.inc.pl' or die $@ || $!; + my $groupinfo = Data('data/unicode-cover'); my ($cat, $name) = split m{/}, $get{map}, 2 or die "invalid map\n"; if (!$name) { @@ -59,7 +59,7 @@ if ($font) { printf("

Version %s released %s contains %d glyphs.", !!$_->[2] && qq( title="revision $_->[2]"), $_->[1], $_->[0], - scalar @cover, + scalar @{ $fontmeta->{cover} }, ) for [ grep { $_ } ($fontmeta->{date} || '?') =~ s/T.*//r, @@ -86,7 +86,7 @@ if ($font) { require Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; - my %cover = map { ($_ => 1) } @cover; # lookup map + my %cover = map { ($_ => 1) } @{ $fontmeta->{cover} }; # lookup map say <<"EOT"; @@ -156,12 +156,14 @@ EOT my ($class, $name, $mnem, $entity, $string) = @{$info}; my $np = $class =~ /\bC\S\b/; # noprint if control or invalid # display literal character, with placeholder circle if non-spacing/enclosing - my $html = ($class =~ /\bM[ne]\b/ && chr 9676) . EscapeHTML(chr $cp); + $string ||= ($class =~ /\bM[ne]\b/ && chr 9676) . chr($cp); + my $html = $np ? !!$cover{$cp} && sprintf("&#%d;", $cp) : + EscapeHTML($string); say sprintf '%s', !$class ? ('l0', $cp, '', '') : ( $cover{$cp} ? $np ? 'l2' : 'l5' : $np ? 'Xi' : 'l1', $cp, !!$name && ": $name", - ($cover{$cp} || !$np) && $html + $html ); } say ''; @@ -181,7 +183,7 @@ Character support of Unicode <: -my $cover = do 'data/unicode-cover.inc.pl' or die $@ || $!; +my $cover = Data('data/unicode-cover'); my @ossel = @{ $cover->{osdefault} }; my @fontlist = map { @{ $cover->{os}->{$_} } } @ossel;