script block symbol sign mark reference table
)],
stylesheet => [qw( light dark mono circus red )],
- data => [qw( unicode-cover.inc.pl )],
+ data => [qw( data/unicode-cover.inc.pl )],
});
if ($font) {
- my ($fontmeta, @cover) = do "ttfsupport/$font.inc.pl";
- $fontmeta or die "Unknown font $font\n";
+ my ($fontmeta, @cover) = do "data/font/$font.inc.pl";
+ $fontmeta or Abort("Unknown font $font", '404 font not found');
my $map = eval {
$get{map} or return;
- my $groupinfo = do 'unicode-cover.inc.pl' or die $@ || $!;
+ my $groupinfo = do 'data/unicode-cover.inc.pl' or die $@ || $!;
my ($cat, $name) = split m{/}, $get{map}, 2 or die "invalid map\n";
if (!$name) {
}
return \@map;
};
- die $@ if $@;
+ Abort($@, '404 invalid query') if $@;
require Unicode::UCD;
return $_->[0]->[0] for Unicode::UCD::charblock(ucfirst) || (); # block
die "Unknown offset query '$_'\n";
};
- die $@ if $@;
+ Abort($@, '400 invalid offset') if $@;
say "<h1>Font coverage</h1>";
say "<h2>$_</h2>" for EscapeHTML($fontmeta->{name});
# display literal character, with placeholder circle if non-spacing/enclosing
my $html = ($class =~ /\bM[ne]\b/ && chr 9676) . EscapeHTML(chr $cp);
say sprintf '<td class="%s" title="U+%04X%s">%s',
- !$class ? ('l0', $cp, '', '') :
+ !$class ? ('l0', $cp, '', '') : (
$cover{$cp} ? $np ? 'l2' : 'l5' : $np ? 'Xi' : 'l1',
$cp, !!$name && ": $name",
- ($cover{$cp} || !$np) && $html;
+ ($cover{$cp} || !$np) && $html
+ );
}
say '</table>';
<:
-my $cover = do 'unicode-cover.inc.pl' or die $@ || $!;
+my $cover = do 'data/unicode-cover.inc.pl' or die $@ || $!;
my @ossel = @{ $cover->{osdefault} };
my @fontlist = map { @{ $cover->{os}->{$_} } } @ossel;
if (my $group = $get{q}) {
my $grouprows = $cover->{$group}
- or die "Unknown character category $_\n";
+ or Abort("Unknown character category $_", 404);
@rows = map { "$group/$_" } sort keys %{$grouprows};
}