2012-02-22 2 views

答えて

2

これは「文字」の意味によりますが、これはあいまいです。 Unicodeでは、「文字」は通常、文字に割り当てられたコードポイントを意味し、「文字」の直感的な概念と正確に一致します。

U + FB01などの単一のコードポイントは、UTF-8なぜなら、UTF-8は、コード化されたフォームを生成するための明白なアルゴリズムを定義しているからです。

フィリピンなどの直感的な文字は、それぞれがUTF-8表現を持つコードポイントまたはコードポイントのシーケンスとして異なる表現を持つことがあります。 Unicodeの正規化ルールは、そのような選択肢間のマッピングの一部を定義します。

しかし、U + FB01(U + 0066 U + 0069、すなわち "f"に続いて "i")の互換性マッピングは、直感的な文字のアイデンティティを保持しません。結束は2つの通常の文字にマッピングされます。

一方、 "f"と "i"のような2文字の間にU + 200D ZERO WIDTH JOINER(ZWJ)を挿入することで、結紮行動を求めたり、提案したりすることができます。ある意味では、シーケンスU + 0066 U + 200D U + 0069はフィギュアの代替表現ですが、これは文字の正式な特性ではなく、ソフトウェアをZWJに注意を払うかどうかによって決まります。

+0

ジョイナーの良い点! – beerbajay

+1

OPがラテン合字互換コードポイントを扱っているのはなぜですか?レガシーエンコーディングでラウンドトリップするためのものです。合字を扱う正しい方法は、フォントが決定を下すようにして、場合によってはフォントが提供する標準および/またはオプションのものを選択することです。あなたは自分でエンコードする必要はありません。それは、私がそうしなければならなかった時がありました - 抗議の下で。 – tchrist

2

文字がutf-8be encoded as0xEF 0xAC 0x81をすべきであるが、同じ文字は一緒に0x66 0x69あるfと順番にi、に分解することができます。あなたの質問は、実際にthis chart from the unicode specificationによって直接答えている:あなたが見ることができるようにNFKDNFKCフォームがf + i組み合わせを使用しながら、NFDNFC正規化はまだリガチャに同じコードポイントを使用している

normalized forms of ligatures

+0

ニース、ありがとう。 – Cartesius00

関連する問題