GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gibt es ein Unix-Befehlszeilentool, das Schriftartdateien analysieren kann?

Ich denke, Sie suchen nach otfinfo. Es scheint keine Möglichkeit zu geben, direkt auf die Unterfamilie zuzugreifen, aber Sie könnten Folgendes tun:

otfinfo --info *.ttf | grep Subfamily

Beachten Sie, dass einige der Schriftarten, die ich mir angesehen habe, "Oblique" anstelle von "Italic" verwenden.


Wenn Sie unter Linux .ttf-Schriftarten haben, haben Sie höchstwahrscheinlich auch fontconfig, das mit fc.scan geliefert wird Dienstprogramm. Sie können die Ausgabe nach den gewünschten Informationen parsen oder den schlecht dokumentierten --format verwenden Option.

Zum Beispiel:

fc-scan --format "%{foundry} : %{family}\n" /usr/share/fonts/truetype/msttcorefonts/arialbd.ttf

Die Schrifteigenschaften, die Sie auf diese Weise drucken können, werden hier gezeigt:http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21

Einige Unterkünfte sind in mehreren Sprachen aufgeführt. Beispiel:%{fullname} kann eine Liste sein. In diesem Fall %{fullnamelang} listet die Sprachen auf. Wenn Ihnen Ihre Sprache an vierter Stelle in der Liste angezeigt wird, können Sie %{fullname[3]} verwenden als Formatzeichenfolge, um den vollständigen Namen nur in dieser Sprache auszugeben.

Da diese Sprache ziemlich unpraktisch war, schrieb ich schließlich ein vollständiges Perl-Skript, um die Informationen, die ich wollte, in nur einer Sprache aufzulisten:

#!/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-Befehlszeilenrechner im Batch-Modus

  2. Gibt es ein Befehlszeilentool für die Datenvisualisierung und -analyse?

  3. Kommandozeilen-Tool zum Generieren von einprägsamen Passwörtern?

  4. Gibt es ein Tool, das Störungen in MP3-Dateien erkennen (und wenn möglich beheben) kann?

  5. Gibt es einen UNIX-Befehl, um alle kürzlich von einem System entfernten Dateien aufzulisten

4 Markdown-Tools für die Linux-Befehlszeile

fdupes – Ein Befehlszeilentool zum Suchen und Löschen doppelter Dateien in Linux

ls-Befehl unter Linux/UNIX

15 Praktische Grep-Befehlsbeispiele in Linux / UNIX

Wie kann ich von der Befehlszeile aus in dmesg schreiben?

Gibt es Befehlszeilenprogramme, die das Drücken von Joystick-Tasten erfassen können?