Network Users' Group ``wheel'' / Dai ISHIJIMA's Page
文字フォント / BDFフォントをWindowsで使う

初版: 2012-02-19
最終更新日: 2012-02-19


BDFフォントをTTFに変換してWindowsで利用する


●はじめに

このページを書きはじめた2012年においては、 高品位なフリーの日本語フォントが多く公開されるようになっています。 それらのフォントの多くは、 文字を拡大してもガタガタにならないTrueTypeなどのアウトラインフォントです。 また、それらの文字フォントを表示する際には、 特に斜めの線がギザギザにならないアンチエリリアスや クリアタイプなどの手法もとられています。

その一方、単なる好みの問題かもしれませんが、 フォントサイズが可変である必要でないのであれば、 昔なつかしいビットマップのほうがなんとなく見やすい、 と感じる人もいるようです。 そんな風に書いているこのページの作者もその一人です。

あるいは、印刷用原稿を作成する目的などで、 画面キャプチャに対してモノクロ二値化などの処理を行う場合は、 アンチエイリアスやクリアタイプなどの手法が とられていないほうがくっきりとした仕上りとなるでしょう。 そういった場合にはビットマップフォントを使うと ひょっとしたら有利かもしれません。

ターミナルエミュレータやテキストエディタだったら、 文字の大きさは一定のことが多いでしょう。 そんなときに、ビットマップフォントを使えないかと いろいろ試してみました。 このページはその記録です。

BDFフォントをubuntuで使う話こちらへどうぞ。


●BDFをTTFに変換するツールに感謝

そんなわけで、Windowsだったら「メモ帳」などのアプリケーションで 昔なつかしいビットマップフォントを使う方法はないものかと探していると、 という素敵なツールを公開してくださっているではありませんか。 Windows実行形式にソースコード付きとは、さらに素晴らしい。 これをつかえば、BDF形式のビットマップフォントを、 Windowsで使える(疑似)TrueType(TTF)に変換できます。

こんな便利なものがあるなら、 ありがたく使わせていただく以外に選択肢はありません。


●jiskan16.bdfと8x16rk.bdfを変換

では、さきほど紹介したbdf2ttfで、 昔なつかしい「jiskan16.bdf」と「8x16rk.bdf」を TTFに変換してみましょう。 そのまえにフォントの情報を書いておきます。

○jiskan16.bdf

わたしが使った jiskan16.bdfの先頭にあるコメントならびに著作権情報は以下のとおりです。
STARTFONT 2.1
COMMENT 16x16 kanji font
COMMENT from Japanese Industrial Standard, JIS X 9051-1984
COMMENT named "16-dots Matrix Character Patterns for Display Devices"
FONT -JIS-Fixed-Medium-R-Normal--16-150-75-75-C-160-JISX0208.1983-0
SIZE 6 78 78
FONTBOUNDINGBOX 16 16 0 2
STARTPROPERTIES 19
FONT_ASCENT 14
FONT_DESCENT 2
DEFAULT_CHAR 8481
COPYRIGHT "from JIS X 9051-1984, by permission to use"

○8x16rk.bdf

同じく8x16rk.bdfの先頭部分を抜粋して以下に示します。
STARTFONT 2.1
COMMENT
COMMENT  Copyright 1989 by Sony Corp.
COMMENT
COMMENT  Permission to use, copy, modify, and distribute this software and
COMMENT  its documentation for any purpose and without fee is hereby granted,
COMMENT  provided that the above copyright notices appear in all copies and
COMMENT  that both those copyright notices and this permission notice appear
COMMENT  in supporting documentation, and that the name of Sony Corp.
COMMENT  not be used in advertising or publicity pertaining to distribution
COMMENT  of the software without specific, written prior permission.  Sony
COMMENT  Corp. makes no representations about the suitability of this
COMMENT  software for any purpose.  It is provided "as is" without express or
COMMENT  implied warranty.
COMMENT
COMMENT  SONY DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
COMMENT  SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
COMMENT  FITNESS, IN NO EVENT SHALL SONY BE LIABLE FOR ANY
COMMENT  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
COMMENT  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
COMMENT  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
COMMENT  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
COMMENT
COMMENT  94.9.5 modified by K.Handa 
COMMENT    -- Property `PIXEL_SIZE' is corrected.
COMMENT
FONT -Sony-Fixed-Medium-R-Normal--16-120-100-100-C-80-JISX0201.1976-0
SIZE 16 100 100
…中略…
COPYRIGHT "Copyright (c) 1987, 1988 Sony Corp."
ENDPROPERTIES

○フォントの変換

「bdf2ttf」を用いて、BDFフォントをTTFフォントに変換するには、 Windowsのコマンドプロンプトから、
	bdf2ttf 出力.ttf フォントファイル.ini フォント1.bdf フォント2.bdf …
と入力します。詳細は「bdf2ttf」配布アーカイブに含まれる 「README_j.txt」をご覧ください。

今回使った設定ファイルは、先に書いたBDFフォントの情報から

Copyright = JIS X 9051-1984, Sony Corp.
Fontname = jiskan16-8x16rk
Version = 1.0
Trademark = jiskan16-8x16rk
CopyrightCP = JIS X 9051-1984, Sony Corp.
FontnameCP = jiskan16-8x16rk
TrademarkCP = jiskan16-8x16rk
とし、「jiskan16.ini」というファイル名としました。

「bdf2ttf」を展開した場所に、この「jiskan16.ini」と 変換元のBDFファイルである「jiskan16.bdf」と「8x16rk.bdf」を 置いて、

D:\bdf2ttf-2.0>bdf2ttf jiskan16.ttf jiskan16.ini 8x16rk.bdf jiskan16.bdf
とすると、「jiskan16.ttf」というファイルができあがります。 これをWindowsの「フォント」フォルダにコピー(インストール)すると、 「メモ帳」などの各種アプリケーションで使えるようになります。


●BDFフォントの調整など

以上の手順で実際に変換したフォントを使ってみると、 事前にBDFフォントを調整しておいた場合がよいケースがありました。

○半角円記号(0x5c)のための処理

上に書いた手順で変換すると、半角円(¥)記号がうまく表示されないことが ありました。Quick & Dirty Hackですが、文字エンコーディングを 「ISO8859-1」としたフォントを「8x16rk-iso8859-1.bdf」として 用意し、
D:\bdf2ttf-2.0>bdf2ttf jiskan16.ttf jiskan16.ini 8x16rk.bdf 8x16rk-iso8859-1.bdf jiskan16.bdf
とすれば、わたしの環境ではうまくいきました。 文字コード上は正しくないんでしょうね、多分。 修正部分ですが、diff形式で示すと以下のようになります。
*** 8x16rk.bdf	Sun Feb 19 16:49:00 2012
--- 8x16rk-iso8859-1.bdf	Sun Feb 19 17:07:12 2012
***************
*** 24,30 ****
  COMMENT  94.9.5 modified by K.Handa 
  COMMENT	   -- Property `PIXEL_SIZE' is corrected.
  COMMENT
! FONT -Sony-Fixed-Medium-R-Normal--16-120-100-100-C-80-JISX0201.1976-0
  SIZE 16 100 100
  FONTBOUNDINGBOX 8 16 0 -2
  STARTPROPERTIES 19
--- 24,30 ----
  COMMENT  94.9.5 modified by K.Handa 
  COMMENT	   -- Property `PIXEL_SIZE' is corrected.
  COMMENT
! FONT -Sony-Fixed-Medium-R-Normal--16-120-100-100-C-80-ISO8859-1
  SIZE 16 100 100
  FONTBOUNDINGBOX 8 16 0 -2
  STARTPROPERTIES 19
***************
*** 41,48 ****
  RESOLUTION_Y 100
  SPACING "C"
  AVERAGE_WIDTH 80
! CHARSET_REGISTRY "JISX0201.1976"
! CHARSET_ENCODING "0"
  DEFAULT_CHAR 32
  FONT_DESCENT 2
  FONT_ASCENT 14
--- 41,48 ----
  RESOLUTION_Y 100
  SPACING "C"
  AVERAGE_WIDTH 80
! CHARSET_REGISTRY "ISO8859"
! CHARSET_ENCODING "1"
  DEFAULT_CHAR 32
  FONT_DESCENT 2
  FONT_ASCENT 14

まぁ、一言でいえば、 ですね。

ISO8859-1なのにカタカナのフォントが混じってるのはオカシイやん、 という批判は甘んじて受けることにしましょう。 どうしても納得ができない場合は、

-*-Fixed-Medium-R-Normal--16-*-*-*-C-80-iso8859-1
なBDFフォント (「8x16.bdf」や「lt1-16-etl.bdf」など) を探して適当に編集して使ってください。 「文字コード0x5cは円マークではなくバックスラッシュだ」という方も (8x16.bdfのような)ちゃんとしたISO8859-1なフォントなら安心でしょう。

○いわゆる半角文字の幅がおかしいときの処理

BDFファイルの先頭にあるプロパティのうち、
SIZE 16 100 100
「SIZE」の次の数字(ここでは「16」)によっては、 いわゆる半角文字の幅がおかしくなるようです。 半角文字が8×16ピクセル、全角文字が16×16ピクセルであれば、 「16」にしてください。 同様に、半角文字が7×14ピクセル、全角文字が14×14ピクセルであれば、 「14」にするとよいようです。


●ピクセルサイズとポイントサイズ

ビットマップフォントのピクセルサイズと Windowsで使うときのサイズの関係ですが、 ここで示した16ドットフォントであれば、 「12」をサイズとして指定します。 「k14」なら「10.5」です(メモ帳では指定できませんでした)。
	Windowsでのサイズ = ピクセルサイズ × 75 ÷ 100
という関係なんでしょうか。


●利用したWindowsのバージョン


●BDFフォント以外のビットマップフォントを使うには

昔なつかしいビットマップフォントは、 いわゆるfontx形式でネット上に転がっていたりします。 もし、利用したいフォントがfontx形式であれば、 「fontx2bdf」 を使ってBDFフォントに形式を変換してください。

また、このfontx形式がよく使われていたころには、 さまざまな形式のフォントをfontx形式に変換するツールも配布されていました。 各種変換ツールもプラットフォーム非依存であれば、 多少の手直しで再コンパイルするなどして利用可能でしょう。

というわけで、使いたいフォントをfontx形式に変換→さらにBDFに変換後、 このページで紹介した方法でbdf2ttfでTTFに変換してみれば、 いろんなビットマップフォントが利用可能となります。


●関連リンク


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