当前位置: 首页 > 面试题库 >

找出给定字体支持哪些字符

潘修文
2023-03-14
问题内容

如何在Linux上从TrueType或嵌入式OpenType字体中提取受支持的Unicode字符列表?

我是否可以使用工具或库来处理.ttf或.eot文件并构建字体提供的代码点列表(例如U + 0123,U + 1234等)?


问题答案:

这是使用FontTools模块的方法(您可以使用来安装该模块pip install fonttools):

#!/usr/bin/env python
from itertools import chain
import sys

from fontTools.ttLib import TTFont
from fontTools.unicode import Unicode

ttf = TTFont(sys.argv[1], 0, verbose=0, allowVID=0,
                ignoreDecompileErrors=True,
                fontNumber=-1)

chars = chain.from_iterable([y + (Unicode[y[0]],) for y in x.cmap.items()] for x in ttf["cmap"].tables)
print(list(chars))

# Use this for just checking if the font contains the codepoint given as
# second argument:
#char = int(sys.argv[2], 0)
#print(Unicode[char])
#print(char in (x[0] for x in chars))

ttf.close()

该脚本将字体路径作为参数:

python checkfont.py /path/to/font.ttf


 类似资料:
  • 对于我的应用程序,我需要显示一个系统字体列表,但过滤掉所有不支持20种预定义语言的字体(这一套是硬编码的),只显示那些支持的。 我可以通过调用获得可用字体的列表。 仅知道该列表中的字体名称,如何检查该字体支持哪些字符集(代码页)(有实际的字母)? 例如,像Arial或Times New Roman这样的通用字体几乎包含所有欧洲语言的字符,包括西里尔文(还有中文等等)。然而,许多不太常见的字体通常只

  • 问题内容: 在我的Java项目中,我想以编程方式找出使用给定API中的哪些类。有什么好办法吗?通过源代码解析还是字节码解析?恐怕因为反射不会有任何用处。 为了简化起见:我的项目中的任何地方都没有通配符导入(),没有完全限定的字段或变量定义(),也没有任何构造。鉴于这些限制,我想它可以归结为解析导入语句。有没有首选的方法可以做到这一点? 问题答案: 您可以使用ASM的类发现这些类(信不信由你)。该类

  • 我定期更新Firefox和Chrome浏览器,当前版本为54.0.1 32位,以便使用哪个版本的Geckodriver。我尝试了 作为将来的参考,我可以在哪里找到支持的firefox浏览器和相应的geckodriver版本的列表 注意:启动浏览器中没有任何代码更改 以前的代码使用Geckodriver-V0.16.1处理较旧的firefox版本,现在更新Firefox54.0.1和Geckodri

  • WorkerMan在接口上支持各种协议,只要符合ConnectionInterface接口即可(参见定制通讯协议章节)。 为了方便开发者,WorkerMan提供了HTTP协议、WebSocket协议以及非常简单的Text文本协议、可用于二进制传输的frame协议。开发者可以直接使用这些协议,不必再二次开发。如果这些协议都不满足需要,开发者可以参照定制协议章节实现自己的协议。 开发者也可以直接基于t

  • 问题内容: 我注意到,Metal L&F不支持Unicode中的某些箭头字符,而Nimbus和GTK L&F则支持它们。 不支持的字符仅显示为: 我可以吗 要么(手动)查找,L&F支持哪些Unicode字符, 还是在运行时找到它? 编辑: 或者,它应该仅取决于L&F的默认字体,我的问题也许应该是: “如何找出,哪种Java字体支持哪些Unicode字符?” 问题答案: 您可以使用该方法测试对象是否

  • 我在Windows上使用系统字体作为。不支持CJK字符,但不是默认为这些字符(例如