共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

フォントを文字セットに一致させる

1 つのフォントには、ロケールの文字を描画するのに使用されるグリフのセットが含まれます。しかし、指定したロケールのために、次のような作業を実行する場合があります。

XLFD 名の最後の 2 つのフィールドは、フォントにどのグリフが含まれているか、セットから特定のグリフを獲得するのにどの値が使用されるかを識別します。これらの最後の 2 つのフィールドは、フォントに含まれるグリフのエンコーディングを識別します。

-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1

この XLFD 名の最後の 2 つのフィールドは、iso8859 1 です。これらのフィールドは、ISO8859-1 標準グリフがフォントに含まれるよう指定しています。さらに、ISO8859-1 標準の文字コード値を使用して、各文字に対応するグリフを索引付けするようにも指定しています。

アプリケーションがデータを受け渡すために使用するフォント charset は、選択するロケールによって決まります。フォント charset 情報はロケールの選択に基づくので、フォント指定はアプリケーションによってハードコードしてはいけません。その代わりに、ロケール固有の app-defaults ファイルにフォント指定を格納して、ローカライズされたバージョンの app-defaults ファイルを作成できます。

さらに、フォントはフォント・セットとして指定されます。フォント・セットは、複数のフォントを指定するのに XLFD が使用する Xlib の概念です。XLFD のフォント charset フィールドは、フォント・セットを作成して、ユーザが指定したロケールに基づいてこれらのフィールドを埋める Xlib コードで指定されます。

日本語、中国語、韓国語などの多くの言語で、単一のエンコーディングをサポートするのに複数の charset が組み合わされています。このような場合、文字を描画するためには必ず複数のフォントをオープンしなければなりません。さらに、データは各フォントに対応するセグメントへと解析されなければならず、場合によりそれらのセグメントの文字値をグリフ索引に変換しなければなりません。XFontset は、指定ロケールの文字データを描画するのに必要なすべてのフォントの集合ですが、このような問題も処理します。さらに、描画のためのセットとメトリック・ルーチンが提供されます。それらは内部で文字列を一貫した文字セットのセグメントに分け、値をグリフ索引に変換します。これらのルーチンはアプリケーション開発者の負担を軽減します。アプリケーション開発者は、ユーザのフォント・セットと新しい X11R5 描画とメトリック・アプリケーション・プログラム・インタフェース (API) だけを必要とします。