【问题标题】:Emacs: Font setup for displaying unicode characters in OSXEmacs:在 OSX 中显示 unicode 字符的字体设置
【发布时间】:2012-06-10 00:29:35
【问题描述】:

我正在尝试显示特殊的 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 manual 中读到这个:“字体集不一定为所有字符代码指定字体。如果字体集没有为某个字符指定字体,或者它指定的字体在您的系统上不存在,则无法显示该字符。它将显示一个空框。” - 这是我观察到的确切行为

看来我可能需要构建一个字体集才能显示这样的任意字符(从 Xdefaults 或 Xresources 文件开始)。

如何确定需要在字体集中包含哪些字体系列才能显示数学运算符(大多数在线示例是指拉丁语、中文等语言)?我什至找不到 .Xdefault 或 .Xresource 文件的任何示例。

我在正确的轨道上吗?有没有更简单/更明显的方法来做到这一点?

【问题讨论】:

  • 这里是主题。轻微地。不用担心移动它。

标签: emacs fonts osx-lion


【解决方案1】:

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

(set-fontset-font t '(#x1d4ee . #x1d4ee) (font-spec :family "FreeSerif"))

【讨论】:

  • 谢谢!这很有帮助。这是非常特定于一个角色的。有没有更通用的方法可以做到这一点?我现在意识到我错过了更多。
  • 我尝试了系统中的所有字体,但 emacs 无法显示该字符(以及更多)。
【解决方案2】:

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

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

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

  2. m-x 描述字符。这为您提供了有关该字符的大量信息,包括“字符集中的代码点: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") ;手杖

【讨论】:

  • 谢谢,确实有效!通过一些工作,我们可以找出所有有问题的范围,并整理一个.el 文件来涵盖所有内容。
【解决方案3】:

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

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

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

【讨论】:

  • 在答案中值得注意的是,引用的错误已在 Emacs 24.4 中修复
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 2017-12-13
  • 1970-01-01
  • 2012-01-16
  • 2012-04-02
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多