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";
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;
}
} $ttf->{head}->getdate),
);
+ $meta{id} = $FONTID{ $meta{name} } // lc $ttfname;
say pp(\%meta), ',';
my $support = $ttf->{cmap}->find_ms->{val};