Emacs:用于在OSX中显示unicode字符的字体设置

时间:2012-06-06 00:00:04

标签: emacs fonts osx-lion

我正在尝试显示特殊的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文件的任何示例。

我是否在正确的轨道上?有没有更容易/更明显的方法来做到这一点?

3 个答案:

答案 0 :(得分:3)

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

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

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

  2. m-x describe-char。这将为您提供有关该字符的大量信息,包括“charset中的代码点:0x2055”形式的一行。

    1. ..emacs或相关文件中的某个位置,请使用此功能。它可以通过从FreeSerif系列或其他东西中截取它们来修复整个字符范围,但除了几个字符外,我没有其他任何选择。
  3.     (defun bbextra-fix-fontset-font (from &optional to family)
          "Make characters FROM to TO come from FAMILY.  
        Default value of TO is FROM, and of FAMILY is FreeSerif (which 
        seems to have some of the characters)" 
         (set-fontset-font t (cons from (or to from))
                           (font-spec :family (or family "FreeSerif"))))
    
        ;; Here are the characters I have fixed.  
        (bbextra-fix-fontset-font #x2042)
        (bbextra-fix-fontset-font #x2023) 
        (bbextra-fix-fontset-font #x203D) 
        (bbextra-fix-fontset-font #x2055) 
    
    
         ;These come from Menlo
         (bbextra-fix-fontset-font #x2620 #x2620 "Menlo") ; skull and crossbones
         (bbextra-fix-fontset-font #x266C #x266C "Menlo") ; 16th notes
         (bbextra-fix-fontset-font #x2695 #x2695 "Menlo") ; asclepion
         (bbextra-fix-fontset-font #x2624 #x2624 "Menlo") ; caduceus
    

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

当然,如果在emacs开发的主线中修复了错误,那就太好了。如果臭虫得到官方承认,那也很好......