gpt4 book ai didi

android - Android 4 中的 "computeValuesWithHarfbuzz -- need to force to single run": What does this mean?

转载 作者:IT老高 更新时间:2023-10-28 23:13:05 26 4
gpt4 key购买 nike

我的 Android 4 应用通过将多个 textviews 添加到 linearlayout 来生成长 View 。这适用于我的所有列表项,除了一个。问题是,textviews 列表在添加第一个 textview 后中止,但没有抛出异常!

我只是在我的 LogCat 中看到了这个警告:

TextLayoutCache | computeValuesWithHarfbuzz -- need to force to single run

有人知道这是什么意思吗?

最佳答案

HarfBuzz 是 OpenType 字体的布局/整形引擎。其目的是标准化开源项目中的文本布局。该警告可以追溯到 android/graphics/TextLayoutCache.cpp .

相关代码块为:

ubidi_setPara(bidi, chars, contextCount, bidiReq, NULL, &status); //runs the algorithm
int paraDir = ubidi_getParaLevel(bidi) & kDirection_Mask; // 0 if ltr, 1 if rtl

if (U_SUCCESS(status) && rc == 1) {
// Normal case: one run, status is ok
isRTL = (paraDir == 1);
useSingleRun = true;
} else if (!U_SUCCESS(status) || rc < 1) {
LOGW("computeValuesWithHarfbuzz -- need to force to single run");
isRTL = (paraDir == 1);
useSingleRun = true;
} else {...}

这部分代码是 BiDi 算法 (uBiDi) 的一部分,它代表 Unicode Bidirectional,详见 here .

阿拉伯语、希伯来语或其他 RTL 语言的数据需要处理双向文本。因为这些从右到左的脚本使用从左到右书写的数字,所以文本实际上是双向的:混合了从右到左和从左到右的文本。

上面的

rcruncount的算法。每个 unicode 字符都被分配一个级别。 (即使是未分配的)

文本首先被分成不同的级别,(0级是纯英文文本,1级是纯阿拉伯文本,可能嵌入在0级英文文本中,等等)

现在以下列方式运行。

 Levels:  0   0   0   1   1   1   2

Runs: <--- 1 ---> <--- 2 ---> <3>

上例中的运行次数为 3。如果 BiDi 算法甚至无法成功运行一次,则会引发警告。有很多errors这可能会发生,从而阻止算法的成功运行。其中任何一个都可能触发警告。

但是,无论是否发生警告,代码行为都是完全相同的,除了记录的警告。因此,它应该不会影响应用程序的运行。

关于android - Android 4 中的 "computeValuesWithHarfbuzz -- need to force to single run": What does this mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com