Je pense que vous cherchez otfinfo. Il ne semble pas y avoir d'option pour accéder directement à la sous-famille, mais vous pouvez le faire :
otfinfo --info *.ttf | grep Subfamily
Notez qu'un certain nombre de polices que j'ai examinées utilisent "Oblique" au lieu de "Italique".
Sous Linux, si vous avez des polices .ttf, vous avez très probablement aussi fontconfig, qui vient avec le fc.scan
utilitaire. Vous pouvez analyser la sortie pour les informations que vous voulez, ou utiliser le --format
mal documenté option.
Par exemple :
fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf
Les propriétés de police que vous pouvez imprimer de cette manière sont affichées ici :http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21
Certaines propriétés sont répertoriées dans plusieurs langues. Par exemple, %{fullname}
peut être une liste. Dans ce cas, %{fullnamelang}
listera les langues. Si cela vous montre votre langue en quatrième position dans la liste, vous pouvez utiliser %{fullname[3]}
comme chaîne de format pour imprimer le nom complet uniquement dans cette langue.
Ce truc de langage étant assez gênant, j'ai fini par écrire un script Perl complet pour lister les informations que je voulais dans un seul langage :
#!/usr/bin/perl
use strict;
my $VERSION=0.1;
my $debug=1;
my @wanted = qw(foundry family fullname style weight slant width spacing file);
my @lang_dependent = qw(family fullname style);
my $lang = "en";
my $separator = ", ";
use File::Basename;
use Data::Dumper; $Data::Dumper::Sortkeys = 1;
my $me = basename $0;
die "Usage: $me FILENAME\n" unless @ARGV;
my $fontfile = shift;
unless (-f $fontfile) {
die "Bad argument: '$fontfile' is not a file !\n";
}
my $fc_format = join( "\\n", map { "\%{$_}" } @wanted );
my @info = `fc-scan --format "$fc_format" "$fontfile"`;
chomp @info;
my %fontinfo;
@fontinfo{@wanted} = @info;
if ( grep /,/, @fontinfo{ @lang_dependent } ) {
my $format = join( "\\n", map { "\%{${_}lang}" } @lang_dependent );
my @langs = `fc-scan --format "$format" "$fontfile"`;
for my $i (0..$#lang_dependent) {
my @lang_list = split /,/, $langs[$i];
my ($pos) = grep { $lang_list[$_] ~~ $lang } 0 .. $#lang_list;
my @vals = split /,/, $fontinfo{$lang_dependent[$i]};
$fontinfo{$lang_dependent[$i]} = $vals[$pos];
}
}
warn Dumper(\%fontinfo), "\n" if $debug;
$fontinfo{'fullname'} ||= $fontinfo{'family'}; # some old fonts don't have a fullname? (WINNT/Fonts/marlett.ttf)
print join($separator, @fontinfo{@wanted}), "\n";