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 {...}
コードのこの部分は、詳細なhereとして、ユニコード双方向の略のBiDiアルゴリズム(uBiDi)の一部です。
アラビア語、ヘブライ語または別のRTL言語のデータは、双方向テキストの処理が必要です。これらの右から左のスクリプトは左から右に書き込まれる数字を使用するため、テキストは実際には双方向です。右から左、左から右のテキストが混在しています。
rc
は、アルゴリズムのruncountです。各ユニコード文字にはレベルが割り当てられます。 (でも、割り当てられていないもの)
テキストは、さまざまなレベルへの最初の分割があり、今
実行(レベル0に平易な英語のテキストで、レベル1は、おそらく英語のレベル0テキスト内に埋め込まれ、プレーンアラビア語のテキスト、などです)次のように発生する。上記の例では
Levels: 0 0 0 1 1 1 2
Runs: <--- 1 ---> <--- 2 ---> <3>
実行回数はのBiDiアルゴリズムは一度も正常に実行することができなかった場合、警告がスローされた3 です。発生する可能性があるのは多くのerrorsであり、アルゴリズムの正常な実行を妨げます。 これらのいずれかが警告をトリガした可能性があります。
警告が発生するかどうかにかかわらず、コードの動作は、記録された警告を除いてまったく同じです。したがって、アプリケーションの実行に影響を与えるべきではありません。
harfbuzzは、フォント/ OpenTypeレンダリングエンジンで、Firefoxなどで使用されています。 TextLayoutCacheはAndroidのネイティブコンポーネントです。あなたはTextViewに何を入れましたか:-P ..壁から完全に離れていなければ、おそらくバグを報告するべきです。編集:それは[これと同じではありませんか?](http://code.google.com/p/android/issues/detail?id=23465) – Jens
私はすべての変数をデバッグしました。このテキストビューには何らかの形で壊れているような空の文字列があります...奇妙なことに、私のアプリは今働いています。私はVM(コンピュータ)を再起動しました。たぶん、この問題を引き起こした何らかの種類の破損したVMの状態でした。うまくいけば、これは決して再び起こらないが、これを言って、それはpropably;) – ninsky
私はそれも、検証エラーなしでそれを得た。 –