Creo que estás buscando otfinfo. No parece haber una opción para acceder a la Subfamilia directamente, pero podrías hacerlo:
otfinfo --info *.ttf | grep Subfamily
Tenga en cuenta que varias de las fuentes que miré usan "oblicuas" en lugar de "cursivas".
En Linux, si tiene fuentes .ttf, lo más probable es que también tenga fontconfig, que viene con el fc.scan
utilidad. Puede analizar la salida para obtener la información que desea, o usar el --format
mal documentado opción.
Por ejemplo:
fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf
Las propiedades de fuente que puede imprimir de esta manera se muestran aquí:http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21
Algunas propiedades se enumeran en varios idiomas. Por ejemplo, %{fullname}
puede ser una lista. En ese caso, %{fullnamelang}
enumerará los idiomas. Si eso le muestra su idioma en la cuarta posición de la lista, puede usar %{fullname[3]}
como cadena de formato para imprimir el nombre completo solo en ese idioma.
Como este tema del idioma era bastante inconveniente, terminé escribiendo un script Perl completo para enumerar la información que quería en un solo idioma:
#!/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";