Adobe社のGlyph Bitmap Distribution Format(BDF)は、ビットマップフォントを保存するためのファイル形式です。内容は、人間とコンピュータの両方が読みやすいテキストファイル形式になっています。BDFは主にUnix X Window環境で使用されています。現在では、より効率的なPCFフォント形式や、 OpenType、TrueTypeなどのスケーラブルフォントにほぼ置き換えられています。
1988年にXコンソーシアムはX Windowスクリーンフォントの標準としてBDF 2.1を採用したが[ 2 ] 、X WindowはPCF、Opentype、Truetypeなどの他のフォント標準に大きく移行した。
バージョン2.2では、非西洋文字のサポートが追加されました。例えば、 BDF 2.2フォント定義のグリフでは、左から右へのレンダリングだけでなく、上から下へのレンダリングも指定できるようになりました。
BDFフォントファイルは3つのセクションで構成されています。
ENDFONT声明。これは、ASCII大文字「A」を表すグリフを1つ含むフォントの例です。このグリフはGNU Unifontから取得されています。
上記の例では、グローバル宣言は行で始まりSTARTFONT、CHARS行で終わります。
STARTFONT 2.1このBDFファイルのバージョンはバージョン2.1と定義されています。
FONT -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1フォントファミリーとフェイス名をX 論理フォント記述として定義します。
SIZE 16 75 75これは、16ポイントのフォントであり、X軸解像度が75dpi、Y軸解像度が75dpiであると定義されています。これはX Windowにおける標準です。
FONTBOUNDINGBOX 16 16 0 -2フォントの境界ボックスは、幅16ピクセル、高さ16ピクセルで定義され、左下隅はx = 0、y = -2から始まります。境界ボックスは16×16のセルとして定義されていますが、個々のグリフごとに上書きできることに注意してください。たとえば、「A」グリフは幅が8ピクセルしかありません。
STARTPROPERTIES 2は、2 つの特別なプロパティが続くことを宣言します。STARTPROPERTIESは BDF 仕様ではオプションです。 X Window では、プロパティ と によりFONT_ASCENT、FONT_DESCENTすべてのグリフのベースラインからの高さをそれぞれ表示できます。FONT_ASCENT 14は、高さ 16 ピクセルのうち 14 ピクセルがベースラインより上にあることを宣言します。はFONT_DESCENT 2、高さ 16 ピクセルのうち 2 ピクセルがベースラインより下にあることを宣言します。 は、セクションENDPROPERTIESの最後に表示されますSTARTPROPERTIES。
CHARS 1これは、1文字が後に続くことを宣言します。Adobeは現在このファイル形式をGlyph BDFと呼んでいますが、CHARS仕様の最終版ではこのキーワードが残されています。
特定の単語で始まる行は、COMMENTBDFファイル内に挿入できます。COMMENTそのキーワードに続く行の内容はすべて無視されます。
上記のグローバル宣言に続いて、以下のエントリは各グリフごとに繰り返される場合があります。
STARTCHAR U+0041バージョン 2.1 以前では文字の開始位置を、バージョン 2.2 ではグリフの開始位置を指定します。この特定の文字の文字列名は でU+0041、Unicode の規則ではコードポイントの16 進数 41 (10 進数 65、ASCII 文字「A」) を表します。バージョン 2.1 以前では、文字名文字列は 14 文字に制限されていました。バージョン 2.2 では、グリフ名文字列は最大 65,535 文字まで使用できます。
ENCODING 65フォント内でこのグリフの10進コードポイントを宣言します。
SWIDTH 500 0X 軸のスケーラブル幅を 500、Y 軸を 0 (デフォルト) と宣言します。これにより、次のグリフへの X 軸オフセットは発生しますが、次のグリフへの Y 軸オフセットは発生しません (つまり、グリフは一直線上に表示されます)。スケーラブル幅は、文字の実際のポイントサイズの 1000 倍です。これは、Adobe Font Metric (AFM) ファイルで使用される単位と同じです。ピクセル数は、Pixels = スケーラブル幅/ 1000 * 解像度/ 72 として計算されます。この例では、スケーラブル幅は 500、解像度はこのフォントでは 75 dpi です。75 は 72 とほぼ等しいので、ピクセル数はグリフの全幅 (グローバルに 16 ピクセルとして定義) に 500 / 1000 を掛けた値、つまりこのグリフの幅は 8 ピクセルです。
DWIDTH 8 0グリフのデバイス幅を宣言します。この場合、グリフがレンダリングされた後、次のグリフの開始位置は、現在のグリフの原点からX軸方向に8ピクセル、Y軸方向に0ピクセルオフセットされます。デバイス幅は必ずしもグリフの幅と等しいとは限りません。これは、現在の位置を次のグリフの開始位置に移動するためのX軸方向のオフセット値です。
スケーラブル幅はプリンタ上の高解像度グリフの幅を計算するために使用され、デバイス幅はディスプレイデバイス上のグリフの幅を計算するために使用されます。したがって、スケーラブル幅はデバイス幅よりも高い精度で指定されます。
BBX 8 16 0 -2幅8ピクセル、高さ16ピクセルの境界ボックスを宣言します。文字の左下隅は、X軸方向に0ピクセル、Y軸方向に-2ピクセルオフセットされます。
BITMAP現在のグリフのビットマップが始まります。この行の後には、Y軸のピクセルごとに1行が続きます。この例では、グリフの高さは16ピクセルなので、16行が続きます。各行には、行内のピクセルの16進数表現が含まれます。「1」ビットは、レンダリングされたピクセルを示します。各行は8ビット(1バイト)境界に丸められ、右側にゼロがパディングされます。この例では、グリフの幅はちょうど8ピクセルなので、1行あたりちょうど8ビット(1バイト)を占め、パディングはありません。ラスターデータの行の最上位ビットは、左端のピクセルを表します。
ENDCHAR現在のグリフを終了します。
宣言STARTCHARは、ENDCHARフォント内の各グリフに対して繰り返されます。
ENDFONTフォント内のすべてのグリフが列挙された後、ファイルの最後の行として表示されます。
BDF仕様のバージョン2.2では、非西洋フォントのサポートが追加されました。これらの追加機能により、X軸とY軸上で原点を正または負に移動できます。これにより、右から左への書き方だけでなく、上から下への書き方(例えば中国語)にも対応できます。多言語フォントのサポートには、以下の値を使用します。
METRICSETは、書き込み方向 0 の場合は 0、書き込み方向 1 の場合は 1、同じフォント内で両方の書き込み方向の場合は 2 (初期グローバル領域内) に設定されます。伝統的な西洋の左から右へのスクリプトでは を使用しますMETRICSET 0。
SWIDTH1および は、それぞれ およびとDWIDTH1同じパラメータを持ちます。 はグリフに必須です。そのオフセットは正または負の値をとることができます。SWIDTHDWIDTHDWIDTH1METRICSET 1
VVECTORモード0グリフからモード1グリフへの遷移時に、X軸オフセットとY軸オフセットを定義します。モード1からモード0グリフへの遷移時には、逆のオフセットが適用されます。
この方式は、2つの書き方向を容易にサポートします。従来、フォントは128または256のコードポイントを持っていました。現在、Unicodeでは100万を超えるコードポイントが使用可能です。フォントには数千ものグリフが含まれる可能性があり、その中には左から右、右から左、上から下へと書くべきものも含まれています。このような多方向の書き方を実現するには、DWIDTH1各SWIDTH1グリフを創造的に活用する必要があります。
国際対応のために追加されたキーワードに加え、バージョン2.2ではCONTENTVERSION宣言が追加されました。このキーワードの後には、フォントのバージョン番号を示す整数が続きます。
より詳細な情報については、バージョン2.2の仕様書を参照してください。
STARTPROPERTIESX Window のフォントユーティリティは、BDF ファイルのセクションで指定できるいくつかのプロパティをサポートしています。 [ 3 ]一般的な BDF ファイルはASCIIエンコーディングです。X Window のプロパティは、ASCII の拡張であるISO 8859-1エンコーディングを使用して指定されます。これらのプロパティには以下が含まれます。
CAP_HEIGHT(整数)大文字のベースラインからの高さ(大文字の高さを参照)。COPYRIGHT(文字列)[ 4 ]著作権表示。DEFAULT_CHAR(符号なし整数)未定義のグリフに対して表示するデフォルトの文字(グリフ)。FACE_NAME(文字列[ 4 ] ) このフォントのフェイスの名前。FONT(文字列) [ 4 ]フォントの X Window 名。FONT_ASCENT(整数)行間隔計算のための、ベースラインからの高さ。FONT_DESCENT(整数)行間隔計算のための、ベースラインより下のディセンダー。FONT_VERSION(文字列) [ 4 ]フォントのバージョン。FOUNDRY(文字列) [ 4 ]鋳造所の名前。FAMILY_NAME(文字列) [ 4 ]フォントファミリー名。NOTICE(文字列) [ 4 ]一般的なコメント。POINT_SIZE(整数)ポイント(タイポグラフィ)を参照してください。別途指定されていない場合、EMspace = round(POINT_SIZE/10)、ENspace = round(POINT_SIZE/20)、THINspace = round(POINT_SIZE/30)となります。RESOLUTION_X(符号なし整数)RESOLUTION_Y(符号なし整数)SLANT(文字列) [ 4 ]「R」はローマン体、「I」はイタリック体、「O」は斜体、「RI」は逆イタリック体、「RO」は逆斜体、「OT」はその他であり、数字は多形傾斜機能を示します。WEIGHT_NAME(文字列) [ 4 ]このフォントの太さ(「太字」と「標準」が一般的ですが、決まった列挙はありません)。X_HEIGHT(整数)小文字の「x」のベースラインからの高さ(x-heightを参照)。