GNU/Linux >> Linux の 問題 >  >> Linux

フォント ファイルを分析できる UNIX コマンド ライン ツールはありますか?

otfinfo を探していると思います。サブファミリーに直接アクセスするオプションはないようですが、次の方法があります:

otfinfo --info *.ttf | grep Subfamily

私が調べたフォントの多くは、「斜体」ではなく「斜体」を使用していることに注意してください。


Linux では、.ttf フォントを使用している場合、ほとんどの場合、fc.scan に付属する fontconfig も使用しています。 効用。必要な情報について出力を解析するか、不適切に文書化された --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} 言語をリストします。あなたの言語がリストの 4 番目に表示されている場合は、%{fullname[3]} を使用できます。 その言語のみでフルネームを出力するフォーマット文字列として.

この言語は非常に不便なので、必要な情報を 1 つの言語だけでリストする完全な Perl スクリプトを作成することになりました:

#!/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";

Linux
  1. バッチ モードの Unix bc コマンド ライン電卓

  2. データの視覚化と分析のためのコマンド ライン ツールはありますか?

  3. SQL*Plusに渡すことができるコマンドライン引数の最大長は?

  1. コマンドラインからdmesgに書き込むにはどうすればよいですか?

  2. ジョイスティック ボタンの押下をキャプチャできるコマンド ライン ユーティリティはありますか?

  3. システムから最近削除されたすべてのファイルを一覧表示する UNIX コマンドはありますか

  1. Linuxでファイルをすばやく検索するための5つのコマンドラインツール

  2. Csvファイルを処理するための堅牢なコマンドラインツール?

  3. UNIX 認定の Linux ディストリビューションはありますか?