X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/9defa38b80fd2091d37bb832ef1b02ddee242d51..0d71f602a3268f8059dc48042280fb25c1abb4ba:/tools/convert-ttf.pl diff --git a/tools/convert-ttf.pl b/tools/convert-ttf.pl index 3a7cc0e..97a2026 100755 --- a/tools/convert-ttf.pl +++ b/tools/convert-ttf.pl @@ -6,7 +6,8 @@ use warnings; use Data::Dump 'pp'; use Font::TTF::Font; -my ($ttfname, $outfile) = @ARGV; +my ($ttfuri, $outfile) = @ARGV; +$ttfuri or die "usage error\n"; for ($outfile || ()) { !-e $_ or die "Output file $outfile already exists\n"; @@ -14,14 +15,31 @@ for ($outfile || ()) { select $output; } +my %FONTID = ( + 'Times New Roman' => 'times', + 'DejaVu Sans' => 'dv ss', + 'DejaVu Serif' => 'dv serif', + 'DejaVu Sans Mono'=> 'dv mono', + 'Code2000' => 'c2k', + 'GNU Unifont' => 'guf', + 'Droid Sans' => 'droid', + 'Droid Serif' => 'droid serif', + 'Droid Sans Mono' => 'droid mono', +); + { - my $ttf = Font::TTF::Font->open($ttfname) - or die "Cannot open truetype in $ttfname: $!"; + my $ttf = Font::TTF::Font->open($ttfuri) + or die "Cannot open truetype in $ttfuri: $!"; + my $ttfname = ($ttfuri =~ m{([^/.]+) (?:[.]ttf)? \z}msx)[0]; + my $ttfmeta = $ttf->{name}->read; my %meta = ( - filename => $ttfname, - name => $ttf->{name}->read->find_name(4) || $ttfname, - version => $ttf->{head}->{fontRevision}, + source => $ttfuri =~ m{(^/usr/.+ | [^/]+) \z}msx, + name => $ttfmeta->find_name(4) || $ttfname, + revision => $ttf->{head}->{fontRevision}, + version => scalar $ttfmeta->find_name(5), + copyright=> scalar $ttfmeta->find_name(0), + license => $ttfmeta->find_name(14) || undef, date => (map { $_ && eval { require Time::Piece; @@ -29,6 +47,7 @@ for ($outfile || ()) { } } $ttf->{head}->getdate), ); + $meta{id} = $FONTID{ $meta{name} } // lc $ttfname; say pp(\%meta), ','; my $support = $ttf->{cmap}->find_ms->{val};