我刚刚开始使用HarfBuzz,并已切换为使用GObject Introspection interface探索其API。到目前为止,一切都很容易,但是我对language_from_string
有点困惑,它具有以下文档字符串:
from gi.repository import HarfBuzz ?HarfBuzz.language_from_string
即在IPython中,我这样做:
print(HarfBuzz.language_from_string.__doc__)
在香草Python中,您可以将最后一行替换为:HarfBuzz.language_from_string('en')
(或类似名称)
如果我使用字符串调用此方法,例如:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Item 0: Must be number, not str
我明白了
en = HarfBuzz.language_from_string(list(map(ord, 'en')))
返回,而如果我先转换为代码点列表:
HarfBuzz.language_to_string(en)
错误消失了,我得到了一些有用的信息。例如我可以的:
en
然后以字符串形式返回预期的tidyr::gather
。
HarfBuzz Issue #91与此方法有关,但似乎不相关。
答案 0 :(得分:1)
您必须像python3中的HarfBuzz.language_from_string(b'en')
(字符串,但以b开头)一样调用它,因为在py3中,字符串不再只是字节序列,而与py2不同。
您知道任何gi API在python3中获取字符串的实际python表示吗?如果是这样,请让我知道,否则这是HarfBuzz所期望的。