PC Screen FontPC Screen Font(PSF)は、現在Linuxカーネルによってコンソールフォントに使用されているビットマップフォント形式である。PSFファイル形式のドキュメントは、Linuxのkbdユーティリティのソースコード内に含まれている[1]。 ファイルフォーマットファイルヘッダーすべてのPSFファイルはヘッダーで始まる。ヘッダーにはPSF1とPSF2の2種類が存在する。すべてのマルチバイト整数はリトルエンディアン(下位バイトが先)である。
すべてのpsf1グリフは幅8ピクセルである。 フォントモードpsf1ヘッダーにおけるフォントモードは、8ビット符号なし整数で、フォントに関する様々なフラグを含んでいる。
フォントフラグpsf2ヘッダーにおけるフォントフラグは、32ビット符号なし整数で、フォントに関する様々なフラグを含んでいる。現在は1つのフラグのみが存在する。
ファイルビットマップ実際のグリフデータはヘッダーの直後に続く。各グリフ内の各ビットはフォント内の1ピクセルを表しており、0は未描画、1は描画を示す。各グリフの各行は、バイト単位で揃えられるようにパディングされている。たとえば、12x12フォントでは1行あたり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ビット分の実データと、それぞれの行を最も近いバイト単位まで埋めるパディングが含まれている。行は最左列から順に格納される。 UnicodeテーブルPSFファイルがUnicodeテーブルを含む場合、各グリフはUnicodeテーブル内にエントリを持ち、最初のグリフはテーブルの最初のエントリに、2番目のグリフは2番目のエントリに対応する。Unicodeテーブル内のエントリの形式は、PSFヘッダーの種類によって異なる。 PSF1UnicodeテーブルPSF1ファイルのUnicodeテーブル内のエントリは、0xffffで終わる16ビットリトルエンディアンの符号なし整数の連続として表される。エントリ内の最初の整数群は、対応するグリフで表現されるUnicode文字を含む。これらのUnicode文字は、整数0xfffeに達するまで続く。その後は、0xfffeから始まり、個別のUnicode文字ではなく、グリフに対応するUnicode文字列を表す整数の連続が記述される。新たな0xfffeが現れるたびに新しい文字列の列が始まり、0xffffに到達するまで続く。たとえば、以下のような16ビットリトルエンディアンの符号なし整数の連続は、次のように解釈される。 0xdead 0xbeef 0xfffe 0x3141 0x5926 0xfffe 0x1234 0x5678 0xffff U+DEAD、U+BEEF、U+3141 U+5926の列、またはU+1234 U+5678の列が現れた場合には、該当するUnicodeテーブルのエントリに対応するグリフを表示する。 PSF2UnicodeテーブルPSF2ファイルのUnicodeテーブル内のエントリは、PSF1ファイルとほぼ同様である。ただし、Unicode文字はUTF-8で表され、Unicode文字列の開始は2バイトの0xfffeではなく1バイトの0xfeで示され、Unicodeエントリの終了も2バイトの0xffffではなく1バイトの0xffで示される。 脚注 |