ফন্ট ফাইল বিশ্লেষণ করতে পারে এমন কোন ইউনিক্স কমান্ড লাইন সরঞ্জাম আছে?


32

ফন্ট ফাইলগুলির একটি ডিরেক্টরি দেওয়া (টিটিএফ এবং ওটিএফ) আমি প্রতিটি ফন্ট পরিদর্শন করতে এবং এটি নির্ধারণ করতে চাই যে কোন স্টাইলটি (নিয়মিত, তির্যক, সাহসী, সাহসী - ইতালি)। ইউনিক্স স্বাদযুক্ত অপারেটিং সিস্টেমগুলির জন্য এমন কোনও কমান্ড লাইন সরঞ্জাম রয়েছে যা এটি করতে পারে? বা কেউ কীভাবে কোনও টিটিএফ বা ওটিএফ ফন্ট ফাইল থেকে মেটাডেটা আহরণ করতে জানেন?

উত্তর:


30

আমি মনে করি আপনি ওটিফিনফো খুঁজছেন । সরাসরি সাবফ্যামিলিতে যাওয়ার কোনও বিকল্প বলে মনে হচ্ছে না , তবে আপনি এটি করতে পারেন:

otfinfo --info *.ttf | grep Subfamily

মনে রাখবেন যে আমি কয়েকটি ফন্টের দিকে নজর দিয়েছি "ইটালিক" এর পরিবর্তে "ওল্লিক" ব্যবহার করি।


10
পারফেক্ট, ধন্যবাদ! যারা আগ্রহী তাদের জন্য আমি ওএস এক্সে রয়েছি এবং এটি brew install lcdf-typetools
ব্রিউয়ের

এফডাব্লুআইডাব্লু, ম্যাকপোর্টস প্যাকেজটিকেও বলা হয় lcdf-typetools(এবং texlive-fontutilsএটির নির্ভরতা , তাই এটি ইতিমধ্যে টেক্স ব্যবহারকারী লোকদের জন্য ইনস্টল করা হতে পারে)।
হ্যান্স_মাইন

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";

দুর্দান্ত, টিপটির জন্য ধন্যবাদ (এবং স্ক্রিপ্ট .. যদিও আমি এখনও স্ক্রিপ্টটি পরীক্ষা করি নি)। লাইসেন্স / কপিরাইটের তথ্য পাওয়ার পাশাপাশি কোনও উপায় আছে কিনা তা কি আপনি জানেন? আমি% {লাইসেন্স},% {কপিরাইট} এবং কোনও বিন্যাসের চেষ্টা করেছিলাম, তবে এর মধ্যে কোনও কিছুই ফলপ্রসূ হয়নি, যেখানে ফন্টফোর্জ এটি আমাকে দেখাতে সক্ষম।
ইনসানার

আসলে, এফসি-স্ক্যানটি কপিরাইটটি দেখায় বলে মনে হয় না। foundryএটি আপনাকে দেয় সবচেয়ে কাছের। তবে otfinfo -i, সিজেএম দ্বারা প্রস্তাবিত, এটি প্রদর্শন করে।
mivk

আহ এটি দুর্দান্ত, আমি ইনস্টল করেছিলাম lcdf-typetoolsএবং otfinfo -iপ্রস্তাবিত হিসাবে দৌড়েছি এবং সেই কৌশলটি করেছে, ধন্যবাদ! (এবং আমি @ সিজেএমকেও একটি +1 দিয়েছি)।
ইনসানার

প্রোগ্রামগুলিতে ফন্টটি উল্লেখ করতে ব্যবহৃত হরফ "পূর্ণ নাম" পাওয়ার জন্য এফসি-স্ক্যান দুর্দান্ত।
এমআরপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.