11

从基于 Debian 的系统上的脚本语言(例如 Python 或 Ruby),我想找到以下任一种:

  1. 特定字体具有字形的所有 Unicode 代码点
  2. 具有特定 Unicode 代码点字形的所有字体

(显然 1 或 2 可以从另一个派生,所以更容易的会很好。)我过去通过运行:

fc-list : file charset

...并根据fontconfig中的这段代码解析每行末尾的输出, 但在我看来,应该有一种更简单的方法来做到这一点。

(我不完全确定这是该问题的正确 StackExchange 站点,但我正在寻找可以以编程方式使用的答案。)

4

2 回答 2

6

我会尝试任何FreeType 2 语言绑定。这是一个 Perl 解决方案,使用以下方法列出字体的 Unicode 代码点Font::FreeType

use Font::FreeType;
Font::FreeType->new->face('DejaVuSans.ttf')->foreach_char(sub {
    printf("%04X\n", $_->char_code);
});
于 2013-04-09T15:04:15.460 回答
3

我最近使用TTX/FontTools列出了从 unicode 代码点到 TTF 中字形的映射。该工具是用 Python 编写的,因此它与您帖子中的 Python 标记相匹配。命令

ttx -t cmap foo.ttf

foo.ttx将为各种环境和编码生成一个描述该映射的 XML 文件。有关平台和编码标识符实际含义的描述,请参见此参考。我假设该包可以用作库和命令行工具,但我没有这方面的经验。

于 2015-06-23T10:36:28.383 回答