8.

AFM / BDF / PCF|Adobe メトリックと X Window ビットマップフォントの歴史

編集
この記事の要点
  • .afm(Adobe Font Metrics)は PostScript Type 1 フォントのメトリック情報(字幅・カーニング・バウンディングボックス) をテキストで記述した補助ファイル。1985 年頃から使われた
  • .bdf(Bitmap Distribution Format)は Adobe / X Consortium が 1988 年に策定した X Window System 用のテキストベースビットマップフォント形式
  • .pcf(Portable Compiled Format)は BDF をバイナリコンパイルした X Window System ネイティブ形式。bdftopcf で変換
  • いずれも 1990 年代の Unix / X Window デスクトップ・ターミナル・LaserWriter プリンタなどで主役だったレガシー形式
  • 現代では Linux 端末でも TTF / OTF + FreeType レンダリング が主流で、BDF / PCF は古い xterm や軽量 WM 環境でしか目にしない
  • 組み込み機器・初期化前のフレームバッファコンソール・レトロコンピューティング・ピクセルパーフェクトな等幅フォント 愛好家の世界で今でも生き残っている
  • BDF はテキスト形式なのでテキストエディタで字形を直接編集できる。Misaki / 美咲フォント / Bitstream Vera のソースなど

概要

この記事ではフォント関連のレガシーかつ補助的な 3 つの形式をまとめて解説します。いずれも 1980 年代後半〜1990 年代の Unix / DTP 環境で重要な役割を果たし、現代では一線を退きつつも特定の用途で生き残っている形式です。

AFM(Adobe Font Metrics)は、PostScript Type 1 フォントの「字幅・カーニング・バウンディングボックス・グリフ名・属性」などを記述したテキスト形式のメトリックファイルです。1985 年頃に Adobe が PostScript と共に導入しました。Type 1 本体(.pfb / .pfa)にはこれらメトリック情報が含まれないため、印刷・組版ソフトは AFM を読んで「文字をどれくらい詰めて並べるか」を計算しました。.afm はテキストファイルなので人間が中身を読めるのが特長で、フォント名・著作権・字幅表が一覧できます。TrueType / OpenType の登場以降、メトリックがフォント本体に統合されたため独立 AFM は不要になりましたが、Type 1 アーカイブには今でも付属しています。

BDF(Bitmap Distribution Format)は、Adobe と X Consortium が 1988 年に策定した X Window System 用のビットマップフォント形式です。テキストファイルで、各グリフが何ピクセル × 何ピクセルでどのドットが点灯するかを 16 進数で明示的に記述します。可読性が高く、テキストエディタで字形を 1 ドット単位で編集できるのが大きな特徴です。日本語ビットマップフォントの伝説的存在「美咲フォント」「Misaki Gothic」や、海外なら「Bitstream Vera」の元データなど、ドット絵としてのフォント文化を支えた形式です。

PCF(Portable Compiled Format)は、BDF をバイナリにコンパイルした X Window System ネイティブのビットマップ形式です。bdftopcf コマンドで .bdf → .pcf へ変換し、X サーバが高速に読み込めるよう最適化されています。1990 年代の Linux / Unix デスクトップでは、フォントファミリは BDF ソース + PCF バイナリのセットで配布されるのが標準でした。xtermrxvt・初期の Mozilla / Netscape はこの形式のフォントで描画されており、Linux 文化を語るうえでも歴史的に重要です。

各形式の内部構造

AFM の例(テキスト形式)

StartFontMetrics 4.1
FontName Times-Roman
FullName Times Roman
FamilyName Times
Weight Roman
ItalicAngle 0
IsFixedPitch false
FontBBox -168 -218 1000 898
UnderlinePosition -100
UnderlineThickness 50
StartCharMetrics 315
C 65 ; WX 722 ; N A ; B 15 0 706 674 ;
C 66 ; WX 667 ; N B ; B 17 0 593 662 ;
...
EndCharMetrics
StartKernPairs 2058
KPX A T -55
KPX A V -74
...
EndKernPairs
EndFontMetrics

C 65 ; WX 722 ; N A ; B 15 0 706 674 ; は「文字コード 65(A)の字幅 722 単位、字形バウンディングボックス (15, 0, 706, 674)」を意味します。KPX A T -55 は「A と T が隣接したとき 55 単位詰める」(カーニング)です。

BDF の例(テキスト形式・1 グリフ分)

STARTFONT 2.1
FONT -misc-fixed-medium-r-normal--13-120-75-75-c-70-iso10646-1
SIZE 13 75 75
FONTBOUNDINGBOX 7 13 0 -2
STARTCHAR A
ENCODING 65
SWIDTH 538 0
DWIDTH 7 0
BBX 7 9 0 0
BITMAP
10
38
6C
C6
C6
FE
C6
C6
00
ENDCHAR
ENDFONT

16 進数 10 = 00010000 がドット 5 列目だけ点灯、38 = 00111000 が中央 3 ドット点灯…という形でドットパターンを並べていきます。テキストエディタで開いて 1 ドット単位で字形をいじれます。

PCF

BDF を bdftopcf font.bdf -o font.pcf でコンパイル。バイナリで、X サーバが mmap して即座にグリフテーブルを引けるよう最適化されています。fc-cache -fmkfontdir でフォント DB に登録します。

主な用途

  • AFM:Type 1 アーカイブの組版メトリック、TeX / LaTeX の pdftex.map 生成、フォント変換ツールの入力。
  • BDF / PCF:Linux コンソール(fbcon)の起動初期画面、軽量 X 端末(xterm -fn fixed)、組み込み機器の UI、レトロコンピューティング、ピクセルアート風フォント愛好家のコミュニティ。
  • ビットマップフォントの源流:絵文字以前のアスキーアートやドット絵文化を支えた。
  • ポストスクリプトレガシーの保守:DTP データを Type 1 から OTF へ移行する際、AFM を参照してメトリックを再計算することがある。

関連形式との比較

項目AFMBDFPCFTTF / OTF
表現メトリックのみビットマップビットマップ(バイナリ)アウトライン
形式テキストテキストバイナリバイナリ
登場198519881990 年代1991 / 1996
主な OS汎用(Type 1 補助)X WindowX Window全 OS
2026 年の役割レガシー補助レトロ愛好・組み込みレガシー X 環境主流

編集・変換ツール

  • FontForge:BDF / PCF / AFM すべてを読み書きできる万能 OSS フォントエディタ。GUI で 1 ドット編集が可能。
  • bdftopcf(X.Org 同梱):BDF → PCF コンパイラ。X 環境では標準。
  • pcf2bdf:PCF → BDF 逆変換 CLI。
  • otb2bdf / bdf2otb:OpenType Bitmap 形式との変換。
  • fonttools:AFM の読み書きが fontTools.afmLib モジュールで可能。
  • 美咲フォント / Misaki エディタ:日本語ビットマップフォントの世界では BDF ベースの専用エディタが伝統的に使われた。

注意点・落とし穴

  • 新規プロジェクトでの選定理由は限定的:UI フォントとしては TTF / OTF + FreeType の方が圧倒的に綺麗で軽い。BDF / PCF を選ぶのは「ピクセルパーフェクトを保証したい」「組み込みで FreeType を載せる余裕がない」など特殊事情だけ。
  • AFM はメトリックだけ:AFM 単体ではフォントは描画できない。必ず .pfb / .pfa とセットで扱う。
  • BDF は 1 サイズ 1 ファイル:12px と 14px は別ファイルになる。アウトラインフォントのように 1 ファイルで任意サイズが描けるわけではない。
  • PCF はバージョン依存:古い X サーバの PCF を新しい環境で読むとエンディアン違いで化けることがある。bdftopcf で再コンパイル推奨。
  • 文字コードの罠:古い BDF は ISO-8859-1 / JIS X 0208 などレガシーエンコーディングで配布されているため、Unicode 化が必要なら手動マッピングが要る。
  • ライセンス:美咲フォントなど OFL / Public Domain で配布されているものは自由に使えるが、商用 BDF も存在するので確認。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. TTF(.ttf)
  2. OTF(.otf)
  3. WOFF(.woff)
  4. WOFF2(.woff2)
  5. EOT(.eot)
  6. TTC / OTC(.ttc / .otc)
  7. PFB / PFM / Type 1(.pfb / .pfm)
  8. AFM / BDF / PCF(.afm / .bdf / .pcf)

最近更新/作成されたページ