2

私の GNU Emacs 構成は、複数のコンピューター間で共有されています (FreeBSD、Ubuntu、および Windows 7 の固定インストールと、USB ドライブ上の NT Emacs および Cygwin のポータブル インストールを含む)。インストールされているフォントが見つかるまで、Emacs が順番に試行するフォントのリストを定義したいと思います (フォントをインストールできるルート アクセス権が常にあるとは限らないため)。通常、set-fontset-font友人は働くでしょう。ただし、Emacs がデーモン ( emacs --daemon) として使用される場合、通常のフォントセットはフレームが開かれるまで作成されません。これはすべて my の一部として実行する必要があるため.emacs、手遅れです。

(フォントセット作成の問題が FreeBSD の Emacs ポートまたは私の構成に固有のものである場合に備えて、これは make showconfig の出力です。)

4

1 に答える 1

3

この質問は、ほとんどの方法で私を導きました。提案された答えは、必要なフォントが 1 つだけである限り機能します。複数のフォールバック フォントを使用するには、フォントセットを定義し、そのフォントセットをフレームに使用するように Emacs に指示する必要があります。まず、使用するフォントのリストを定義します。

;; Fill in your list of fonts here
(setq my-fonts '("-xos4-terminus-medium-*-*-*-16-*-*-*-*-*-iso10646-1" ...))

次に、これらのフォントを標準フォントセットに入れます。

;; NOTE: only works if you don't use --daemon
(dolist (font (reverse my-fonts))
  (set-fontset-font "fontset-standard" 'unicode font nil 'prepend))
(add-to-list 'default-frame-alist '(font . "fontset-standard"))

これは、Emacs をデーモンとして起動しない限り問題なく動作します。もしそうなら、あなたは言われます

error: Fontset `fontset-standard' does not exist

これを修正するには、フォントを追加する前に標準フォントセットを作成する必要があります。Emacs はstandard-fontset-spec、標準フォントセットが初期化される値であると定義します。create-fontset-from-fontset-spec最初に呼び出すことで、自分で行うことができます。

(create-fontset-from-fontset-spec standard-fontset-spec) ;to make --daemon work
(dolist (font (reverse my-fonts))
  (set-fontset-font "fontset-standard" 'unicode font nil 'prepend))
(add-to-list 'default-frame-alist '(font . "fontset-standard"))
于 2013-06-14T06:51:42.217 に答える