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

该函数set-fontset-font可用于指定任何字符范围使用哪种字体;例如,

(set-fontset-font t '(#x1d4ee . #x1d4ee) (font-spec :family "FreeSerif"))
于 2012-06-06T09:35:31.080 回答
3

我有同样的问题,我也没有通用的解决方案。这是我修复单个字符(或可能是一个范围)的方法,假设您在缓冲区中有字符并且它没有显示。

一些实验表明,Menlo 是一个有用的字符来源,例如 FreeSerif。

  1. 将光标放在未显示的字符之前。

  2. mx 描述字符。这为您提供了有关该字符的大量信息,包括“字符集中的代码点:0x2055”形式的一行。

    1. 在您的 .emacs 或相关文件的某处,使用此功能。它可以通过从 FreeSerif 家族或其他东西中获取它们来修复整个范围的字符,但除了几个字符之外,我没有其他好的选择。
    (defun bbextra-fix-fontset-font (从 &optional 到 family)
      “让字符 FROM 到 TO 来自 FAMILY。  
    TO 的默认值为 FROM,FAMILY 的默认值为 FreeSerif(其中
    似乎有一些字符)”
     (set-fontset-font t (cons from (or to from))
                       (字体规范:family(或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 "Menlo") ; 骷髅和交叉骨
     (bbextra-fix-fontset-font #x266C #x266C "Menlo") ; 十六分音符
     (bbextra-fix-fontset-font #x2695 #x2695 "Menlo") ; 天秤座
     (bbextra-fix-fontset-font #x2624 #x2624 "Menlo") ; 手杖
于 2013-01-21T14:11:03.853 回答
1

MacOS emacs 存在一个已知错误,并且显示 BMP 之外的字符。例如,请参阅我在Emacs bugs上的错误报告。

报告此错误后,我收到一封电子邮件,建议使用“Mac 端口”版本的 emacs。这显然显示了非 BMP 字符。

该错误随后在 24.4 及更高版本中得到修复。

于 2013-03-15T02:38:11.467 回答