Blame bin/ttfcoverage

Packit 46375d
#!/usr/bin/perl
Packit 46375d
# a coverage script
Packit 46375d
# depends on Unicode::UCD and Font::TTF
Packit 46375d
# by Martin Hosken
Packit 46375d
# small tweaks by Nicolas Spalinger
Packit 46375d
Packit 46375d
use Font::TTF::Font;
Packit 46375d
use Unicode::UCD qw(charblocks charblock charscripts charscript);
Packit 46375d
use Getopt::Std;
Packit 46375d
Packit 46375d
getopts('s');
Packit 46375d
Packit 46375d
my $blocks, $stats;
Packit 46375d
Packit 46375d
if ($opt_s)
Packit 46375d
{
Packit 46375d
    $blocks = charscripts;
Packit 46375d
}
Packit 46375d
else
Packit 46375d
{
Packit 46375d
    $blocks = charblocks;
Packit 46375d
}
Packit 46375d
Packit 46375d
foreach (keys %{$blocks})
Packit 46375d
{
Packit 46375d
    foreach $r (@{$blocks->{$_}})
Packit 46375d
    { $stats->{$_}[0] += ($r->[1] - $r->[0]) + 1; }
Packit 46375d
}
Packit 46375d
Packit 46375d
$f = Font::TTF::Font->open($ARGV[0]) || die "Can't open font $ARGV[0]";
Packit 46375d
$cmap = $f->{'cmap'}->read->find_ms->{'val'};
Packit 46375d
Packit 46375d
foreach $c (keys %{$cmap})
Packit 46375d
{
Packit 46375d
    $r = $opt_s ? charscript($c) : charblock($c);
Packit 46375d
    $stats->{$r}[1]++;
Packit 46375d
}
Packit 46375d
Packit 46375d
foreach (sort keys %{$stats})
Packit 46375d
{
Packit 46375d
    next unless ($_ && $stats->{$_}[1]);
Packit 46375d
    printf "%s: %d/%d (%.2f%%)\n", $_, $stats->{$_}[1], $stats->{$_}[0], $stats->{$_}[1] / $stats->{$_}[0] * 100.;
Packit 46375d
}
Packit 46375d