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

24.16 フォントセットの変更

フォントセットを必ずしも一から作成する必要はありません。軽微な変更で済む場合は、既存のフォントセット(通常は ‘fontset-default’)を修正する方が簡単かもしれません。‘fontset-default’ を修正すると、それをフォールバックとして使用している他のフォントセットにも影響が及ぶため、特定のスクリプトに対して Emacs が選択するフォントの問題を解決する有効な手段となり得ます。

フォントセットは、関数 set-fontset-font を使用して変更できます。この関数では、フォントを変更する対象の文字、文字セット、スクリプト、または文字範囲と、使用するフォントの指定を行います。具体例は以下の通りです。

;; Prefer a big5 font for han characters.
(set-fontset-font "fontset-default"
                  'han (font-spec :registry "big5")
                  nil 'prepend)

;; Use "Noto Color Emoji" for the emoji script (this is the default).
(set-fontset-font "fontset-default" 'emoji
                  '("Noto Color Emoji" . "iso10646-1")
                  nil 'prepend)

;; Display the "heart" character using a color font.
(set-fontset-font "fontset-default"
                  #x2764 "Noto Color Emoji")

;; Use MyPrivateFont for the Unicode private use area.
(set-fontset-font "fontset-default"  '(#xe000 . #xf8ff)
                  "MyPrivateFont")

;; Use Liberation Mono for latin-3 charset.
(set-fontset-font "fontset-default" 'iso-8859-3
                  "Liberation Mono")

;; Use DejaVu Sans Mono as a fallback in fontset-startup
;; before resorting to fontset-default.
(set-fontset-font "fontset-startup" nil "DejaVu Sans Mono"
                  nil 'append)

symbol スクリプトのフォントセットを変更する際、use-default-font-for-symbols の値によってフォントセットが実際に使用されるかどうかが決まります。

set-fontset-font 関数の使用に関する詳細については、GNU Emacs Lisp Reference Manual の Fontsets を参照してください。

文字のコードポイントや所属するスクリプトがわからない場合は、Emacsに問い合わせることができます。文字にポイントを置いた状態で C-u C-x = (what-cursor-position) と入力すると、この情報をはじめとする多くの情報が、Emacsがポップアップ表示する *Help* バッファに表示されます。カーソル位置情報 を参照してください。例えば、日本語文字は ‘kana’ スクリプトに属していますが、日本語テキストには漢字も混在しているため、以下では ‘han’ スクリプトを使用して、日本語テキストに ‘Kochi Gothic’ フォントを使用するようにEmacsを設定します:

(set-fontset-font "fontset-default" 'han "Kochi Gothic")

(便宜上、Emacsの‘han’スクリプトは、中国語文字だけでなく、中国語、日本語、韓国語、いわゆるCJKのすべての文字をサポートするように設定されています。)

既知のスクリプトの一覧については、変数 script-representative-chars を参照してください。

上記のようなフォントセットの設定は、デフォルトフォントがサポートしていない文字にのみ影響します。したがって、「Kochi Gothic」フォントがラテン文字をカバーしている場合、Emacsで使用されるデフォルトフォントは通常ベーシック・ラテンをカバーしているため、ラテン文字の表示にこのフォントが使われることはありません。

システムにインストールされているフォントの中には、正しく動作しなかったり、使用対象の文字で表示結果が不自然になったりするものがあります。文字の表示に必要な適切なフォントを検索する際、Emacsにそれらを完全に無視させたい場合があるでしょう。その場合は、問題のあるフォントをリスト型の変数 face-ignored-fonts の値に追加することで実現できます。以下に、~/.emacs に記述する例を示します:

(add-to-list 'face-ignored-fonts "Some Bad Font")