0

私の仕事は、特定の言語 (ロケール) に対応するすべての utf-8 文字コードを反復処理することです。それほど簡単ではないと思います。文字ブロックを反復処理する必要があります (たとえば、"ru_RU" のキリル文字全体など)。wiki ページhttps://en.wikipedia.org/wiki/UTF-8で文字ブロックを見つけることができますが、自分の自転車を発明するよりも良い方法があることを願っています。

icu-project を見てみましたが、必要なことができるかどうかわかりません。

結果として欲しいのは次のようなものです:

for (unsignet int=UBLOCK_GREEK_EXTENDED; i<UBLOCK_GREEK_EXTENDED_SIZE; i++) {
    // do stuff
}

icu-project は非常に強力なツールなので、誰かがこれを行う方法を知っていることを願っています :)

更新: モバイル デバイス用の 3D フレームワークのローカリゼーション オプションに取り組んでいます。TrueType フォントをラスタライズしてエンコードするため、ラスタライズされたフォント ファイルから必要な画像を選択して簡単にレンダリングできます。メモリ量を気にする必要があるため、ラスタライズされたフォントをさまざまなロケール (または言語、または cirylic や greek などの文字ブロック) のさまざまなファイルに分割したいので、utf-8 フォント全体をメモリに保持する必要はありません。常に、ロケールを検出した後に対応するファイルのみをロードします。

ありがとう!

4

4 に答える 4

0

UTFマッピングには特定の言語を対象としたセクションがありますが、たとえばギリシャ語について言うように、文字がさまざまな領域に分割されている言語がたくさんあるため、あなたが何を意味するのか正確には明確ではありません-たとえば、多くのヨーロッパ言語は ASCII 文字 (AZ など) を使用し、160-240 エリアに設定された「拡張 Latin1」から選択された文字も使用します。

そのため、ルーマニア語を「反復」するツールは、最初にルーマニア語の文字を決定し、次にそれらを UTF で識別してから出力する必要があります。

まったくそうではなく、特定のグループを UTF から出力したい場合は、ベース エンコーディングとして UTF32 を使用することを検討することをお勧めします。これにより、文字の出力がはるかに簡単になります。

于 2013-06-16T14:01:50.600 に答える
0

言語で実際に使用される文字は、 CLDRで定義された模範セットにあります。

複雑な UnicodeSet を構築する代わりに、u+0000…u+10fff返されたスクリプトを反復してテストしますuscript_getScript (UChar32 codepoint, UErrorCode *err)。UnicodeSet は、回答として提供したサンプル コードに対して、内部的にほぼ同じことを行います。

于 2013-06-22T02:05:41.067 に答える