क्या एक यूनिक्स कमांड लाइन उपकरण है जो फ़ॉन्ट फ़ाइलों का विश्लेषण कर सकता है?


32

फ़ॉन्ट फ़ाइलों (टीटीएफ और ओटीएफ) की एक निर्देशिका को देखते हुए मैं प्रत्येक फ़ॉन्ट का निरीक्षण करना चाहता हूं और यह निर्धारित करना चाहता हूं कि यह किस शैली (नियमित, इटैलिक, बोल्ड, बोल्ड-इटैलिक) है। क्या यूनिक्स फ्लेवर्ड ऑपरेटिंग सिस्टम के लिए कमांड लाइन टूल है जो ऐसा कर सकता है? या किसी को पता है कि टीटीएफ या ओटीएफ फ़ॉन्ट फ़ाइल से मेटाडेटा कैसे निकालना है?

जवाबों:


30

मुझे लगता है कि आप ओटफिनो की तलाश कर रहे हैं । सीधे उपपरिवार में प्राप्त करने का विकल्प प्रतीत नहीं होता है , लेकिन आप ऐसा कर सकते हैं:

otfinfo --info *.ttf | grep Subfamily

ध्यान दें कि मैंने जितने भी फोंट देखे, उनमें "इटैलिक" के बजाय "ओब्लिक" का उपयोग किया।


10
बहुत बहुत धन्यवाद! रुचि रखने वालों के लिए मैं ओएस एक्स पर हूँ और साथ काढ़ा के माध्यम से इसे स्थापितbrew install lcdf-typetools
Kreek

FWIW, MacPorts पैकेज भी कहा जाता है lcdf-typetools(और इसकी निर्भरता है texlive-fontutils, इसलिए यह पहले से ही TeX का उपयोग करने वाले लोगों के लिए स्थापित किया जा सकता है)।
hans_meine

15

लिनक्स में, यदि आपके पास .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";

बहुत बढ़िया, टिप के लिए धन्यवाद (और स्क्रिप्ट .. हालांकि मैंने अभी तक स्क्रिप्ट का परीक्षण नहीं किया है)। क्या आपको पता है कि लाइसेंस / कॉपीराइट जानकारी प्राप्त करने का कोई तरीका है? मैंने% {लाइसेंस},% {कॉपीराइट} और कोई प्रारूप की कोशिश की, लेकिन उनमें से कोई भी कुछ भी नहीं निकला, जबकि फॉंटफोर्ज मुझे यह दिखाने में सक्षम है।
insaner

वास्तव में, एफसी-स्कैन कॉपीराइट दिखाने के लिए प्रतीत नहीं होता है। foundryनिकटतम यह आपको देता है। लेकिन otfinfo -i, cjm द्वारा सुझाया गया, इसे प्रदर्शित करता है।
नवबंर 25:54

आह यह बहुत अच्छा है, मैंने इसे स्थापित किया lcdf-typetoolsऔर otfinfo -iसुझाव के अनुसार भागा और उसने चाल चली , धन्यवाद! (और मैंने @cjm a +1 भी दिया)।
15

एफसी-स्कैन फ़ॉन्ट "फुलनाम" प्राप्त करने के लिए बहुत अच्छा है जो कि कार्यक्रमों में फ़ॉन्ट को संदर्भित करने के लिए उपयोग किया जाता है।
MPR
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.