글꼴 파일을 분석할 수 있는 Unix 명령줄 도구가 있습니까?

글꼴 파일을 분석할 수 있는 Unix 명령줄 도구가 있습니까?

주어진 글꼴 파일(TTF 및 OTF) 디렉토리에서 각 글꼴을 확인하고 해당 스타일(일반, 기울임꼴, 굵게, 굵은 기울임꼴)을 결정하고 싶습니다. 이를 수행할 수 있는 UNIX 스타일 운영 체제용 명령줄 도구가 있습니까? 아니면 TTF나 OTF 글꼴 파일에서 메타데이터를 추출하는 방법을 아는 사람이 있나요?

답변1

찾고 계시는 것 같아요오르펜 정보. 아마옵션하위 패밀리로 직접 이동하세요. 다음과 같이 할 수 있습니다.

otfinfo --info *.ttf | grep Subfamily

내가 살펴본 많은 글꼴은 "기울임꼴" 대신 "오블리크"를 사용했습니다.

답변2

Linux에서 .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]}형식 문자열을 사용하여 해당 언어로만 전체 이름을 인쇄할 수 있습니다.

이 언어 작업은 너무 불편해서 결국 하나의 언어로 원하는 정보를 나열하는 완전한 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";

관련 정보