Saya pikir Anda sedang mencari otfinfo. Tampaknya tidak ada opsi untuk langsung menghubungi Subfamili, tetapi Anda dapat melakukannya:
otfinfo --info *.ttf | grep Subfamily
Perhatikan bahwa sejumlah font yang saya lihat menggunakan "Oblique", bukan "Italic".
Di Linux, jika Anda memiliki font .ttf, kemungkinan besar Anda juga memiliki fontconfig, yang disertakan dengan fc.scan
kegunaan. Anda dapat mengurai output untuk informasi yang Anda inginkan, atau menggunakan --format
yang tidak terdokumentasi dengan baik opsi.
Misalnya:
fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf
Properti font yang dapat Anda cetak dengan cara ini ditampilkan di sini:http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21
Beberapa properti dicantumkan dalam beberapa bahasa. Misalnya, %{fullname}
mungkin daftar. Dalam hal ini, %{fullnamelang}
akan mencantumkan bahasa. Jika itu menunjukkan bahasa Anda berada di posisi keempat dalam daftar, Anda dapat menggunakan %{fullname[3]}
sebagai string format untuk mencetak nama lengkap hanya dalam bahasa tersebut.
Hal-hal bahasa ini cukup merepotkan, saya akhirnya menulis skrip Perl lengkap untuk mencantumkan info yang saya inginkan hanya dalam satu bahasa:
#!/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";