<(common.inc.plp)><: Html({ title => 'character support sheet', version => 'v1.1', keywords => [qw( unicode font glyph char character support overview cover coverage script block symbol sign mark reference table )], stylesheet => [qw( light dark mono circus red )], data => [qw( unicode-cover.inc.pl )], }); :>

Font coverage

Character support of Unicode blocks and presets.

<: use 5.010; use Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; 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', ); 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 @{ $cover->{os}->{$_} } } @ossel; print ''; print ''; print ''; for (@rows) { my ($group, $name) = split m{/}, $_, 2; my $row = $cover->{$group}->{$name}; print ''; $name = sprintf '%s', EncodeURI("/chars/$group/$name"), EscapeHTML($name) if $row->{count} and $row->{count} < 1280; print ''; } say "
'; printf '%s fonts', scalar @{ $cover->{os}->{$_} }, $_ for @ossel; print '
'; printf '%s', $_->{name}, $_->{abbr} for @{ $cover->{fonts} }[@fontlist]; say '
', $name; print '', $row->{count}; for my $count (@{ $row->{support} }[@fontlist]) { if (not defined $count) { print '?'; next; } if (not $count) { print '✘'; next; } if ($count == $row->{count}) { print '✔'; next; } my $rel = $count / $row->{count}; my $class = $rel < .5 ? 2 : $rel < .9 ? 3 : 4; printf '%d%%', "l$class", $rel*100; } say '
\n"; :>