4

発音区別符号を組み合わせる場合、それらは文字としてカウントされますか?なぜなら、私が知る限り、それらは整形式のUnicodeで他の文字としか組み合わせることができないからです。

Unicodeコードポイントが文字であるかどうかを判断するICU関数は、1つのコードポイントしか使用しないため、特定のコードポイントについて、それらが発音区別符号と組み合わされているかどうか、または発音区別符号であるかどうか、何と組み合わされているかを知ることはできません。次のような構造を使用して、Unicode対応の正規表現に似たものを実装しようとしています。

while(is_letter(codepoint))

codepointただし、以前のコードポイントや他の照合マークと照合される発音区別符号が実際にある場合にどうなるかについては、かなり心配しています。

これは安全ですか?または、発音区別符号やその他の照合マークを明示的に見つけて無視する必要がありますか?

編集:私が本当にする必要があるのは、コードポイントではなく、文字を繰り返すことです。

この質問はXY問題の犠牲者です。私の実際の問題について質問する必要があります。

4

1 に答える 1

4

私はあなたが何をしようとしているのか完全には明確ではないので、これがあなたが探している答えではない場合は事前に謝罪しますが、:

発音区別符号を組み合わせる場合、それらは文字としてカウントされますか?

大まかに言えば、発音区別符号は「文字」ではなく「マーク」としてカウントされます。たとえば、U + 0301 COMBINING ACUTE ACCENTは、<ś>のように、3種類の「マーク」の1つである「ノンスペーシングマーク」です。ただし、「文字」としてカウントされる「変更文字」は、それでも発音区別符号と見なされる場合があります。たとえば、U + 02C0 MODIFIER LETTER GLOTTAL STOPは、<sˀ>のように、「モディファイアレター」です。

Unicode文字データベースのメインファイル(警告:1.3 MBのテキストファイル)を見ると、どの文字が「修飾子文字」(Lm)として分類され、どの文字が「非スペーシングマーク」(Mn)として分類されているかがわかります。 「間隔マーク」(Ms)または「囲みマーク」(Me)。

于 2011-11-26T21:03:16.660 に答える