UnicodeNormalizerをリリースしました。
JavaScriptによる、Unicode規格のNormalizeを行うライブラリをリリースしました。
(はじめてCodeReposを使わせていただいてます)
コードはこちら↓
http://coderepos.org/share/browser/lang/javascript/UnicodeNormalizer
ドキュメントとデモはこちら↓
http://svn.coderepos.org/share/lang/javascript/UnicodeNormalizer/index.html
テストはこちら(実行に10分くらいかかります)↓
http://svn.coderepos.org/share/lang/javascript/UnicodeNormalizer/test.html
使い道ですが、日本語圏だと主にユーザの文字入力を正規化するのに使うんじゃないかと思います。多くのサービスでは文字入力において「住所は半角(あるいは全角)で入力してください」などという制限が設けられていますが、これを守るのって結構面倒ですよね。かわりに、全角でも半角でも入力可能としておき、入力後の文字にNormalizeをかけることで(この場合"NFKC"でのノーマライズが妥当でしょう)文字種を統一することができます。
例えばこういう入力をすると↓
〒111−1111
ナントカ区Aの①のⅧ
㈱イ㌔
NFKCで正規化してこうなる↓
〒111-1111
ナントカ区Aの1のVIII
(株)イキロ
非日本語の事情はよくわからんのですが、一つの文字に対して複数の表現方法があるような場合の正規化に使うんじゃないでしょうか(特にアクセント記号付きアルファベットとかハングルとか)。
ただ一つ、問題がありまして。サイズがでかい。計130KB。ルールベースでは正規化できないのでどうしてもテーブルを持つ必要があり、それででかくなってしまうのです。gzipで圧縮かけてサーバに置いてあげるのがよいかと思います。
で、これって需要有るんですかね!? Rubyで動くNormalizeのライブラリが見あたらなかったことを考えると(単に探すのが下手だっただけかも知れないけど)、全然需要がないような気がしたよ!
僕は形態素解析器の開発に参加していたことがあるので、Normalizeには結構思い入れがあるんですけど……。NFKCよりNFKDが好きです(NFKCより少ない文字入力で出力が確定するし、処理も軽い。辞書もNFKDで構築する必要があるのが難点かも。濁点が1文字になっちゃうので曖昧検索にも幾分相性悪し)。