GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada alat baris perintah unix yang dapat menganalisis file font?

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

Linux
  1. Alat Baris Perintah yang Kuat Untuk Memproses File Csv?

  2. Menghapus File Berdasarkan Usia?

  3. Apakah ada alat baris perintah untuk visualisasi dan analisis data?

  1. Alat baris perintah untuk menghasilkan kata sandi yang mudah diingat?

  2. Apakah ada alat yang dapat mendeteksi (dan jika memungkinkan, memperbaiki) gangguan pada file MP3?

  3. Apakah ada cara untuk mengubah id volume file .iso dari baris perintah?

  1. Bagaimana saya bisa menulis ke dmesg dari baris perintah?

  2. Apakah ada perintah UNIX untuk mendaftar semua file yang baru saja dihapus dari suatu sistem

  3. Baris Perintah hanya UNIX/Linux OS