いくらアウトラインフォントが綺麗だからといってもこればっかりはそうも言ってられない。
freetype のシステム自体が問題なのかも知れないが。
small_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf medium_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf large_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf small_size = 8 medium_size = 10 large_size = 16
large の 16 はまあいいとして、中が 10、小が 8。小に関しては 8 でもくっついてしまう。
このように、freetype では指定したフォントにおなじサイズのビットマップがある場合、ラスタライズされず、ビットマップが利用される。普通ならこれで使えばいいのではないかと思う。
ビットマップがないフォント、例えば
small_font = /usr/share/fonts/mplus-ipa/M+1P+IPAG.ttf medium_font = /usr/share/fonts/mplus-ipa/M+1P+IPAG.ttf large_font = /usr/share/fonts/mplus-ipa/M+1P+IPAG.ttf small_size = 8 medium_size = 10 large_size = 16
にする。そうすると、
となり、読めないことはないが、ラスタライズが汚い。
そこで、どうせビットマップならビットマップを最大限に活用してやろうという企みが働くわけです。
Momonga Linux でも日本語のビットマップフォントは
[lugia@lugia-castle japanese-bitmap]$ ls 10x20rk.pcf.gz mplus_f12bi-euro.pcf.gz 10x20rkb.pcf.gz mplus_f12bi-jisx0201.pcf.gz 10x20rkbi.pcf.gz mplus_f12bi.pcf.gz 10x20rki.pcf.gz mplus_f12i-euro.pcf.gz 12x24a.pcf.gz mplus_f12i-jisx0201.pcf.gz 12x24ab.pcf.gz mplus_f12i.pcf.gz 12x24abi.pcf.gz mplus_h10-euro.pcf.gz 12x24ai.pcf.gz mplus_h10-jisx0201.pcf.gz 12x24rk.pcf.gz mplus_h10.pcf.gz 12x24rkb.pcf.gz mplus_h10b-euro.pcf.gz 12x24rkbi.pcf.gz mplus_h10b-jisx0201.pcf.gz 12x24rki.pcf.gz mplus_h10b.pcf.gz 7x14a.pcf.gz mplus_h10bi-euro.pcf.gz 7x14ab.pcf.gz mplus_h10bi-jisx0201.pcf.gz 7x14abi.pcf.gz mplus_h10bi.pcf.gz 7x14ai.pcf.gz mplus_h10i-euro.pcf.gz 7x14maru.pcf.gz mplus_h10i-jisx0201.pcf.gz 7x14rk.pcf.gz mplus_h10i.pcf.gz 7x14rkb.pcf.gz mplus_h12-euro.pcf.gz 7x14rkbi.pcf.gz mplus_h12-jisx0201.pcf.gz 7x14rki.pcf.gz mplus_h12.pcf.gz 7x14rkmr.pcf.gz mplus_h12b-euro.pcf.gz 8x16a.pcf.gz mplus_h12b-jisx0201.pcf.gz 8x16ab.pcf.gz mplus_h12b.pcf.gz 8x16abi.pcf.gz mplus_h12bi-euro.pcf.gz 8x16ai.pcf.gz mplus_h12bi-jisx0201.pcf.gz 8x16rk.pcf.gz mplus_h12bi.pcf.gz 8x16rkb.pcf.gz mplus_h12i-euro.pcf.gz 8x16rkbi.pcf.gz mplus_h12i-jisx0201.pcf.gz 8x16rki.pcf.gz mplus_h12i.pcf.gz fonts.alias mplus_h12rw-euro.pcf.gz fonts.dir mplus_h12rw.pcf.gz ipa-10x20b.pcf.gz mplus_j10-iso.pcf.gz ipa-10x20m.pcf.gz mplus_j10-jisx0201.pcf.gz jiskan16-1990.pcf.gz mplus_j10.pcf.gz jiskan16-1990b.pcf.gz mplus_j10b-iso.pcf.gz jiskan16-1990bi.pcf.gz mplus_j10b-jisx0201.pcf.gz jiskan16-1990i.pcf.gz mplus_j10b.pcf.gz jiskan16-2000-1.pcf.gz mplus_j10bi-iso.pcf.gz jiskan16-2000-1b.pcf.gz mplus_j10bi-jisx0201.pcf.gz jiskan16-2000-1bi.pcf.gz mplus_j10bi.pcf.gz jiskan16-2000-1i.pcf.gz mplus_j10i-iso.pcf.gz jiskan16-2000-2.pcf.gz mplus_j10i-jisx0201.pcf.gz jiskan16-2000-2b.pcf.gz mplus_j10i.pcf.gz jiskan16-2000-2bi.pcf.gz mplus_j12.pcf.gz jiskan16-2000-2i.pcf.gz mplus_j12b.pcf.gz jiskan16.pcf.gz mplus_j12bi.pcf.gz jiskan16b.pcf.gz mplus_j12i.pcf.gz jiskan16bi.pcf.gz mplus_q06r-euro.pcf.gz jiskan16i.pcf.gz mplus_q06r.pcf.gz jiskan24-2000-1.pcf.gz mplus_s10-euro.pcf.gz jiskan24-2000-1b.pcf.gz mplus_s10.pcf.gz jiskan24-2000-1bi.pcf.gz mplus_s10b-euro.pcf.gz jiskan24-2000-1i.pcf.gz mplus_s10b.pcf.gz jiskan24-2000-2.pcf.gz mplus_s10bi-euro.pcf.gz jiskan24-2000-2b.pcf.gz mplus_s10bi.pcf.gz jiskan24-2000-2bi.pcf.gz mplus_s10i-euro.pcf.gz jiskan24-2000-2i.pcf.gz mplus_s10i.pcf.gz jiskan24-2003-1.pcf.gz shnm6x12a.pcf.gz jiskan24-2003-1b.pcf.gz shnm6x12ab.pcf.gz jiskan24-2003-1bi.pcf.gz shnm6x12abi.pcf.gz jiskan24-2003-1i.pcf.gz shnm6x12ai.pcf.gz jiskan24.pcf.gz shnm6x12r.pcf.gz jiskan24b.pcf.gz shnm6x12rb.pcf.gz jiskan24bi.pcf.gz shnm6x12rbi.pcf.gz jiskan24i.pcf.gz shnm6x12ri.pcf.gz jiskano16-1997.pcf.gz shnm7x14a.pcf.gz jiskano16-1997b.pcf.gz shnm7x14r.pcf.gz jiskano16-1997bi.pcf.gz shnm8x16a.pcf.gz jiskano16-1997i.pcf.gz shnm8x16ab.pcf.gz jisksp14.pcf.gz shnm8x16abi.pcf.gz k14-1990.pcf.gz shnm8x16ai.pcf.gz k14-1990b.pcf.gz shnm8x16r.pcf.gz k14-1990bi.pcf.gz shnm8x16rb.pcf.gz k14-1990i.pcf.gz shnm8x16rbi.pcf.gz k14-2000-1.pcf.gz shnm8x16ri.pcf.gz k14-2000-1b.pcf.gz shnm9x18a.pcf.gz k14-2000-1bi.pcf.gz shnm9x18ab.pcf.gz k14-2000-1i.pcf.gz shnm9x18abi.pcf.gz k14-2000-2.pcf.gz shnm9x18ai.pcf.gz k14-2000-2b.pcf.gz shnm9x18r.pcf.gz k14-2000-2bi.pcf.gz shnm9x18rb.pcf.gz k14-2000-2i.pcf.gz shnm9x18rbi.pcf.gz k14-oldkanji.pcf.gz shnm9x18ri.pcf.gz k14-oldkanjib.pcf.gz shnmk12.pcf.gz k14-oldkanjibi.pcf.gz shnmk12b.pcf.gz k14-oldkanjii.pcf.gz shnmk12bi.pcf.gz k14.pcf.gz shnmk12i.pcf.gz k14b.pcf.gz shnmk12maru.pcf.gz k14bi.pcf.gz shnmk12marub.pcf.gz k14i.pcf.gz shnmk12marubi.pcf.gz k20.pcf.gz shnmk12marui.pcf.gz k20b.pcf.gz shnmk12min.pcf.gz k20bi.pcf.gz shnmk12minb.pcf.gz k20i.pcf.gz shnmk12minbi.pcf.gz knmhn12x.pcf.gz shnmk12mini.pcf.gz knmzn12x.pcf.gz shnmk12p.pcf.gz maru14.pcf.gz shnmk12pb.pcf.gz maru14b.pcf.gz shnmk12pbi.pcf.gz maru14bi.pcf.gz shnmk12pi.pcf.gz maru14i.pcf.gz shnmk14.pcf.gz maru16.pcf.gz shnmk14b.pcf.gz maru16b.pcf.gz shnmk14bi.pcf.gz maru16bi.pcf.gz shnmk14i.pcf.gz maru16i.pcf.gz shnmk14min.pcf.gz maru18.pcf.gz shnmk14minb.pcf.gz mplus_f10-euro.pcf.gz shnmk14minbi.pcf.gz mplus_f10.pcf.gz shnmk14mini.pcf.gz mplus_f10b-euro.pcf.gz shnmk16.pcf.gz mplus_f10b.pcf.gz shnmk16b.pcf.gz mplus_f10bi-euro.pcf.gz shnmk16bi.pcf.gz mplus_f10bi.pcf.gz shnmk16i.pcf.gz mplus_f10i-euro.pcf.gz shnmk16min.pcf.gz mplus_f10i.pcf.gz shnmk16minb.pcf.gz mplus_f12-euro.pcf.gz shnmk16minbi.pcf.gz mplus_f12-jisx0201.pcf.gz shnmk16mini.pcf.gz mplus_f12.pcf.gz warabi12-2000-1.pcf.gz mplus_f12b-euro.pcf.gz warabi12-2000-1b.pcf.gz mplus_f12b-jisx0201.pcf.gz warabi12-2000-1bi.pcf.gz mplus_f12b.pcf.gz warabi12-2000-1i.pcf.gz [lugia@lugia-castle japanese-bitmap]$
こんなにいっぱい(?)ある。おおまかにみると、shinonome, mplus, marumoji club, warabi などとなっているが、みてわかるとおり、8px などどこにもない。8px では日本語は表現は無理に近いということになる。さて、10px と 16px だが、10px は mplus にしかないのでそれを使おう。16px は楽しく Marumoji Club のフォントでも使おうか。
freetype ではビットマップフォントも指定できるので、そのまま指定することもできるが、fontforge で開いてもらうとわかるが、(mplus_j10.pcf.gz を開いたところ)
英語がない。
したがって、英語を合成しなければいけない。
- まず、対応する英文フォントを開く。(この場合、mplus_j10-iso.pcf.gz)
- 次に、日本語の方のエンコーディングを Unicode BMP に変更する。
- [ファイル]→[フォントを出力]で、アウトラインは TTF、ビットマップに In TTF/OTF を選択してホームディレクトリとかに一度保存。
- 開き直す。
- で、英語の方から日本語の方にコピー。
- もう一度保存。
- fontforge で開き直して保存されているか確認する。
指定してみる。
small_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf medium_font = /home/lugia/mplus_j10.ttf large_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf small_size = 8 medium_size = 10 large_size = 16
はい。変わりませんね。それで正しいです。sazanami のほうでビットマップ部分に mplus が利用されているためです。
さて、では本番。
Marumoji Club の方も英文がないので、どっかから適当にかっさらって来ましょう。ここでは shnm8x16a.pcf.gz (shnm8x16r.pcf.gz は Shift-JIS) を利用します。
できたら指定します。
small_font = /usr/share/fonts/sazanami/gothic/sazanami-gothic.ttf medium_font = /home/lugia/mplus_j10.ttf large_font = /home/lugia/maru_16.ttf small_size = 8 medium_size = 10 large_size = 16