1

我刚刚开始使用 HarfBuzz,并已切换到使用GObject Introspection 接口来探索其 API。到目前为止,一切都很容易,但我有点困惑language_from_string,它具有以下文档字符串:

language_from_string(str:list) -> HarfBuzz.language_t

即在 IPython 中,我这样做:

from gi.repository import HarfBuzz

?HarfBuzz.language_from_string

在 vanilla Python 中,您可以将最后一行替换为:(print(HarfBuzz.language_from_string.__doc__)或类似的)

如果我用字符串调用此方法,例如:

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回报,在一个字符串中。

HarfBuzz Issue #91是关于这种方法的,但似乎并不相关。

4

1 回答 1

1

您必须HarfBuzz.language_from_string(b'en')在 python3 中将其称为(字符串但以 b 为前缀),因为与 py2 不同,字符串在 py3 中不再只是字节序列。

你知道任何 gi API 可以在 python3 中获得字符串的实际 python 表示吗?如果是这样,请让我知道,否则这是 HarfBuzz 方面的预期。

于 2019-06-10T21:39:50.437 回答