Unicode では、アラビア数字に 2 つの表現があるのはなぜですか?
質問
Unicodeの仕様@Wikipediaを読んでいました(アラビア語ユニコード)そして、アラビア語の各数字には2つのユニコードコードポイントがあることがわかります。たとえば、1 は U+0661 および U+06F1 として定義されます。
どれを使えばいいのでしょうか?
解決
による コードチャート, 、U+0660 ..U+0669 は ARABIC-INDIC DIGIT 値 0 ~ 9 であり、U+06F0 ..U+06F9 は拡張アラビアインド数字値 0 ~ 9 です。
Unicode 3.0 の本 (5.2 が現在のバージョンですが、これらは一度設定されるとあまり変わりません) では、U+066n シリーズのグリフは「アラビア語 - インド数字」とマークされ、U+06Fn シリーズのグリフは「」とマークされています。東部アラビア・インド数字 (ペルシア語とウルドゥー語)」。また、次のようにも記されています。
- U+06F4 - 「ペルシア語とウルドゥー語の異なるグリフ」
- U+06F5 - 「ペルシア語とウルドゥー語はアラビア語とは異なるグリフを共有しています」
- U+06F6 - 「アラビア語とは異なるペルシア語のグリフ」
- U+06F7 - 「ウルドゥー語のグリフはアラビア語とは異なります」
比較のために:
- U+066n:٠١٢٣٤٥٦٧٨٩
- U+06Fn:۰۱۲۳۴۵۶۷۸۹
または、情報をタイトルにして拡大します。
U+066n:٠١٢٣٤٥٦٧٨٩
U+06Fn:۰۱۲۳۴۵۶۷۸۹
または:
U+066n U+06Fn
0 ٠ ۰
1 ١ ۱
2 ٢ ۲
3 ٣ ۳
4 ٤ ۴
5 ٥ ۵
6 ٦ ۶
7 ٧ ۷
8 ٨ ۸
9 ٩ ۹
(これらのいずれかが表示されるかどうか、またそれらがどの程度明確に区別されるかは、ブラウザーとマシンにインストールされているフォントに依存します。4 と 6 の違いがはっきりとわかります。5 は両方ともほとんど同じに見えます。)
この情報に基づいて、中東のアラビア語を使用する場合は、U+066n 一連の数字を使用します。ペルシア語またはウルドゥー語を使用している場合は、U+06Fn 一連の数字を使用します。Unicode アプリケーションとして、どちらのコード セットも有効な数字として受け入れる必要があります (ただし、2 つのセットの数字が混在するシーケンスには目を疑うかもしれません。あるいは、そのまま放置するかもしれません)。
他のヒント
一般に、そのような情報をアプリケーションにハードコーディングすべきではありません。
- Windows では、LOCALE_SNATIVEDIGITS を指定して GetLocaleInfo を使用できます。
- Mac では、kCFNumberFormatterZeroSymbol を使用した CFNumberFormatterCopyProperty。
- または次のようなものを使用します ICU.
アラビア語の国では、デフォルトでアラビア語とインド語の数字を使用しない国があります。したがって、アラビア語 -> アラビア語 - インド数字を直接マッピングすることはできません。
いずれにせよ、ユーザーがコントロール パネルでデフォルトを変更した可能性があります。
どのコードあなたは、数4を表現するためのU + 0664またはU + 06F4を好むのですか?
(4,4)
一貫性を保つためには、あなたが1、2、および他の重複したコードのために使用したコードこの選択ガイドをさせます。