<(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 %oslist = ( win95 => [qw( arial ariuni verdana times courier )], # microsoft mac10 => [qw( )], # apple android => [qw( droidsans )], # google oss => [qw( dvsans c2k unifont )], ); my @ossel = qw( win95 oss android ); my @fontlist = map { @{ $oslist{$_} } } @ossel; my $cover = do 'unicode-cover.inc.pl' or die $@ || $!; 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', 'table/math', 'table/arrows/single', 'table/lines/single', 'table/block', 'table/lines', ); for 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 ''; 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 @{ $oslist{$_} }, $_ for @ossel; print '
'; printf '%s', $_ for @fontlist; say '
', $name; print '', $row->{-count}; for (@fontlist) { my $count = $row->{$_}; 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"; :>