लिनक्स में, यदि आपके पास .ttf फोंट हैं, तो आप सबसे अधिक संभवत: फॉन्टकोन्फिग भी कर सकते हैं , जो fc.scan
उपयोगिता के साथ आता है । आप अपनी इच्छित जानकारी के लिए आउटपुट को पार्स कर सकते हैं, या बुरी तरह से प्रलेखित --format
विकल्प का उपयोग कर सकते हैं ।
उदाहरण के लिए:
fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf
फ़ॉन्ट गुण आप इस तरह से प्रिंट कर सकते हैं यहां दिखाए गए हैं: http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21
कुछ गुण कई भाषाओं में सूचीबद्ध हैं। उदाहरण के लिए, %{fullname}
एक सूची हो सकती है। उस स्तिथि में,%{fullnamelang}
भाषाओं को सूचीबद्ध करेगा। यदि वह आपको अपनी भाषा सूची में चौथे स्थान पर दिखाती है, तो आप %{fullname[3]}
केवल उस भाषा में पूरा नाम प्रिंट करने के लिए प्रारूप स्ट्रिंग के रूप में उपयोग कर सकते हैं।
यह भाषा सामान काफी असुविधाजनक है, मैंने केवल एक भाषा में जो जानकारी चाही थी उसे सूचीबद्ध करने के लिए एक पूर्ण पर्ल स्क्रिप्ट लिखना समाप्त किया:
#!/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