HarfBuzz language_from_string Python自省方法不接受str

时间:2019-06-07 22:00:20

标签: python gobject-introspection harfbuzz

我刚刚开始使用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与此方法有关,但似乎不相关。

1 个答案:

答案 0 :(得分:1)

您必须像python3中的HarfBuzz.language_from_string(b'en')(字符串,但以b开头)一样调用它,因为在py3中,字符串不再只是字节序列,而与py2不同。

您知道任何gi API在python3中获取字符串的实际python表示吗?如果是这样,请让我知道,否则这是HarfBuzz所期望的。