2005年3月27日日曜日

フォントのグリフを修正

 僕はかなりの作業をEmacsの中で行なっています。そのEmacsで使っているフォントは東雲ゴシック14ドットです。

 このフォントはとても良いフォントですが、僕には以前から一点だけ不満がありました。それは半角ゼロのグリフです。

 僕は半角ゼロと半角大文字アルファベットのオーの区別が一見して分かるように、ゼロの中に斜線が入ったグリフが好みです。しかし東雲ゴシックでは、そうなっていないんですね。そこで自分が普段利用している東雲ゴシック14ドットフォントの半角ゼロのグリフを変更してみました。

 フォントの元となるBDFファイルは上記サイトから入手できます。その内変更するのは以下のものです。

  • shinonome-0.9.11/bdf/shnm7x14a.bdf
  • shinonome-0.9.11/bdf/shnm7x14ab.bdf
  • shinonome-0.9.11/bdf/shnm7x14abi.bdf
  • shinonome-0.9.11/bdf/shnm7x14ai.bdf

 これらのファイル中からゼロのグリフのデータを探します。具体的にはENCODING 48の所がそれです。例えばshnm7x14a.bdfならば以下のようになっています。

STARTCHAR 30
ENCODING 48
SWIDTH 960 0
DWIDTH 7 0
BBX 7 14 0 -2
BITMAP
00
00
30
48
84
84
84
84
84
84
48
30
00
00
ENDCHAR

 このデータのBITMAP以下の14個の数値はそれぞれ16進数になっていて、これを2進数に変換すると、フォントのグリフになります。

00 → 0000000000000000
00 → 0000000000000000
30 → 0011000000000000
48 → 0100100000000000
84 → 1000010000000000
84 → 1000010000000000
84 → 1000010000000000
84 → 1000010000000000
84 → 1000010000000000
84 → 1000010000000000
48 → 0100100000000000
30 → 0011000000000000
00 → 0000000000000000
00 → 0000000000000000

 これのBITMAP以下の数値を次のように変更します。

00 → 0000000000000000
00 → 0000000000000000
30 → 0011000000000000
48 → 0100100000000000
8c → 1000110000000000
94 → 1001010000000000
94 → 1001010000000000
A4 → 1010010000000000
A4 → 1010010000000000
C4 → 1100010000000000
48 → 0100100000000000
30 → 0011000000000000
00 → 0000000000000000
00 → 0000000000000000

 変更したファイルを保存して、以下のようにbdfファイルをpcf形式にコンパイルし、gzipで圧縮します。

% bdftopcf -o shnm7x14a.pcf shnm7x14a.bdf
% gzip shnm7x14a.pcf

 出来上がったshnm7x14a.pcf.gzを、今まで使っていたフォントに上書きします(念のため元のフォントデータはどこかに保存しておいた方が良いでしょう)。僕が使っているDebian Sargeならば、該当フォントの格納場所は /usr/X11R6/lib/X11/fonts/misc/ 以下です。従って、

# mv shnm7x14a.pcf.gz /usr/X11R6/lib/X11/fonts/misc/

を行ないます。後はshnm7x14ab.bdf、shnm7x14abi.bdf、shnm7x14ai.bdfにも同じような変更を施せばOKです。

 参考サイト:blankspace(->Emacs->slashed zero bdf)



0 件のコメント:

コメントを投稿