X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/4d0dfd97b2708e809741ad853bff0bd000fcbb33..25a210c5de3a4e164a39839dedeb997d56f31faf:/font.plp diff --git a/font.plp b/font.plp index e0a9663..8867921 100644 --- a/font.plp +++ b/font.plp @@ -16,7 +16,17 @@ if (my $font = $ENV{PATH_INFO} =~ s{^/}{}r) { my ($fontmeta, @cover) = do "ttfsupport/$font.inc.pl"; $fontmeta or die "Unknown font $font\n"; - my $offset = $get{q} || 0; + require Unicode::UCD; + + my $size = 0x200; + my $offset = eval { + local $_ = $get{q} || 0; + return $_ if /\A\d+\z/; # numeric + return hex $1 if /\A (?: 0?x | u\W* ) ([0-9a-f]+) \z/ix; # hexadecimal + return $_->[0]->[0] for Unicode::UCD::charblock(ucfirst) || (); # block + die "Unknown offset query '$_'\n"; + }; + die $@ if $@; say "

Font coverage

"; say "

$_

" for EscapeHTML($fontmeta->{name}); @@ -47,7 +57,19 @@ if (my $font = $ENV{PATH_INFO} =~ s{^/}{}r) { EOT say ''; - for my $cp ($offset .. $offset+0x1FF) { + say "" for join(' ', grep {$_} + $offset > $size && sprintf('◄', 0), + $offset > 0 && sprintf( + '', + $offset - $size, + ), + sprintf('U+%04X', $offset), #TODO: block name + $offset + $size < 0x11_0000 && sprintf( + '', + $offset + $size, + ), + ); + for my $cp ($offset .. $offset+$size-1) { my $info = $glyphs->glyph_info($cp); my ($class, $name, $mnem, $html, $string) = @{$info}; my $np = $class =~ /\bC\S\b/; # noprint if control or invalid
$_