X11用16ドットビットマップフォントmilkjfを使用する

Last modified: 2021-09-24

マイナーで古いが美しいビットマップフォントとして、X Window用のフォントのお部屋 (リンク切れにつきWayback Machine内)に置いてある “milkjf” を好んでおり、Emacsやmltermなどで結構長く使っている。

マイナーなためなのか、あるいはもうビットマップフォントは時代遅れなのかは分からないが、ディストリのパッケージにはなっていない場合がほとんどなので、手動で入れる必要がある。

Wayland環境においては、X11用のビットマップフォントは基本的に対応しておらず、使うことはできない。

ダウンロードとインストール

公式サイトが閉鎖されているため、Wayback Machive上のファイルURLに直リンクしている。

Wayback Machineからダウンロードしたファイルは展開時に “unexpected end of file” のメッセージが出るが、得られるファイルは正常で、中の各ファイルから後述するダイジェストが得られればOK。なお、.tar.gzファイルの最後に0x00のデータを1バイト追加すれば展開時のメッセージは出なくなる(得られるデータは同じ)。

2021年9月時点では、上のリンク先からダウンロードしたBDF形式のファイルは正常だが、PCF形式の書庫のみが無圧縮tarballとなってしまい、拡張子.tarのファイルの展開と同様にすることで中身が取り出せる。
GNU Tarではどちらのファイルもtar xfで正常に展開できる。

ダウンロード自動化スクリプト

下のスクリプトをコピペして実行属性を付けて実行すると、指定ディレクトリ内にBDF形式とPCF形式両方の書庫ファイルをダウンロードする。

実行にはzenityが必要。

[任意]ファイル名:get_milkjf.sh
#! /bin/sh

BDF_URL=http://web.archive.org/web/20061212224857/http://phe.phyas.aichi-edu.ac.jp/%7Ecyamauch/arch/milkjf_bdf.tar.gz
PCF_URL=http://web.archive.org/web/20060908184236/http://phe.phyas.aichi-edu.ac.jp/%7Ecyamauch/arch/milkjf_pcf.tar.gz

OUTDIR="$(zenity --file-selection --title "保存先ディレクトリ" --directory)" || exit 1
cd /tmp || exit 1
wget -t 1 ${PCF_URL} ${BDF_URL}
for F in bdf pcf; do
    if ! mv milkjf_${F}.tar.gz "${OUTDIR}"; then
        zenity --error --text "ファイル\"${F}\"の移動に失敗しました"
        rm milkjf_${F}.tar.gz -f
    fi
done

自作パッケージ

Ubuntuではppa:kakurasan/japaneseのPPAリポジトリにてパッケージを公開している。

パッケージ名はxfonts-milkjf

milkjfフォントの配布ファイルのダイジェスト

MD5

ファイル名 MD5
README.1ST 4ab1fc142fffbf703c4c5123ffdd6bc9
milkjf_8x16.bdf 9d931022dbae218cce55bbac2e5057b2
milkjf_8x16.pcf 7cf18683c462d4b74cb5a1d6fcb54d72
milkjf_8x16B.bdf 86b7ef87bcbf1afe24f8cd9e3a7f15bb
milkjf_8x16B.pcf 0e23d4ba15437909f8d01d21a33ecbf3
milkjf_8x16r.bdf 42a7d2ad966478bf20de8435473a0c98
milkjf_8x16r.pcf c93d99936eee9fa5adfb251b9f01e8eb
milkjf_8x16rb.bdf 4692f48851c8da424560470b678a1370
milkjf_8x16rb.pcf 6e9192053f2c2dadddb34b29ec962236
milkjf_k16.bdf f27262f964390f39012679bb0e4fba43
milkjf_k16.pcf bac2237af816955791dbb7c517189400
milkjf_k16b.bdf 5d0ee49e0b85c73f0e19c593c6f790c0
milkjf_k16b.pcf 1bc41d95f579f4576e6d3049e8e1f023

SHA-1

ファイル名 SHA-1
README.1ST 9b1c848eae78aea59a411e83a1b4ca878f0af0e8
milkjf_8x16.bdf e243d2c52afece81464bea40f78e96c18f459040
milkjf_8x16.pcf 90f30f150904e4e4c7a11c0181c5fc51a38536a7
milkjf_8x16B.bdf 9e19f55cf48d650f640c7b23a7ffa7b5a8f0a9e1
milkjf_8x16B.pcf 6dc231e489c04407964b9dd6f6de94d825125d0e
milkjf_8x16r.bdf 830afe8b37298b37be9537b3a9d9056c9a517cd8
milkjf_8x16r.pcf 3be2f0e0c125aa2152f7cbf8390a1722e1159ba8
milkjf_8x16rb.bdf 9bace9af4d3d2b457b6ee224ef527377e99a5423
milkjf_8x16rb.pcf fa9ca3ae8542c4f905c82659660ea5ecc7bf51e6
milkjf_k16.bdf 8e6bc32c9f0b3dae5456f227d7c178e7178e39ca
milkjf_k16.pcf 0fa81355636eeee0fd9a37b745719aa4fa133753
milkjf_k16b.bdf 936900ba16cf7affeee69a4c6e245fa8b9b9c0e1
milkjf_k16b.pcf 25152f06eb6c7890b0b19316a5465faaa450fa49

手動でのインストール

以下の例では/usr/share/fonts/local/というディレクトリに入れるものとする。

ここではPCF形式で配布されているファイルを用いる手順を掲載しているが、代わりにBDF形式のほうをダウンロードしてbdftopcfコマンドを各.bdfファイルに実行して.pcfファイルを得る方法もある。

まず、PCF形式のフォントファイルmilkjf_pcf.tar.gzを展開する。

(展開)
$ tar xf /path/to/milkjf_pcf.tar.gz

(作業ディレクトリに.pcfファイルがあることを確認)
$ ls
README.1ST       milkjf_8x16B.pcf  milkjf_8x16rb.pcf  milkjf_k16b.pcf
milkjf_8x16.pcf  milkjf_8x16r.pcf  milkjf_k16.pcf

中に6つの.pcfファイルがあるので、これらをそれぞれgzip圧縮する。下のようなシェル構文(Bシェル用)でまとめて処理すると楽。

$ for i in *.pcf; do gzip -9 $i; done

/usr/share/fonts/local/が無ければ作成しておく。

$ sudo mkdir -p /usr/share/fonts/local

ファイルをコピーする。

$ sudo cp *.pcf.gz /usr/share/fonts/local/

フォントを扱うためのfonts.dirを作成(更新)する。

$ sudo mkfontdir /usr/share/fonts/local/

Xサーバのフォントパスに/usr/share/fonts/local/が無ければ追加しておく。

[一部]ファイル名:/etc/X11/xorg.conf
Section "Files"
    # [...中略...]
    FontPath "/usr/share/fonts/local"  # 追加
EndSection

xorg.confの設定でフォントパスの追加をした場合、この設定はXサーバの次回以降の起動で有効になるので、Xを再起動する前に確認したいのであれば、手動でフォントパスを追加する

$ xset +fp /usr/share/fonts/local/

xfontselからフォントが認識されて使用可能であることを確認する。一番左の “fndry” の中に “milkjf” が含まれていればOK。

アプリケーションごとの設定例

mlterm

フォントの指定

[一部]ファイル名:~/.mlterm/font
ISO8859_1=-milkjf-*-medium-*-*-*-16-*-*-*-*-*-iso8859-1
JISX0201_KATA=-milkjf-*-medium-*-*-*-16-*-*-*-*-*-jisx0201.1976-*
JISX0208_1990=-milkjf-*-medium-*-*-*-16-*-*-*-*-160-jisx0208.1990-*
JISX0208_1983=-milkjf-*-medium-*-*-*-16-*-*-*-*-160-jisx0208.1990-*

その他の設定

[一部]ファイル名:~/.mlterm/main
not_use_unicode_font=true
only_use_unicode_font=false
fontsize=16

rxvt-unicode

下は2008年11月にrxvt-unicodeを初めて使ったときに掲載したものと同一の設定で、当時半角カナの表示が四角(豆腐)に化けてしまっていたが、バージョン9.22時点では正しく表示できている。

[一部]ファイル名:~/.Xresources
urxvt*font:\
  [codeset=ISO8859]x:-milkjf-*-medium-*-*-*-16-*-*-*-*-*-iso8859-1,\
  [codeset=JISX0201]x:-milkjf-*-medium-r-*-*-16-*-*-*-*-*-jisx0201.1976-0,\
  [codeset=JISX0208]x:-milkjf-*-medium-*-*-*-16-*-*-*-*-160-jisx0208.1990-0

GNU Emacs (X11)

Emacsではバージョン23からアウトラインフォントおよびそれに対するアンチエイリアシングがサポートされており、ビットマップフォントを好んで使用する人は少数と思われる。
また、Wayland環境で一部の人が脱X11のために使用している “GTKのみに依存しX11に依存しないEmacs” においては、X11のビットマップフォントを扱うことはできない。

[一部]ファイル名:~/.emacs.el
(when window-system
  (setq default-frame-alist
    (append
      (list
        [...中略...]
        '(font . "\
-milkjf-fixed-medium-r-normal--16-150-75-75-c-*")
      )
    default-frame-alist)
  )
)

  1. BDF形式はそのままでは使えないが、bdftopcfコマンドによりPCF形式に変換できる ↩︎

  2. X11上でビットマップフォントを用いる際に使用する形式で、gzip圧縮した状態でシステム上に配置される ↩︎