GNU/Linux >> Tutoriales Linux >  >> Linux

¿Existe una herramienta de línea de comandos de Unix que pueda analizar archivos de fuentes?

Creo que estás buscando otfinfo. No parece haber una opción para acceder a la Subfamilia directamente, pero podrías hacerlo:

otfinfo --info *.ttf | grep Subfamily

Tenga en cuenta que varias de las fuentes que miré usan "oblicuas" en lugar de "cursivas".


En Linux, si tiene fuentes .ttf, lo más probable es que también tenga fontconfig, que viene con el fc.scan utilidad. Puede analizar la salida para obtener la información que desea, o usar el --format mal documentado opción.

Por ejemplo:

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

Las propiedades de fuente que puede imprimir de esta manera se muestran aquí:http://www.freedesktop.org/software/fontconfig/fontconfig-user.html#AEN21

Algunas propiedades se enumeran en varios idiomas. Por ejemplo, %{fullname} puede ser una lista. En ese caso, %{fullnamelang} enumerará los idiomas. Si eso le muestra su idioma en la cuarta posición de la lista, puede usar %{fullname[3]} como cadena de formato para imprimir el nombre completo solo en ese idioma.

Como este tema del idioma era bastante inconveniente, terminé escribiendo un script Perl completo para enumerar la información que quería en un solo idioma:

#!/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. Calculadora de línea de comandos de Unix bc en modo por lotes

  2. ¿Cómo puedo encontrar un archivo/directorio que podría estar en cualquier lugar de la línea de comandos de Linux?

  3. ¿Herramienta de línea de comandos para generar contraseñas memorables?

  4. ¿Existe alguna herramienta que pueda detectar (y, si es posible, reparar) fallas en los archivos MP3?

  5. ¿Hay alguna manera de cambiar una identificación de volumen de archivos .iso desde la línea de comando?

4 herramientas Markdown para la línea de comandos de Linux

fdupes:una herramienta de línea de comandos para buscar y eliminar archivos duplicados en Linux

Comando ls en Linux/UNIX

15 ejemplos prácticos de comandos Grep en Linux / UNIX

Línea de comandos solo SO UNIX/Linux

¿Hay una distribución de Linux que esté certificada por UNIX?