技術的詳細

並べ替えとグループ化の関係

同梱の sort_order_ja.py の処理を置き換えたい方へ。

文書内で指定した読み仮名とは別に、内部で Unicode 符号順に並べ替えを行うためのソートキーを生成するような作りになっています。

この内部用ソートキーは Unicode 順で並べた時にグループ化が完成するように定義しなくてはなりません。例えば、US-ASCII中のアルファベットの前後に記号がありますが、これらを一つにまとめておきたい場合は何らかの内部用前置部を付加して、並べ替えた後で一塊になるように作る必要があります。

内部用ソートキーは get_string_to_sort 関数で返すことになります。他方返す文字列は人が意味をとれる文字列でなくてもよく、実際に sort_order_ja.py では人では読めない文字列を返すことがあります。しかしながら保守性のは観点からはある程度読めるもののほうがよいでしょう。

Unicode Database の NFD 含む各種正規化は、日本語はもちろんあらゆる非英語文字で並べ替えの役には立ちません。正規化と並べ替えは別の話です。

HTMLにおけるUnicodeの扱い

unicode_ids.py に関係するお話。

HTML 4 系統では、URL に 非US-ASCII文字は使えないことになっています。ただし補記において、もし出てきたらどのように取り扱うべきかという内容はあり、UTF-8 で符号化してオクテット毎に %hh の表現による URL に置き換えて通信を試みるよう記されています[HTML4.01付属書B2]

HTML 5 は HTML 4 と異なり、ブラウザの提供者が実装できることを前提として確認しながら作業が進められているそうで、本件については最新ブラウザの多く(全部?)が対応済みになっているものと思われます[HTML5URL]。でないとウィキペディアの日本語版とか記事にたどり着けないですし。しかしながら、仕様書を読む限りでは元の HTML ファイルが UTF-8 または 16 で記されていることが条件のように見えます。