以下の問答はちゃんとウラをとっていません。具体例のところは間違ってそうに見えます。
なんとなく用語の雰囲気をつかむために参照してください。
はい、Unicodeに関する質問にお答えします。どのようなことについてお聞きになりたいですか?
まず、結合文字列と合成済み文字の違いについて教えて欲しいです。
Unicodeでは、多くの言語で使用される結合文字列や合成済み文字などの複合文字を表現するための機能があります。
結合文字列は、複数の文字を結合してひとつの文字を表現するために使用されます。例えば、ラテン語アルファベットの"e"とアクセント記号の"´"を結合して、"é"という1つの文字を表現することができます。Unicodeでは、結合文字列は別々の文字としてコードポイントが割り当てられており、それらを組み合わせることで複合文字を作成することができます。
一方、合成済み文字は、複数の文字を合成して1つの文字を表現するために使用されます。例えば、ハングルの"ㅏ"と"ㄴ"を合成して"난"という1つの文字を表現することができます。Unicodeでは、合成済み文字は1つのコードポイントで表現されます。
結合文字列と合成済み文字は、どちらも複合文字を表現するための手段ですが、結合文字列は複数のコードポイントからなるため、文字列の長さが変わることがあります。一方、合成済み文字は1つのコードポイントからなるため、文字列の長さは変わりません。
正準等価性と互換等価性の違いについて具体例を挙げて教えてください。
Unicodeでは、同じ意味を持つ文字でも、複数の異なる表現方法が存在することがあります。これらの表現方法を区別するために、Unicodeでは正準等価性と互換等価性という概念があります。
正準等価性とは、2つの文字列が完全に同じ文字列になるように変換できる場合、つまり、文字コードの値が完全に一致する場合に成立します。例えば、英字の小文字"e"は、通常の形の"e"(U+0065)とアキュートアクセントを付けた"é"(U+00E9)の2つの表現方法がありますが、これらは正準等価であると言えます。
一方、互換等価性とは、2つの文字列が似た意味を持つが完全に同じ文字列にはならない場合に成立します。例えば、アポストロフィー記号の"'"(U+0027)と、アキュートアクセントの代用として使われる"’"(U+2019)は、見た目が似ていますが、Unicodeの規格上は別々の文字として扱われ、互換等価であると言えます。
具体例としては、下のようなものがあります。
正準等価性の例:
- "é"(U+00E9)と"e"(U+0065)+ アキュートアクセント(U+0301)
- "Å"(U+00C5)と"A"(U+0041)+ 王冠マーク(U+030A)
互換等価性の例:
- "ー"(U+30FC)と"―"(U+2015)
- "゛"(U+309B)と"´"(U+00B4)
互換等価性をもつペアの例をもっとたくさんあげてください。とくに日本語の例があるとうれしいです。
了解です。以下に、互換等価性をもつペアの例をいくつか挙げてみます。日本語の例も含めています。
- 「゛」(U+309B)と「´」(U+00B4)
- 「゜」(U+309C)と「`」(U+0060)
- 「ー」(U+30FC)と「―」(U+2015)
- 「~」(U+FF5E)と「〜」(U+301C)
- 「!」「ǃ」(U+01C3)、「。」(U+FF61)
- 「?」「﹖」(U+FE57)、「︖」(U+FE16)
- 「(」(U+0028)、「﹝」(U+FE5D)
- 「)」(U+0029)、「﹞」(U+FE5E)
- 「〔」(U+3014)、「﹝」(U+FE5D)
- 「〕」(U+3015)、「﹞」(U+FE5E)
以上は一例ですが、Unicodeには互換等価性をもつ文字が数多く存在します。