GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Defining-Fontsets.html ・ emacs-doc.conao3.com

24.15 フォントセットの定義

X上で動作する場合、Emacsはstandard-fontset-specの値に応じて標準的なフォントセットを自動的に作成します。このフォントセットの名前は

-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard

あるいは、略して単に ‘fontset-standard’。

GNUstepおよびmacOSでは標準フォントセットはns-standard-fontset-specの値を用いて作成され、MS Windowsではw32-standard-fontset-specの値を用いて作成されます。

標準フォントセットの太字、斜体、および太字斜体のバリエーションが自動的に生成されます。これらの名称には、‘medium’の代わりに‘bold’が、‘r’の代わりに‘i’が、あるいはその両方が用いられます。

Emacsは、‘Font’ リソースまたは ‘-fn’ 引数で指定した任意のデフォルトの ASCII フォント、あるいは起動時にEmacsが検出したデフォルトフォントに基づいて、フォントセットを自動的に生成します。これが 起動時フォントセット であり、その名称は fontset-startup です。Emacsは、charset_registry フィールドを ‘fontset’ に、charset_encoding フィールドを ‘startup’ に置き換え、得られた文字列を用いてフォントセットを指定することで、このフォントセットを生成します。

例えば、このような形式のフォントでEmacsを起動すると、

emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"

Emacsは以下のフォントセットを生成し、それを初期のXウィンドウフレームに使用します:

-*-courier-medium-r-normal-*-14-140-*-*-*-*-fontset-startup

スタートアップフォントセットは、そのフォントがサポートするすべての文字に対して、指定したフォント、またはレジストリとエンコーディングが異なるバリアントを使用し、それ以外の文字については ‘fontset-default’ にフォールバックします。

Xリソース ‘Emacs.Font’ では、実際のフォント名と同様にフォントセット名を指定できます。ただし、‘Emacs*Font’ のようなワイルドカードリソースにフォントセット名を指定しないよう注意してください。このワイルドカード指定は、メニュー用など他のさまざまなリソースにもマッチしてしまい、メニューではフォントセットを扱えないためです。X Options and Resourcesを参照してください。

‘Fontset-n’ という名前の X リソース(n は 0 から始まる整数)を使用して、追加のフォントセットを指定できます。リソースの値は以下の形式である必要があります:

fontpattern, [charset:font]...

ここで、fontpattern は、最後の2つのフィールドを除き、標準的なXフォント名の形式(前述の fontset-startup の例を参照)である必要があります。これらのフィールドは ‘fontset-alias’ という形式である必要があります。

各フォントセットには、長い名前と短い名前の2つの名前があります。長い名前は fontpattern です。短い名前は ‘fontset-alias’ で、長い名前の末尾2フィールドにあたります(例:起動時に自動的に作成されるフォントセットの場合は ‘fontset-startup’)。どちらの名前でもフォントセットを参照できます。

「charset:font」という構文は、特定の文字セットに対して(このフォントセット内で)どのフォントを使用するかを指定します。ここでは、charsetが文字セットの名前であり、fontがその文字セットに使用するフォントです。1つのフォントセットを定義する際、この構文を何度でも使用できます。

その他の文字セットについては、Emacsはfontpatternに基づいてフォントを選択します。‘fontset-alias’を、文字セットを記述する値に置き換えます。ASCII文字フォントの場合、‘fontset-alias’は‘ISO8859-1’に置き換えられます。

さらに、連続する複数のフィールドがワイルドカードである場合、Emacsはそれらを単一のワイルドカードにまとめます。これは、自動スケーリングフォントの使用を防ぐためです。大きなフォントをスケーリングして作成されたフォントは編集に使用できず、小さなフォントをスケーリングすることも有用ではありません。というのも、小さなフォントはそのままのサイズで使用する方が望ましく、Emacsもそのように処理しているからです。

したがって、fontpatternがこれであるならば、

-*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24

ASCII文字のフォント指定は次のようになります。

-*-fixed-medium-r-normal-*-24-*-ISO8859-1

そして、中国語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*-*

また、中国語GB2312文字を除くすべての文字のフォント仕様では、familyフィールドに‘fixed’が指定されており、中国語GB2312文字のフォント仕様では、familyフィールドにワイルドカードの‘*’が指定されています。

フォントセットリソースの値を処理してフォントセットを作成する関数は、create-fontset-from-fontset-spec と呼ばれます。また、この関数を明示的に呼び出してフォントセットを作成することもできます。

フォントの命名に関する詳細については、フォントを参照してください。