Emacs 23 と Lookup

Emacs 23 and Lookup

Emacs 23

Emacs 23は、テキストエディタ Emacs の2009年7月にリリースされたバージョンです。本テキストエディタは特に漢字の編集に適した多くの優れた特徴を持っています。

Lookup

Lookupは、Emacsで様々な辞書を一括して検索することが可能なソフトウェアです。その最新版である Lookup 2.0では、Emacs 23の機能を生かし、拡張漢字などに対する検索に対応しています。

Lookupは、様々なフォーマットの辞書に対応していますが、漢字に関しては以下の商用・フリーな辞書やデータに対応しています。また、テキストベースのデータベースならば、検索インデックスの位置などを示す簡単なサポートファイルを準備することで、容易に検索対象として組み込めます。

※ 現在の Lookup 2.0 は開発中のβ版であり、正式リリース時に上記の機能全てが必ずしも使用できるとは限らないことにご注意ください。

EmacsとIVS

Emacsは、使用するフォントバックエンドが「異体字シーケンス(IVS)」に対応している場合は、configure時に自動的にそれを検出します。EmacsがIVSに対応しているかどうかを調べたい場合は、configure時に生成される "config.h" の、 "HAVE_OTF_GET_VARIATION_GLYPHS" が "1" になっているかを確認してください。

Emacs が IVSに対応している場合は、IVS対応OpenTypeフォントを fontconfig のパスに入れてインストールしてください。OpenTypeフォントは、cmap14テーブルが入っていればIVSに対応しています。

IVS対応フォントをEmacsで使用するには、フォントをフォントセットに登録する必要があります。詳細は、Emacs Lisp リファレンスマニュアルを参照ください。以下は操作の一例です。

;; IVS対応フォント(ここでは小塚明朝 Pr6N)が、Emacsから見つかるかを確認します。
(find-font (font-spec :family "小塚明朝 Pr6N"))
→ <#font ....>
;; 現在のフレームで使用しているフォントセットで、小塚明朝を使用することを指示します。
;; 下記の例では、U+3400〜U+2FFFFの範囲の文字の表示に小塚明朝を優先して使用することを指示します。
(set-fontset-font nil '(#x3400 . #x2ffff) (font-spec :family "小塚明朝 Pr6N") nil 'prepend)

IVSの設定をした後、*scratch* バッファで(insert ?起 #xe0101) を実行してみてください。「起」の「己」が「巳」となっていれば、きちんとIVSが利用できています。

Lookupの「字通」サポートファイル `support-jitsuu.el' は、IVSを積極的に使用しています。IVSの効果を確認したい場合はこのファイルを参照してみてください。

EmacsとUnicodeの正規化

Unicodeでは、文字列を比較可能にするための前処理として「正規化」のアルゴリズムをUAX #15にて規定しています。

Unicodeの正規化アルゴリズムには NFD/NFC/NFKD/NFKC の4種類があります。これらのいずれも、正規化によって互換漢字は対応する統合漢字に置き換えられます。

漢字文字列の比較にあたっては、単なる正規化した文字列の比較では不十分な場合があります。また逆に、正規化において互換漢字の情報が喪失するのは不適切な場合があります。

互換漢字を維持する正規化として、Apple Macintosh のファイルシステム (HFS+) がファイル名などで使用する「修正NFD」があります。修正NFDの詳細はApple テクニカルレポート 1150にて述べられています。

Lookupに同梱(予定)されている `ucs-normalize.el' は、NFD/NFC/NFKD/NFKC および、この 修正NFD (HFS-NFD) とそれに対応する NFC (HFS-NFC) の実装が含まれています。Lookupには、SpotLight のEmacsインタフェース(`ndspotlight') がありますが、ndspotlight はこれを使用することで、日本語の濁音などの表示をHFS-NFCで行っています。(※ ucs-normalize.el は、バイトコンパイルしないと正常に動作しません。)

MacintoshでEmacsを使う場合は、default-file-name-coding-systemを、`ucs-normalize.el' で定義されている utf-8-hfs にすることで、`dired' 等で日本語を適切に表示し、またfind-file にて日本語ファイル名の自動検出等が可能になります。