首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何从python中的glyph id中获取unicode?

我们如何从python中的glyph id中获取unicode?
EN

Stack Overflow用户
提问于 2015-03-19 15:10:02
回答 2查看 2.1K关注 0票数 2

如果我有像下面这样的字形is,我如何才能从他们那里获得unicode,语言是我正在工作的python?我理解的第二个值是字形id,但是我们把第一个值和第三个值叫做什么呢?

代码语言:javascript
复制
 (582, 'uni0246', 'LATIN CAPITAL LETTER E WITH STROKE'), (583, 'uni0247', 'LATIN SMALL LETTER E WITH STROKE'), (584, 'uni0248', 'LATIN CAPITAL LETTER J WITHSTROKE'), (585, 'uni0249', 'LATIN SMALL LETTER J WITH STROKE')

请回复。

实际上,我正在尝试从给定的ttf文件中获取python.Here中的unicode,代码如下:

代码语言:javascript
复制
 from fontTools.ttLib import TTFont
 from fontTools.unicode import Unicode
 from ttfquery import ttfgroups
 from fontTools.ttLib.tables import _c_m_a_p
 from itertools import chain

 ttfgroups.buildTable() 
 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))`

这段代码是我从stackoverflow得到的,但这给出了上面的输出,而不是我所需要的。那么谁能告诉我如何从ttf文件中获取unicodes,或者是否可以将字形转换为unicode,它会转换为实际的unicode吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-19 15:15:29

您可以使用第一个字段: unichr(x),或者等效地使用第二个字段。然后删除"uni“部分(3:),将其转换为十六进制值‘Ɇ’e,然后转换为字符。当然,第一种方法更快更简单。

unichr(int(x1,16)) #对于您显示的第一项,返回'Ɇ',对于第二项'ɇ‘

如果您使用python3,请使用chr而不是unichr。

票数 4
EN

Stack Overflow用户

发布于 2020-10-26 15:38:23

这是一种在ttf文件中查找所有unicode字符的简单方法。

代码语言:javascript
复制
chars = []
with TTFont('/path/to/ttf', 0, ignoreDecompileErrors=True) as ttf:
    for x in ttf["cmap"].tables:
        for (code, _) in x.cmap.items():
            chars.append(chr(code))
# now chars is a list of \uxxxx characters
print(chars)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29138935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档