void XFreeFontSet(display, font_set)
Display *display;
XFontSet font_set;
引き数 base_font_name_list はベースフォント名のリストである。これは Xlib がロケールに必要なフォントロードするために用いられる。 ベースフォント名はコンマで区切られたリストである。 また、終端が NULL 文字で、ホストポータブル文字エンコーディングの文字列 であると仮定される。 そうでない場合の実行結果は実装依存である。 コンマの直前直後の空白は無視される。
XLFD フォント名を用いれば、Xlib が多数のロケールに必要なフォントを取得 する際に、ロケールに依存しない単独のベースフォント名を使用できるように なる。 この単独のベースフォント名は、フォントのファミリを示すべきである。そ してこのファミリのメンバは、使おうとするロケールに必要な様々な文字集 合でエンコードされているべきである。
XLFD ベースフォント名はロケールに対して必要な、ある文字集合を明示的に 示すこともできる。 これにより、ロケールが必要とする文字集合で使う正確なフォントを、フォン ト選択を完全に行った状態で指定することができる。
ベースフォント名が XLFD 名でない場合、Xlib はそのフォントのフォントプ ロパティから XLFD 名を得ようとする。 この XLFD 名の取得に成功すれば、関数 XBaseFontNameListOfFontSet はクライアントに与えられた名前の代わりに、この XLFD 名を返す。
Xlib は
XFontSet でテキストを表示する際に使うフォントを選択するために、次のアルゴリズム を使う。 ロケールが必要とするそれぞれの文字集合を得るため、ベースフォント名のリ ストを検索し、以下の条件のうちサーバに存在するフォントの組を指す最初の ものを見つける。
例えば、あるロケールが次の文字集合を必要とすると考える。
ISO8859-1 JISX0208.1983 JISX0201.1976 GB2312-1980.0
ユーザは明示的に文字集合を指定する base_font_name_list を与えることが できる。この場合、指定したフォントが存在すれば使われることが保証される。 例:
"-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240-JISX0208.1983-0,\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120-JISX0201.1976-0,\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240-GB2312-1980.0,\ -Adobe-Courier-Bold-R-Normal--25-180-75-75-M-150-ISO8859-1"
代わりに、文字集合を省略した base_font_name_list を与えることができ、 この場合は Xlib はロケールが必要とする文字集合のフォントを選択する。 例:
"-JIS-Fixed-Medium-R-Normal--26-180-100-100-C-240,\ -JIS-Fixed-Medium-R-Normal--26-180-100-100-C-120,\ -GB-Fixed-Medium-R-Normal--26-180-100-100-C-240,\ -Adobe-Courier-Bold-R-Normal--25-180-100-100-M-150"
代わりに、Xlib が利用可能で XLFD プロパティの最小限の要求を満たすフォ ントの全てからの選択を行えるように、ユーザは単に単一のベースフォント名 を与えることもできる。 例:
"-*-*-*-R-Normal--*-180-100-100-*-*"
もし、十分なメモリがないか、現在のロケールがサポートされていないために XCreateFontSet がフォントセットを生成することができなければ、 XCreateFontSet は NULL を返し、missing_charset_list_return には NULL がセットされ、 missing_charset_count_return には 0 がセットされる。 現在のロケールが必要とする全ての文字集合に対してフォントが存在する場合、 XCreateFontSet は正しい XFontSet を返し、missing_charset_list_return には NULL がセットされ、 missing_charset_count_return には 0 がセットされる。
必要なフォントセットの1つ以上が存在しない場合、 XCreateFontSet は missing_charset_list_return にフォントが存在しない文字集合の名前(NULL で終る)のリストをセットし、 missing_charset_count_return に足りないフォントの数をセットする。 この文字集合はロケールのエンコーディングに必要な文字集合のリストから得 られる。ただし、Xlib が要求された文字集合を再マッピングできるような文 字集合は含まない。
必要な文字集合がいずれも存在しない場合か、Xlib でのロケール定義で、あ る特定の文字集合に対して必要なはずのフォントが見つからない場合は、 XCreateFontSet は NULL を返す。 そうでない場合には、 XCreateFontSet は font_set に正しい XFontSet を返す。
Xmb/Xwc 系の描画や計算の関数が呼び出された時、 XFontSet に足りない文字集合があった場合は、そのロケールの文字のいくつかは描画で きない。 def_string_return が NULL でなければ、 利用できるフォントの文字集合が、あるコードの文字を描画するのに必要な全 てのグリフを含んでいない時、 XCreateFontSet はこの XFontSet で描画されるグリフを表す文字列へのポインタを返す。 文字列は必ずしも現在のロケールの正しい文字で構成されているわけではなく、 フォントセットに対して必ずロードされたフォントで描画されるわけでもない が、クライアントはこの文字列を XFontSet で描画あるいは計算される文字列に含めることによってデフォルトのグリフを 描画あるいは計算することができる。
def_string_return に返される文字列が空文字列("")ならば、何のグリフも 描画されず、文字の送り幅も 0 である。 返される文字列は、NULL で終わる。 この文字列は Xlib が所有しているので、クライアントは修正したり解放した りしてはならない。 この文字列は、対応する XFontSet を引き数にして XFreeFontSet を呼び出すことによって解放される。 解放されるまでは、その内容が Xlib によって変更されることはない。
クライアントは欠けている文字集合とデフォルト文字情報からエラーメッセー ジを作り、一部のフォントが存在しない場合にプログラムの実行を継続するか どうか決めることの責任を負う。
返される XFontSet と欠けている文字集合文字列はそれぞれ XFreeFontSet と XFreeStringList で解放しなければならない。 クライアントが与える base_font_name_list は XCreateFontSet を呼び出した後にクライアントが解放してもよい。
関数 XFreeFontSet は指定したフォントセットを解放する。 存在するならば、関連するベースフォント名リスト、フォント名リスト、 XFontStruct のリスト、 XFontSetExtents が解放される。