从 Ubuntu 上的字体 *.ttf 文件获取支持的 Unicode 范围

从 Ubuntu 上的字体 *.ttf 文件获取支持的 Unicode 范围

我的 Ubuntu 机器上有一些“ttf”格式的字体。

我想要了解这些字体的一些元数据,关于这些字体文件支持哪些unicode范围和哪些非unicode代码页。

我怎样才能做到这一点?

补充 1:忘了说了,我想获取几百种字体的信息,所以我需要某种可以自动化的终端实用程序

答案1

fc-query可以显示支持的 Unicode 字符集。不过我不知道其他代码页。

例如,fc-query /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf在我的 Debian 上显示如下:


charset: 
    0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
    0001: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
    0002: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff 008873ff

它显示了支持的字符范围,尽管它没有显示它属于哪个块(您必须知道哪个范围属于哪个块)。

例如,第四列 0000 对应于 U+0060 - U+007F,其十六进制值为7fffffff。其位值为0111 1111 1111 1111 1111 1111 1111 1111,其中最右边的位为 U+0060,最左边的位为 U+007F。这意味着此字体不支持 U+007F。

您可能需要编写一个脚本,对提供的信息进行按位运算fc-query

P/S:我最喜欢的 Unicode 信息网站是文件格式信息

答案2

我建议FontForge。它在 Ubuntu 的包管理器中可用,名称很简单fontforge

答案3

任何发现此情况的人请注意..

fc-query 对字符集输出不是 100% 可靠的。

例如瑜伽字体在 dafont.com 上,这显示一个空字符集,尽管它其中确实有字符。

$ fc-query yogafont.TTF
Pattern has 20 elts (size 32)
    family: "Yogafont"(s)
    familylang: "en"(s)
    style: "Regular"(s)
    stylelang: "en"(s)
    fullname: "Yogafont"(s)
    fullnamelang: "en"(s)
    slant: 0(i)(s)
    weight: 80(i)(s)
    width: 100(i)(s)
    spacing: 100(i)(s)
    foundry: "unknown"(s)
    file: "yogafont.TTF"(s)
    index: 0(i)(s)
    outline: FcTrue(s)
    scalable: FcTrue(s)
    charset: 
(s)
    lang: (s)
    fontversion: 0(i)(s)
    fontformat: "TrueType"(s)
    decorative: FcFalse(s)

其他带有图画的字体,例如第一次世界大战显示有限的字符集。

$ fc-query WW1-A___.TTF 
Pattern has 19 elts (size 32)
    family: "WW1  A"(s)
    familylang: "en"(s)
    style: "Regular"(s)
    stylelang: "en"(s)
    fullname: "WW1  A"(s)
    fullnamelang: "en"(s)
    slant: 0(i)(s)
    weight: 80(i)(s)
    width: 100(i)(s)
    foundry: "unknown"(s)
    file: "WW1-A___.TTF"(s)
    index: 0(i)(s)
    outline: FcTrue(s)
    scalable: FcTrue(s)
    charset: 
    0000: 00000000 00000001 00000000 0001fffe 00000000 00000000 00000000 00000000
(s)
    lang: (s)
    fontversion: 65536(i)(s)
    fontformat: "TrueType"(s)
    decorative: FcFalse(s)

相关内容