PC スクリーン フォント(PSF) は、現在Linux カーネルでコンソールフォントとして使用されているビットマップ フォント形式です。PSF ファイル形式のドキュメントは、Linux kbd ユーティリティのソース コード内にあります。[1]この形式は、アイントホーフェン大学によって説明されています。[2]
ファイル形式
ファイルヘッダー
すべての PSF ファイルはヘッダーで始まります。ヘッダーの種類には PSF1 と PSF2 の 2 つがあります。すべてのマルチバイト整数は最下位バイト順 (リトルエンディアン) です。
すべての psf1 グリフの幅は 8 ピクセルです。
フォントモード
psf1ヘッダーのフォントモードは、フォントに関するさまざまなフラグを含む8ビットの符号なし整数です。
フォントフラグ
psf2 ヘッダーのフォント フラグ フィールドは、フォントに関するさまざまなフラグを含む 32 ビットの符号なし整数です。現在、フラグは 1 つだけです。
ファイルビットマップ
実際のグリフ データは、ヘッダーのすぐ後に続きます。各グリフの各ビットは、フォント内の 1 ピクセルを表します。0 は未描画、1 は描画済みです。各グリフの各行は、バイトの整数値にパディングされます。たとえば、12x12 フォントでは、行ごとに 2 バイトになります。12x12 PSF ビットマップの文字「A」は次のようになります。
パディング フォントデータ | +----------+ +--+ 000001100000 0000 000011110000 0000 000110011000 0000 001100001100 0000 011000000110 0000 110000000011 0000 111111111111 0000 111111111111 0000 110000000011 0000 110000000011 0000 110000000011 0000 110000000011 0000
実際のデータは 12 ビットで、各行を最も近いバイトに埋めるためのパディングが含まれます。行は左端の列から先に格納されます。
ユニコード表
PSF ファイルに Unicode テーブルが含まれている場合、すべてのグリフには Unicode テーブル内のエントリがあり、最初のグリフはテーブルの最初のエントリに対応し、2 番目のグリフは 2 番目のエントリに対応し、以下同様に続きます。Unicode テーブル内のエントリの形式は、PSF ヘッダーのタイプによって異なります。
PSF1 ユニコードテーブル
PSF1 ファイルの Unicode テーブル内のエントリは、0xffff で終わる一連の 16 ビットのリトル エンディアンの符号なし整数として表されます。エントリの最初の整数には、対応するグリフで表される Unicode 文字が含まれます。これらの Unicode 文字は、整数 0xFFFE に達するまで続きます。その後、0xfffe 値から始まる数字は、個々の Unicode 文字を表すのではなく、グリフに対応する一連の Unicode 文字を表します。0xfffe に達するたびに新しいシリーズが始まり、0xffff に達すると停止します。たとえば、次の一連の 16 ビットのリトル エンディアンの符号なし整数は、次のように解釈されます。
0xデッド 0xビーフ 0xfffe 0x3141 0x5926 0xfffe 0x1234 0x5678 0xffff
U+dead、U+beef、シーケンス U+3141 U+5926、またはシーケンス U+1234 U+5678 のいずれかが見られる場合、この Unicode テーブル エントリに対応するグリフを表示します。
PSF2 ユニコードテーブル
PSF2 ファイルの Unicode テーブル内のエントリは PSF1 ファイルのエントリと同じですが、Unicode 文字が UTF-8 で表現され、Unicode シーケンスが 2 バイト シーケンス 0xfffe ではなく 1 バイト シーケンス 0xfe で始まり、Unicode エントリが 2 バイト シーケンス 0xffff ではなく 1 バイト シーケンス 0xff で終わる点が異なります。
参考文献
- ^ Linux Kernel Organization (2007-01-28). 「psf.h」.
- ^ TUE (1999). 「psf フォーマット」.
