Network Users' Group ``wheel'' / Dai ISHIJIMA's Page
文字フォント / FreeBSD vt(4) で日本語表示
#トップ #はじめに #ISO10646フォント作成 #vt(4)用に変換 #変換後のフォント
UTF-8に対応したターミナルでEUC-JPやShift JISの処理系を使う

初版: 2015-10-11
最終更新日: 2015-11-10


日本語BDFフォントを変換してFreeBSD 10.xのvt(4)コンソールで使う


●はじめに

FreeBSD 10.xの vt(4)コンソールではISO10646エンコーディングな文字フォントがあると、 日本語表示が可能だそうです。 このページでは、 既存のビットマップフォントからvt(4)コンソール向きのフォントを作成する方法 を紹介します。

このページの目的は、 既存のBDFフォント(あるいは別形式から変換したBDFフォント)から vt(4)コンソール向きの日本語フォントを作成する方法ですが、 「細けえことはどうでもいいんだ。変換後のフォントはよ!」 というみなさんは、途中をすっとばして 変換後のフォントの例の項目をご覧ください。


●JIS X 0201フォントとJIS X 0208フォントからISO10646フォントを

基本的に、以前、 BDFフォントを変換してUbuntu Linuxで利用する で書いた話と同じです。

というわけで、以下のように変換しました。 8x16rk.bdfやjiskan16.bdfはX11に付属してくるフォントです。

mbdf -c jisx0201.txt 8x16rk.bdf -c jisx0208.txt jiskan16.bdf > jiskan16u.bdf

○エンコーディング情報その他の修正

上に書いた操作でフォントは中途半端ではありますが、 ISO10646-1エンコーディングになります。 ただし、BDFフォントとしては不十分です。 どこが不十分かというと、BDFフォントのプロパティの 「CHARSET_REGISTRY」などがJISのまま、という点です。 ここはテキストエディタなどで
FONT -Misc-Fixed-Medium-R-Normal--16-150-75-75-C-80-JISX0201.1976-0
CHARSET_REGISTRY "JISX0201.1976"
CHARSET_ENCODING "0"
みたいな部分を
FONT -Misc-Fixed-Medium-R-Normal--16-150-75-75-C-80-ISO10646-1
CHARSET_REGISTRY "ISO10646"
CHARSET_ENCODING "1"
と修正します。 こういう シェルスクリプト に通すのが楽ちんですね。

また、「フォントの名前」を修正しておくのもよいかもしれません。 こういう フィルタ に通す方法もアリでしょう。

ここまでの処理でBDFフォントの下ごしらえは終了です。


●vtfontcvt(8)でvt(4)/vidcontrol(1)形式に変換

ISO10646エンコーディングに変換したBDFフォントは、 そのままではvt(4)では使えませんので、 vtfontcvf(8)コマンドで vt(4) / vidcontrol(1)形式に変換します。
% vtfontcvt jiskan16u.bdf jiskan16u.fnt
なお、行末コードがCR+LFだとvtfontcvtはうまく動きません。 LFだけにしておく必要があります。 ネットから拾ってきたフォントがうまく変換できない場合は こういうところもチェックしておきましょう。

このあと

# vidcontrol -f jiskan16u.fnt
でフォントが上の手順で変換したフォントになり、 日本語表示が可能になります。


●vt(4)の有効化も忘れずに

/boot/loader.conf みたいなのを書いておいてくださいね。


●変換したフォントの例


●表示サンプル

shinonome16+jiskan16 on FreeBSD vt console   unifont (multilingual font) on FreeBSD vt console
左は東雲フォントとjiskan16、右はunifont
(クリックで拡大します)

NEC PC-9801 like 16dot font on FreeBSD vt console   EPSON PC-286/386 like 16dot font on FreeBSD vt console
某PC98風フォント(左)と某互換機風フォント(右)


●関連リンク



ご質問などありましたらお気軽に