对于给定的ttf
字体otf
,如何获取元信息?诸如使用了多少个字形、使用了什么工具、我们拥有哪个版本的字体、其标签等信息?对于 Windows 机器,我已经看到了此工具。但是对于 Ubuntu/Linux,我找不到任何!
答案1
这是一个你可以使用的简单解决方案。你需要 Perl 和libfont-ttf-perl
Debian 的软件包(或者字体::TTF来自 CPAN):
#!/usr/bin/perl
use strict;
use warnings;
use Font::TTF::Font;
unless (defined $ARGV[0]) {
die <<~'EOT';
perl glyphs_counter.pl infontfile.otf
Prints glyph count for each input TTF file
EOT
}
foreach (@ARGV) {
my $f = Font::TTF::Font->open($_) || die "Unable to open font file $_";
my $num = $f->{'maxp'}{'numGlyphs'};
printf "%6d %s\n", $num, $_;
$f->release;
}
您唯一需要做的就是将此脚本保存到文件中,通过 Perl 调用它并将要计算字形的字体的路径作为参数:
$ perl glyphs_counter.pl /path/to/the/foo_font.ttf
它似乎适用于 TTF 和 OTF 格式。希望对您有所帮助。
2022 编辑:删除了指向我从中复制此解决方案的原始脚本的链接,因为该链接已损坏,并且我找不到它的存档。
答案2
源自https://stackoverflow.com/a/66788946/3585790
#!/bin/bash
[[ -f "$1" ]] && fc='fc-query' || fc='fc-match'
for range in $($fc --format='%{charset}\n' "$1"); do
for n in $(seq "0x${range%-*}" "0x${range#*-}"); do
printf "\n"
done
done | wc -l
可能您不需要安装任何东西。
你可以像这样使用它:
$ count-glyphs /usr/share/fonts/noto/NotoColorEmoji.ttf
1485
$ count-glyphs "Noto Color Emoji"
1485
答案3
charset
这是一个处理一些工具输出的python脚本fc-*
。
# Usage:
# fc-match --format '%{charset}\n' FONT_NAME | python3 count-charset.py
# fc-query --format '%{charset}\n' FONT_FILE | python3 count-charset.py
import sys
def count_range(expr: str) -> int:
if '-' in expr:
(a, b) = expr.split('-')
return int(b, base=16) - int(a, base=16) + 1
return 1
for line in sys.stdin:
print(sum(count_range(expr) for expr in line.strip().split()))
例子:
$ fc-match --format '%{charset}\n' 'GoMono Nerd Font' | python3 count-charset.py
11786
$ fc-query --format '%{charset}\n' /usr/share/fonts/gnu-free/FreeMono.otf | python3 count-charset.py
4160