フォントセット(fontset)は、フォントのリストであって、 各フォントが文字コードのある範囲に割り付けられています。 個々のフォントだけでは、Emacsが扱う文字集合の範囲全体を表示できませんが、 フォントセットならば可能です。 フォントセットにはフォントと同様に名前があり、 フレームやフェイス向けに『フォント』を指定するときの フォント名のかわりにフォントセット名を使えます。 ここでは、Lispプログラムの制御のもとにフォントセットを定義することに 関する情報を述べます。
この関数は、指定文字列fontset-specに従って 新たなフォントセットを定義する。 文字列はつぎの形であること。
fontpattern, [charsetname:fontname]...コンマの前後の白文字は無視する。
文字列の始めの部分fontpatternは、 最後の2つのフィールドが‘fontset-alias’であることを除いて、 Xの標準フォント名であること。
新たなフォントセットには2つの名前、つまり、長い名前と短い名前がある。 長い名前はfontpatternそのものである。 短い名前は‘fontset-alias’である。 どちらの名前でもフォントセットを参照できる。 同じ名前のフォントセットがすでに存在する場合、 noerrorが
nil
であるとエラーを通知し、 この関数はなにもしない。省略可能な引数style-variant-pが
nil
以外であると、 フォントセットのbold(太字)、italic(斜体)、bold-italic(太字斜体)の 各変種も作成することを指示する。 これらの変種のフォントセットには短い名前はなく、 fontpatternのboldやitalicを変更して作った長い名前だけである。指定文字列ではフォントセットで使うフォントも指定する。 詳しくは下記参照。
‘charset:font’という構成は、 特定の1つの文字集合向けに(このフォントセットで)使うフォントを指定します。 ここで、charsetは文字集合の名前であり、 fontはその文字集合に使うフォントです。 この構成は、指定文字列で何回でも使えます。
明示してない残りの文字集合向けには、 fontpatternに基づいてEmacsがフォントを選びます。 つまり、‘fontset-alias’を1つの文字集合を指名する値で置き換えます。 ASCII文字集合向けには、 ‘fontset-alias’を‘ISO8859-1’で置き換えます。
これに加えて、いくつか連続したフィールドがワイルドカードであるなら、 Emacsはそれらを1つのワイルドカードにまとめます。 これは、自動的に拡大縮小したフォントの使用を避けるためです。 大きめのフォントを縮小したフォントは編集には使えません。 また、小さめのフォントを拡大したフォントも有用ではありません。 というのは、Emacsがそうするように、 もともと小さなフォントを使うほうがよいからです。
したがって、fontpatternがつぎのようであると、
-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
ASCII文字に対するフォント指定はつぎのようになります。
-*-fixed-medium-r-normal-*-24-*-ISO8859-1
また、Chinese GB2312文字に対するフォント指定はつぎのようになります。
-*-fixed-medium-r-normal-*-24-*-gb2312*-*
上のフォント指定に一致する中国語フォントがないかもしれません。 多くのXの配布には、familyフィールドが ‘song ti’か‘fangsong ti’の中国語フォントだけが含まれています。 そういった場合、‘Fontset-n’をつぎのように指定します。
Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\ chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
そうすると、Chinese GB2312の文字を除くフォント指定では familyフィールドが‘fixed’となり、 Chinese GB2312の文字に対するフォント指定では familyフィールドが‘*’となります。