2007-12-25

M+ TESTFLIGHT 014をNTEmacsで使う

Emacsは、ひとつのフォントセットとして定義することで、M+と他のフォントとの混植が簡単にできる。まだ漢字部分は作りかけのM+だけど、他のフォントと組み合わせれば、現時点でも十分実用になる。

フォントセットの定義については、余所でも色々解説されているから省略。ここで本題。TESTFLIGHT 014時点では、M+ FONTSで配布されているフォントファイルには、NTEmacsで使う上で問題がある。

問題点はふたつ。

  • フォントファミリ名に+が入っているので、文字を表示するフォントとしてM+を使えない
  • OS/2テーブルのulCodePageRangeにLatin 1が含まれないので、Latin 1の範囲ではM+を使えない

解決策としては、フォントファイルを書き換えるのが手っ取り早い。ttfname3を使って編集すると、バイナリエディタなどを使って編集するよりは楽が出来る。使い方はマニュアル参照。TrueTypeはビッグエンディアンなので、Codepage1を編集するときに注意する。

以下詳細。まずファミリ名について。MicrosoftのTrueTypeの規格を流し読みした限りでは、OS/2とWindowsではUnicodeで記述しろ、とは書いてあるけど、記号類に関する制限とかは書いてない。メモ帳などでも普通に使えるので、恐らくNTEmacsが原因。

次にOS/2テーブルのulCodePageRange。これは、フォントに含まれるコードページを指定しているんだけど、M+ではこれにLatin 1が含まれていないため、Latin 1の範囲で使えない。Latin 1が含まれることをプログラムに伝えるために、最下位ビットを立てると、NTEmacsでもLatin 1部分をM+で表示できるようになる。……多分こういう仕組み。こちらはまるで自信なし。

0 件のコメント: