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