Sous Linux, si vous avez des polices .ttf, vous avez probablement aussi fontconfig , fourni avec l' fc.scan
utilitaire. Vous pouvez analyser la sortie pour obtenir les informations souhaitées ou utiliser l' --format
option mal documentée .
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 langue étant assez gênant, j'ai fini par écrire un script Perl complet pour lister les informations que je voulais dans une seule langue:
#!/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";
brew install lcdf-typetools