M+フォントを結合文字に対応させたい。

M+ FONTS を結合文字に対応させるためのスクリプトを作った。本家スクリプトと置き換えてmakeしてみてください。まだ中途半端なので仕様はいろいろ変えるかも。
http://gitorious.org/scripts-for-building-mplus-fonts/scripts-for-building-mplus-fonts/commits/mywork

結合文字についてはUnicode正規化を参照。
http://homepage1.nifty.com/nomenclator/unicode/normalization.htm
現状のPangoの実装では、フォント側がccmpテーブルを持っていなければ結合文字を正しく表示できない。たとえば、U+304C という表現の「が」は表示できても、 U+304B U+3099 の「が」は「か゛」のように濁点の付き具合が正しくなかったりする。
M+ FONTSにはccmpテーブルがないので、 やはりこういった文字を正しく表示できない。もちろんテキストをNFC正規化すれば大体は合成済み文字になるのだけれども、どのテキストもNFC正規化されているとは限らないし、「か」に半濁点の「か゚」など、合成済み文字がない文字もある。

このスクリプトは、M+フォントに「か゚」を追加できるようにも一応してある。

すでにインストールしてある本家版を削除して自家版をインストールするのは面倒なので、Firefox 3.6でWeb Font機能を使って試した。

上が本家版、下が自家版。どちらも「がゔぷゞヹ Ääůç」という文字列を表示したもの。かな文字の方がうまく行ってないのは何故だろうか。FirefoxのWeb Font実装のバグかもしれない。ローカルにインストールしたフォントの場合は正しく表示されるはず。そもそも自分で作った別のフォント「ふづき」ではうまく行っている方法だ。なにがおかしいのだろうか。

ついでにGoogle Chromeで試したもの。

本家版、自家版両方とも正しいグリフで表示されている。Google Chromeの内部で正規化を行っているのかもしれない。