Emacsのフォントセット定義で遊ぶことが答えになるはずです。
読んだあと
フォントセットのドキュメント:
起動フォントセットは、指定したフォント、またはレジストリとエンコーディングが異なるバリアントを、そのフォントでサポートされているすべての文字に対して使用し、他の文字については「fontset-default」にフォールバックします。
一部の文字が空のボックスまたは16進コードとして画面に表示される場合は、それらの文字に使用されているフォントセットにそれらの文字のフォントがないことを意味します。
set-fontset-fontの説明:
TARGETは短所かもしれません。(FROM。TO)、FROMとTOは文字です。その場合は、FROMとTO(両端を含む)の範囲のすべての文字にFONT-SPECを使用します。
TARGETはスクリプト名のシンボルです。その場合、スクリプトに属するすべての文字にFONT-SPECを使用します。
TARGETは文字セットの場合があります。その場合、文字セットのすべての文字にFONT-SPECを使用します。
TARGETはnilの場合があります。その場合、FONT-SPECが指定されていない文字については、FONT-SPECを使用してください。
文字セットのチェックに関するドキュメント:
文字セットに関する情報を取得するために使用できるコマンドは2つあります。コマンドMx list-charset-charsは、文字セット名の入力を求め、その文字セットのすべての文字を表示します。コマンドMx describe-character-setは、文字セット名の入力を求め、Emacs内の内部表現を含む、その文字セットに関する情報を表示します。
バッファー内の文字がどの文字セットに属しているかを調べるには、その前にポイントを置き、Cu Cx =
initファイルでは、1つのフォントを全範囲の文字に設定できるはずです。
(let ((my-font "DejaVu Sans Mono-14"))
(set-fontset-font "fontset-startup" '(#x000000 . #x3FFFFF) my-font)
(set-fontset-font "fontset-default" '(#x000000 . #x3FFFFF) my-font)
(set-fontset-font "fontset-standard" '(#x000000 . #x3FFFFF) my-font))
しかし、ある範囲の文字のフォントを設定し、それをサポートしていない文字の代替フォントとして強制するに nil
は、ターゲットとして追加する必要があります。
(let ((my-font "DejaVu Sans Mono-14")
(font-sets '("fontset-default"
"fontset-standard"
"fontset-startup")))
(mapcar
(lambda (font-set)
;; all the characters in that range (which is the full possible range)
(set-fontset-font font-set '(#x000000 . #x3FFFFF) my-font)
;; for all characters without font specification
;; in another words it is a setting for lack of fallback font
;; if e.g. ℕ called DOUBLE-STRUCK CAPITAL N is not covered by our font
;; it will be displayed as placeholder-box,
;; because fallback for our font is now... our font :)
(set-fontset-font font-set nil my-font))
font-sets))
C-u C-x =
or でアンダーポイント(カーソル)を見ることができるようになりましたM-x describe-char
:
position: 1430 of 1954 (73%), column: 16
character: ℕ (displayed as ℕ) (codepoint 8469, #o20425, #x2115)
preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x2115
script: symbol
syntax: w which means: word
category: .:Base, L:Left-to-right (strong)
to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
buffer code: #xE2 #x84 #x95
file code: #xE2 #x84 #x95 (encoded by coding system utf-8-unix)
display: no font available
Character code properties: customize what to show
name: DOUBLE-STRUCK CAPITAL N
old-name: DOUBLE-STRUCK N
general-category: Lu (Letter, Uppercase)
decomposition: (font 78) (font 'N')
重要な部分:表示:使用可能なフォントがありません。
それを.Xresourcesファイルで設定できるはずです:
Xリソース 'Emacs.Font'を使用すると、実際のフォント名と同じようにフォントセット名を指定できます。
しかし、そのための適切な構文が何かはわかりません。
その変更の前に、選択したフォントでサポートされていない多くのUnicodeグリフを見ることができました。その変更後—私のEmacsには1つのフォントしか表示されず、フォントでサポートされていないグリフの空のボックスプレースホルダーが表示されます。
それは私のシステムで動作し、誰かがあなたに詳細で技術的で正しい答えを与える前に今のところ十分であるはずです。
(set-fontset-font t nil MY-FONT)
どこにMY-FONT
あるか試しましたか?