FreeBSD 11で新生コンソールドライバvtがデフォルトで有効となり、いわゆるマルチバイト文字のコンソールでの表示が容易になった。しかし、現時点では対応フォントが組み込まれていないため、日本語は豆腐になってしまう。
vt
で使用する日本語フォントを準備する。今回はUFOのHEXファイルから、vt用のfntファイルを生成することにした。
フォントの生成にはvtfontcvt
コマンドを使う。-vオプションを付ける必要は全くないのだが、記事的には付けたほうが見栄えがするので(←
$ fetch https://github.com/akahuku/ufo/raw/master/build/ufo.hex $ vtfontcvt -v ufo.hex ufo.fnt Statistics: - glyph_total: 119866 - glyph_normal: 63456 - glyph_normal_right: 56410 - glyph_bold: 0 - glyph_bold_right: 0 - glyph_unique: 82238 - glyph_dupe: 37628 - mapping_total: 119865 - mapping_normal: 63455 - mapping_normal_folded: 18832 - mapping_normal_right: 56410 - mapping_normal_right_folded: 11709 - mapping_bold: 0 - mapping_bold_folded: 0 - mapping_bold_right: 0 - mapping_bold_right_folded: 0 - mapping_unique: 119865 - mapping_dupe: 0
生成したフォントをvt用のフォントディレクトリ/usr/share/vt/fonts/
に移動する。
# cp ufo.fnt /usr/share/vt/fonts/
FreeBSDの流儀からすると/usr/local/
以下にユーザー追加用フォントの場所がありそうなものだが、vidcontrol
のman
を見てもそれっぽい事が書かれていない。syscons
の流れからそうなってるのかしら?まぁ無いものは仕方ないので、素直に先のディレクトリに放り込んでおく。
ここで試しにフォントを適用してみる。
vidcontrol
コマンドでコンソールのフォントを変える事ができ、先のディレクトリに入れたフォントについてはパスと拡張子を付ける必要はない。リアルタイムでフォントが切り替わる様子は結構新鮮。
# vidcontrol -f ufo
一部のグリフの半分が変なのは何でだろう…?実用面ではこちらのページで配布されているfntを使った方がいいかも。