2012-01-25 4 views
2

私は、特定の言語コードに関連付けられている文字セットを判断する方法を探しています。たとえば、英語の "en"を渡すと、a-zA-Zのユニコード文字が返されることがあります。アップルのプラットフォーム上のAPIが理想的かもしれませんが、もし私が自分自身をコード化することができるようなことがUnicodeで可能ならば、私は説明のために解決します。たぶん、文字クラスや何かが好きかもしれません。Unicode文字セットが特定の言語コードに関連付けられるかどうかを判断する方法はありますか?

+0

「a-zA-Z」は、「文字セット」に関係なく、同じ文字と同じUnicodeコードポイントです。あなたは "単語"文字と見なされるものを見つける方法を尋ねていますか? – Charles

答えて

4

CLDRデータベースには、異なる言語で使用される文字のセットがあります。その形式はXMLベースのLDMLですが、代わりの派生形式やAPIを見つけることができます。ICUが該当します。

セットはcharacter elementsで指定されていますが、かなり厄介なフォーマット(非常に広いテーブル)でも、既存のコンテンツのsummary chartsが見つかります。

おそらく、文字のCLDRデータがあなたの目的に役立つかどうかを素早く確認する最も良い方法は、一部のロケールのデータを見ることです。 root locale dataが(大きなテーブルの一部として)英語のロケールに関する次の情報が含まれています

exemplarCharacters main: [a b c d e f g h i j k l m n o p q r s t u v w x y z] 
exemplarCharacters auxiliary: [á à ă â å ä ã ā æ ç é è ĕ ê ë ē í ì ĭ î ï ī ñ ó ò ŏ ô ö ø ō œ ú ù ŭ û ü ū ÿ] 
exemplarCharacters currencySymbol[a b c č d e f g h i j k l ł m n o º p q r s t u v w x y z] 
exemplarCharacters punctuation: [\- ‐ – — , ; \: ! ? . … ' ‘ ’ " “ ” () \[ \] @ */\& # † ‡ ′ ″ §] 

私は、このセットは、一般的に広すぎることを示していると思います。例えば、英語の主な組(英字)は "ë"(Brontëについて考える)を含んでおらず、補助セットには英語で一般的に使われる文字に加えて、本当に外国語でしかない文字が含まれています。 "ō"。

これらのセットが何であるかについては、かなり曖昧な説明があります。ユースケースが異なると、異なるアプローチが必要になります。例えば、これらの組の和集合を使用して、フォントが所定の言語のテキストに適しているかどうか(すなわち、許容可能な形状のすべての文字を含むかどうか)を決定することは当然であろう。しかし、これは実際にはうまく機能するフォントを除外しますが、ごくまれにしか使用されない文字についてはグリフがありません。同様に、情報を使用してどの文字エンコーディングを使用できるかを判断すると、Unicodeエンコーディングだけが英語で受け入れられるという結論に終わるでしょう。

結論として、CLDRデータは便利なコンパイルですが、注意して使用する必要があります。

+0

cool。ご回答有難うございます。 –

関連する問題