X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/3febe16dc279b2160d565b015f7ea97814f40f19..13f64783b1e5ed763a85912e7129d58791de8340:/tools/mkfontinfo diff --git a/tools/mkfontinfo b/tools/mkfontinfo index deada09..09cc4d2 100755 --- a/tools/mkfontinfo +++ b/tools/mkfontinfo @@ -5,22 +5,21 @@ use warnings; use utf8; use open OUT => ':utf8', ':std'; -use List::Util 'reduce'; use File::Basename 'basename'; use Data::Dump 'pp'; -our $VERSION = '1.00'; +our $VERSION = '1.01'; -my %font; +my @fontlist; + +my %cover; my $incsuffix = '.inc.pl'; for my $fontfile (glob 'ttfsupport/*'.$incsuffix) { my ($fontid) = basename($fontfile, $incsuffix); my ($fontmeta, @fontrange) = do $fontfile or next; - $font{$fontid} = { - -id => $fontmeta->{id} || $fontid, - -name => $fontmeta->{name}, - map { (chr $_ => 1) } @fontrange - }; + $fontmeta->{file} = $fontid; + push @fontlist, $fontmeta; + $cover{$fontid} = { map { (chr $_ => 1) } @fontrange }; } my %charlist; @@ -67,13 +66,14 @@ for my $code (0 .. 256**2) { for (values %charlist) { for my $chars (values %{$_}) { - my %row = map { - my $fontcover = $font{$_}; - ($_ => scalar grep { $fontcover->{$_} } @{$chars}); - } keys %font; - $row{-count} = scalar @{$chars}; - - $row{-query} = eval { + my %row; + $row{support} = [ + map { scalar grep { defined } @{ $cover{$_->{file}} }{ @{$chars} } } + @fontlist + ]; + $row{count} = scalar @{$chars}; + + $row{query} = eval { my @query = map { ord } sort @{$chars}; my $i = 0; while ($i < @query) { @@ -96,6 +96,20 @@ for my $chars (values %{$_}) { } } +$charlist{fonts} = \@fontlist; + +my %osfonts = ( + win95 => [qw( arial arialuni lucidau verdana times courier )], # microsoft + mac10 => [qw( helvetica lucida times garamond palatino )], # apple + android => [qw( roboto noto )], # google + oss => [qw( dvsans c2k unifont opensans )], +); +my %fontnum = map { ($fontlist[$_]->{file} => $_) } 0 .. $#fontlist; +while (my ($os, $fontids) = each %osfonts) { + $charlist{os}->{$os} = [ map { $fontnum{$_} // () } @{$fontids} ]; +} +$charlist{osdefault} = [qw( win95 mac10 oss android )]; + say "# automatically generated by $0"; say 'use utf8;'; say '+'.pp(\%charlist);