Acho que você está procurando otfinfo . Não parece haver uma opção para chegar diretamente à Subfamília, mas você poderia:
otfinfo --info *.ttf | grep Subfamily
Observe que várias fontes que eu usei usam "Oblique" em vez de "Itálico".
Dado um diretório de arquivos de fontes (TTF e OTF) eu gostaria de inspecionar cada fonte e determinar qual estilo (regular, itálico, negrito, negrito-itálico) é. Existe uma ferramenta de linha de comando para sistemas operacionais com sabor unix que pode fazer isso? Ou alguém sabe como extrair os metadados de um arquivo de fonte TTF ou OTF?
No Linux, se você tem fontes .ttf, provavelmente também tem fontconfig , que vem com o utilitário fc.scan
. Você pode analisar a saída para as informações desejadas ou usar a opção --format
mal documentada.
Por exemplo:
fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf
As propriedades das fontes que você pode imprimir desta forma são mostradas aqui: link
Algumas propriedades estão listadas em vários idiomas. Por exemplo, %{fullname}
pode ser uma lista. Nesse caso, %{fullnamelang}
listará os idiomas. Se isso mostrar seu idioma na quarta posição da lista, você poderá usar %{fullname[3]}
como a string de formato para imprimir o nome completo apenas nesse idioma.
Esse material de linguagem é bem inconveniente, acabei escrevendo um script Perl completo para listar as informações que eu queria em apenas um 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";
Tags command-line fonts linux shell