如何在基于Debian的系统上找到字体具有字形的Unicode代码点?

时间:2013-04-09 08:03:01

标签: python ruby unicode fonts fontconfig

在基于Debian的系统上使用脚本语言(Python或Ruby),我想找到以下任何一种:

  1. 特定字体具有
  2. 字形的所有Unicode代码点
  3. 具有特定Unicode代码点字形的所有字体
  4. (显然,1或2可以从另一个派生出来,所以无论什么更容易都会很棒。)我过去通过运行完成了这个:

    fc-list : file charset
    

    ...并根据this code from fontconfig解析每行末尾的输出 但在我看来,应该有一个更简单的方法。

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

2 个答案:

答案 0 :(得分:6)

我会尝试FreeType 2 language bindings中的任何一个。这是一个使用Font::FreeType列出字体的Unicode代码点的Perl解决方案:

use Font::FreeType;
Font::FreeType->new->face('DejaVuSans.ttf')->foreach_char(sub {
    printf("%04X\n", $_->char_code);
});

答案 1 :(得分:2)

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

ttx -t cmap foo.ttf

将生成一个XML文件foo.ttx,该文件描述了该映射,适用于各种环境和编码。参见例如this reference用于描述平台和编码标识符的实际含义。我假设软件包可以用作库和命令行工具,但我没有经验。