Normalizationについて

検討中


将来的に、UnicodeのNormalizationの処理を搭載する予定でいます。
なので、改めて仕様の確認をしているところです。


unicode.orgのNormalizationTest.txt(試験用ファイル)を見ると、part0から3で、18000種程度の定義がある。

この表を処理しやすいようにコンパイルしてしまえば、あとは処理を書くだけだろうかとも思ってみましたが、思っただけで、実際には相当難しそうです。
特に、part2の処理はもはや変換表だけで済む問題には思えません。


あと、正規化されて出力されたものを改めて入力された場合、合成済み文字にする処理も必要になるのでしょうか。
情報が欠落していなければ処理を作ること自体は不可能ではないと思われますが、かなり大変な気がします。


不明点


Unicode正規化も併せて読んでおりますが、NormalizationTestにはないパターンが記述されていました。

例えば、「平仮名は+半角濁点」(U+306F U+FF9E)で、NFD/NFCがU+306F U+FF9E、NFKDでU+306F U+3099となるのは良いでしょう。NormalizationTestの通りです。
しかし、NFKCで「濁点付き平仮名は」(U+3070)となるのは、NormalizationTestにはないパターンです。
「半角仮名」での説明も同様で、NFKCでは濁点を連結して、いわゆる全角文字相当に変換するようですが、NormalizationTestには当該の記載がありません。
特例だと書かれていますが、このあたりをまとめた資料などはあるのでしょうか。



概案


part1については、Unicode1文字に対するNFC、NFD、NFKC、NFKDへの変換なので、変換表を作ってしまえば、処理自体は難しくないと見込まれます。
part0のUnicode1文字のものも、この変換表に融合できるでしょう。

part0のUnicode2文字のものと、part3は、別に変換表を作った方がサイズ的に都合が良いかと思っております。

しかし前述の通り、part2については、かなり難易度が高そうです。

0061~0062の文字列は例で、ここではaを使った場合の例示をしているようですが、実際には様々な文字に対応せねばならないはずです。
変換表と、プログラム処理の併用が必要になることは明々白々なので、この処理の完成は先になりそうですね。
実装するなら、ですが。

そもそも、このpart2を実装する意味があるのかどうかも良く分からない。
例えば、
0061 3099 093C 0334 093C 0062
に対して、NFC、NFD、NFKC、NFKDが定義されているわけですが、AとBが何であれ、こんな文字列になることは有り得ないので、苦労して実装する意味は殆どないのでしょう。
恐らく、「もし万一このような連結可能文字があった場合は、このような優先度をもって並べ直す」といったようなことを、言いたいのだと解釈しております。

2009/10/13(火)13:54 |Comments(3) |Trackback(0)

文字 | システム開発 | コンピュータ | [編集]

▲ページトップ

コメント

NFDと言えばこんなのも。
ttp://d.hatena.ne.jp/hasegawayosuke/20040626/p1
>Mac OS X の HFS Puls での正規化は NFD とは微妙に違うらしい
2009/10/13(火)17:05 |n | URL |編集
▲ページトップ

情報ありがとうございます。

正規化の対応は、問題が山積していそうです。
2009/10/13(火)18:51 |miraicorp | URL |編集
▲ページトップ

https://members.fsij.org/trac/codefestkyoto2005/wiki/kawabata

こんなのありますね。実際に ucs-normalize.el というファイル名で公開されているようです。
2009/10/13(火)22:41 | | URL |編集
▲ページトップ

コメントの投稿

gTef 0.11 beta 公開のお知らせ ホーム wg2
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR