7

特殊な Unicode 文字、特に emacs の数学演算子を表示しようとしています。具体的には:

             position: 283 of 317 (89%), column: 0
            character:  (displayed as ) (codepoint 120046, #o352356, #x1d4ee)
    preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x1D4EE
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong)
          buffer code: #xF0 #x9D #x93 #xAE
            file code: #xF0 #x9D #x93 #xAE
               (encoded by coding system utf-8-unix)
              display: no font available
         Unicode data:
                 Name: MATHEMATICAL BOLD SCRIPT SMALL E
             Category: Letter, Lowercase
      Combining class: Ll
        Bidi category: Ll
        Decomposition: font e

Character code properties: customize what to show
  name: MATHEMATICAL BOLD SCRIPT SMALL E
  general-category: Ll (Letter, Lowercase)
  decomposition: (font 101) (font 'e')

There are text properties here:
  fontified            t

最近のナイトリー バイナリである GNU Emacs 24 を使用しています。上記のテキストはブラウザと TextEdit では問題なく表示されますが、emacs で表示すると特殊文字が空になります。

古い Emacs 22マニュアルからこれを読みました: 「フォントセットは必ずしもすべての文字コードのフォントを指定するとは限りません。フォントセットが特定の文字のフォントを指定しない場合、またはシステムに存在しないフォントを指定する場合、その文字は表示できません。代わりに空のボックスが表示されます。」 - これは私が観察している正確な動作です

そのような任意の文字を表示できるようにするには、フォントセットを作成する必要があるようです (Xdefaults または Xresources ファイルから始めます)。

数学演算子を表示するためにフォントセットに含める必要があるフォント ファミリを特定するにはどうすればよいですか (ほとんどのオンラインの例は、ラテン語、中国語などの言語を参照しています)。.Xdefault または .Xresource ファイルの例さえ見つかりませんでした。

私は正しい軌道に乗っていますか?これを行うためのより簡単で明白な方法はありますか?

4

3 に答える 3

3

私は同じ問題を抱えており、一般的な解決策もありません。バッファに文字があり、表示されていないと仮定して、単一の文字(または範囲)を修正するための私のアプローチを次に示します。

いくつかの実験では、Menlo が FreeSerif のような文字の有用なソースであることが示されました。

  1. 非表示文字の前にカーソルを置きます。

  2. mx 記述文字。これにより、「文字セットのコード ポイント: 0x2055」という形式の行を含む、文字に関する多くの情報が得られます。

    1. .emacs または関連ファイルのどこかで、この関数を使用します。FreeSerif ファミリーなどから引き抜くことで、あらゆる範囲の文字を修正できる可能性がありますが、いくつかの文字以外には適切な選択肢がありません。
    (defun bbextra-fix-fontset-font (&optional からファミリへ)
      「FROM から TO までのキャラクターを FAMILY から作成します。  
    TO のデフォルト値は FROM で、FAMILY のデフォルト値は FreeSerif (これは
    一部のキャラクターがいるようです)」
     (set-fontset-font t (cons from (または to from))
                       (font-spec :family (またはファミリ "FreeSerif"))))

    ;; ここに私が修正した文字があります。  
    (bbextra-fix-fontset-font #x2042)
    (bbextra-fix-fontset-font #x2023)
    (bbextra-fix-fontset-font #x203D)
    (bbextra-fix-fontset-font #x2055)


     ;これらはメンローから来ています
     (bbextra-fix-fontset-font #x2620 #x2620 "メンロー") ; どくろ
     (bbextra-fix-fontset-font #x266C #x266C "Menlo") ; 16 分音符
     (bbextra-fix-fontset-font #x2695 #x2695 "Menlo") ; アスクレピオン
     (bbextra-fix-fontset-font #x2624 #x2624 "メンロー") ; カドゥケウス
于 2013-01-21T14:11:03.853 に答える
3

この関数set-fontset-fontを使用して、任意の範囲の文字に使用するフォントを指定できます。例えば、

(set-fontset-font t '(#x1d4ee . #x1d4ee) (font-spec :family "FreeSerif"))
于 2012-06-06T09:35:31.080 に答える
1

MacOS emacs と BMP を超える文字の表示には既知のバグがありました。たとえば、Emacs bugsにある私のバグ レポートを参照してください。

このバグを報告した後、 「Mac ポート」バージョンの emacsの使用を提案する電子メールを受け取りました。これは明らかに非 BMP 文字を表示します。

その後、バグ24.4 以降で修正されました。

于 2013-03-15T02:38:11.467 に答える