XCreateFontSet(3X11) — NEWS-OS Programmer’s Manual
名称
XCreateFontSet, XFreeFontSet − 国際テキスト記述フォントセットを生成および開放する
形式
XFontSet XCreateFontSet(display, base_font_name_list, missing_charset_list_return,
missing_charset_count_return, def_string_return)
Display ∗display;
char ∗base_font_name_list;
char ∗∗∗missing_charset_list_return;
int ∗missing_charset_count_return;
char ∗∗def_string_return; void XFreeFontSet(display, font_set)
Display ∗display;
XFontSet font_set;
引数
displayX サーバとの接続を指定します。
base_font_name_list
基本フォント名を指定します。
def_string_return
失ったキャラクタセットの文字列を返します。
font_setフォントセットを指定します。
missing_charset_count_return
失ったキャラクタセットの数を返します。
missing_charset_list_return
キャラクタセットを返します。
解説
XCreateFontSet 関数は指定ディスプレイのフォントセットを生成します。 XCreateFontSet が呼ばれたとき、フォントセットは現在のロケールに依存します。 font_set はフォント、およびキャラクタ情報の獲得 また font_set のロケールでのテキストをイメージする際の 直後の呼び出しにて使用されます。 base_font_name_list 引数は、 ロケールに必要なフォントをロードするために Xlib が使用する 基本フォント名リストです。 基本フォント名はいカンマで分けられたリストで構成されます。 文字列は NULL で終わり、 Host Portable Character Encoding(ホストポータブルキャラクタエンーディング)である とみなされます。 そうでなれば、結果はインプリメンテーションしだいです。 カンマの直前/直後の空白は無視されます。 XLFD フォント名の使用により、 ロケールに依存しない基本フォント名から様々なロケールに 必要なフォントを Xlib が獲得できます。 一つの基本フォント名はロケールごとに 様々なキャラクタセットでエンコードされる フォントの系列です。 XLFD 基本フォント名はロケールに必要なキャラクタセットに 独自の名称を付けることができます。 このことで、 ユーザはロケール毎に必要なキャラクタセットで使用する 実際のフォントを指定でき、フォント選択を 完全にコントロールできます。 基本フォント名が XLFD 名でない場合、 Xlib はそのフォントのフォント属から XLFD 名を獲得しようとします。 この動作が XLFD 名獲得にて成功すると、 XBaseFontNameListOfFontSet 関数はクライアント提供の名称の代わりに、この XLFD 名を 返します。 以下のアルゴリズムは、 XFontSet を使用して、 テキスト表示する際に使用されるフォント選択で使用されます。 ロケールごとに必要な各フォントキャラクトに関して、 基本フォント名リストはサーバに存在するフォントセットに 名前を付ける以下のケースの最初の一つに対して検索 されます。
1.CharSetRegistry および CharSetEncoding フィールド に必要なキャラクタセットまたはキャラクタスーパーセット を指定する、最初の XLFD 準拠の基本フォント名。 指定キャラクタセットの基本フォント名を使用するインプリメンテーション は必要なキャラクタのスーパーセットであり、 例えば ASCII キャラクタの ISO8859-1 です。
2.必要なキャラクタセットをサポートするために 再マップできる一つ以上のキャラクタセットを 指定する一つ以上の XLFD 準拠の基本フォント名の 最初のセット。 Xlib インプリメンテーションは必要なキャラクタセットから 一つ以上のキャラクタセットまでの様々なマッピングを認識でき、 それらのフォントを使用できます。 例えば、 JIS ローマンは 円マークおよび上線に置き換えられる チルド及びバックスラッシュ付きの ASCII; JIS ローマンフォントが無効の場合、 Xlib はこのキャラクトセットをサポートする ISO8859-1 フォントを ロードできます。
3.最初の XLFD 準拠のフォント名または、 必要なキャラクタセットと結合し (XLFD フォント名の CharSetRegistry および CharSetEncoding フィールドを置き換える)、 XLFD フォント名を獲得できる 最初の XLFD 以外のフォント名。 ケース 1 のように、 インプリメンテーションは必要なキャラクタセットの スーパーセットを使用できます。
4.いくつかのインプリメンテーション依存の方法にて、 そのキャラクタセットでテキストをイメージするのを サポートする一つ以上のフォントへマップできる最初の フォント名。 例えば、 ある必要なロケールをキャラクタセットとみなします。
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"
または、 ある最小の XLFD 属性の内容に合致する 有効な全てのフォントから、 Xlib が選択できるような一つの基本フォント名を提供します。
"-∗-∗-∗-R-Normal--∗-180-100-100-∗-∗"
XCreateFontSet がフォントセットの生成に有効なら、 そしてメモリが不十分、または カレントのロケールがサポートされていないなら、 XCreateFontSet は NULL を返し、 missing_charset_list_return が NULL に設定され、 missing_charset_count_return がゼロに設定されます。 カレントのロケールに必要な全てのキャラクトセット に対するフォントが存在する場合、 XCreateFontSet は無効な XFontSet を返し、missing_charset_list_return が NULL に 設定され、missing_charset_count_return がゼロに設定されます。 一つ以上の必要なキャラクタセットに対するフォントが 存在しない場合、 XCreateFontSet はフォントが存在しない一つ以上の NULL で終わるキャラクタセット のリストへ missing_charset_list_return を設定します。 そのキャラクタセットはロケールのエンコーディングに必要な キャラクタセットのリストからのもので、 Xlib が必要なキャラクタセットを再マップできる キャラクタセットを含みません。 必要なキャラクタセットのどれに対してもフォントが 存在しない場合、 または Xlib におけるロケールの定義が 特殊キャラクタセットに対してフォントが存在することおよび そのキャラクタセットに対してフォントが見つからない場合、 XCreateFontSet は NULL を返します そうでなければ、 XCreateFontSet は有効な XFontSet を font_set に返します。 Xmb/wc 描画または測定関数が存在しないキャラクタセット を持つ XFontSet によって呼び出された場合、 ロケール内のいくつかのキャラクタセットは 記述できません。 def_string_return が NULL 以外の場合、 有効なフォントのキャラクタセットが コードポイントを描くために必要な全てのグリフ を含まない場合には、 この XFontSet によって描くグリフを表す 文字列へのポインタを XCreateFontSet が返します。 文字列は必ずしも現在のロケールの中で 有効なキャラクタから構成されるとは限りません。 また、フォントセットに対してロードされた フォントによって描かれるとも限りません。 しかし、クライアントは XFontSet によって描かれ測定される文字列内に この文字列を含むことで、 グリフを描いたり、測定できます。 def_string_return に返される文字列が空の文字列 ("") の場合、 グリフは描かれず、 文字幅がゼロになります。 返される文字列は NULL で終了します。 それは Xlib によって所有されますので、 クライアントが変更または開放すべきではありません。 XFontSet は XFreeFontSet を使って開放します。 開放されるまで、 その内容は Xlib によって変更されません。 クライアントは存在しないキャラクタセット からのエラーメッセージを生成することに 責任があり、 いくつかのフォントが存在しなかった場合の 操作を続けることを選択できます。 返された XFontSet および missing_char_list_return は、それぞれ XFreeFontSet および XFreeStringList によって開放されます。 クライアント提供の base_font_name_list は XCreateFontSet を呼んだ後でクライアントが XFree する必要があります。 XFreeFontSet 関数は指定フォントセットを開放します。 関連する base_font_name_list、default_string_return は XFree で開放してください。
関連事項
XExtentsofFontSet(3X11), XFontsOfFontSet(3X11), XFontSetExtents(3X11)
Xlib − C Language X Interface
NEWS-OSRelease 4.2.1R