X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/4b13af2d4d53762c4cb1aed7e4d0de3b5666c1bc..2fb0fb7012a25b6847ca8187e215da735eb186bf:/font.plp diff --git a/font.plp b/font.plp index 79ac28d..5e81234 100644 --- a/font.plp +++ b/font.plp @@ -26,52 +26,90 @@ use 5.010; use Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; -my %oslist = ( - win95 => [qw( arial ariuni verdana times courier )], # microsoft - mac10 => [qw( )], # apple - android => [qw( droidsans )], # google - oss => [qw( dvsans c2k unifont )], +my $cover = do 'unicode-cover.inc.pl' or die $@ || $!; + +my @ossel = @{ $cover->{osdefault} }; +my @fontlist = map { @{ $cover->{os}->{$_} } } @ossel; + +my @rows = ( + 'block/Latin-1 Supplement', + 'block/Latin Extended-A', + 'block/Latin Extended Additional', + 'block/Latin Extended-B', + 'script/Latin', + 'script/Greek', + 'script/Cyrillic', + 'script/Arabic', + 'script/Hebrew', + 'script/Devanagari', + 'script/Thai', + 'script/Hangul', + 'table/japanese', + 'script/Han', + 'table/ipa', + 'table/punctuation', + 'block/Dingbats', + 'table/symbols', + 'category/Sc', # currency + 'table/math', + 'category/Sm', # mathematical + 'table/arrows/single', + 'table/lines/single', + 'table/block', + 'table/lines', + 'table/html', ); -my @ossel = qw( win95 oss android ); -my @fontlist = map { @{ $oslist{$_} } } @ossel; -my $cover = do 'unicode-cover.inc.pl' or die $@ || $!; +if (my $group = $ENV{PATH_INFO}) { + $group =~ s{^/}{}; + my $grouprows = $cover->{$group} + or die "Unknown character category $_\n"; + @rows = map { "$group/$_" } sort keys %{$grouprows}; +} # output character list print ''; print ''; -print "" for map { scalar @{$oslist{$_}} } @ossel; +print "" + for map { scalar @{ $cover->{os}->{$_} } } @ossel; print ''; print ''; print ''; -for my $name (sort keys %{$cover}) { - my $row = $cover->{$name}; +for (@rows) { + my ($group, $name) = split m{/}, $_, 2; + my $row = $cover->{$group}->{$name}; + print ''; - $name = qq{$name} - if $row->{-count} and $row->{-count} < 1280; + $name = sprintf '%s', EncodeURI("/chars/$group/$name"), EscapeHTML($name) + if $row->{count} and $row->{count} < 1280; print '';
'; -printf '%s fonts', scalar @{ $oslist{$_} }, $_ for @ossel; +printf '%s fonts', scalar @{ $cover->{os}->{$_} }, $_ + for @ossel; print '
'; -printf '%s', $_ for @fontlist; +printf '%s', $_->{name}, $_->{abbr} + for @{ $cover->{fonts} }[@fontlist]; say '
', $name; - print '', $row->{-count}; - for (@fontlist) { - my $count = $row->{$_}; + print '', $row->{count}; + for my $count (@{ $row->{support} }[@fontlist]) { if (not defined $count) { print '?'; next; } if (not $count) { - print '0'; + print '✘'; + next; + } + if ($count == $row->{count}) { + print '✔'; next; } - my $rel = $count / $row->{-count}; - my $class = $rel < .5 ? 2 : $rel < .75 ? 3 : $rel < 1 ? 4 : 5; + my $rel = $count / $row->{count}; + my $class = $rel < .5 ? 2 : $rel < .9 ? 3 : 4; printf '%d%%', "l$class", $rel*100; } say '