空白模式中特殊字符的含义

时间:2012-09-11 21:24:14

标签: emacs unicode editor whitespace sentinel

whitespace-mode(EmacsWiki上的whitespace.el)中,有一个名为whitespace-display-mappings的变量。该变量确定在不同的上下文中应该如何呈现某些特殊字符。它可以有各种默认值,具体取决于您的环境,但一个默认值为:

'((space-mark   ?\     [?\u00B7]     [?.]) ; space - centered dot
  (space-mark   ?\xA0  [?\u00A4]     [?_]) ; hard space - currency
  (space-mark   ?\x8A0 [?\x8A4]      [?_]) ; hard space - currency
  (space-mark   ?\x920 [?\x924]      [?_]) ; hard space - currency
  (space-mark   ?\xE20 [?\xE24]      [?_]) ; hard space - currency
  (space-mark   ?\xF20 [?\xF24]      [?_]) ; hard space - currency
  (newline-mark ?\n    [?$ ?\n])    ; eol - dollar sign
  (tab-mark     ?\t    [?\u00BB ?\t] [?\\ ?\t])) ; tab - left quote mark

?\?\xA0?\n?\t的映射是直截了当的,因为它们分别映射了普通空格,nobreak-spaces,换行符和制表符。

然而,字符?\x8A0?\x9A0?\xE20?\xF20是神秘的。它们分别代表Devanganari/<not assigned>Bengali/BENGALI LETTER TTHAThai/THAI CHARACTER PHO SAMPHAOTibetan/TIBETAN DIGIT ZERO。他们映射的人物也很神秘;默认情况下,它们只是在Unicode块中“稍后”映射到4个字符,这没有任何意义。

字符可能是由Emacs制作的哨兵,代表其他一些“特殊”字符,但这没有任何意义,因为它不可能映射,例如TIBETAN DIGIT ZERO对于那种情况下的其他角色。

这些字符及其映射的字符实际代表什么?

1 个答案:

答案 0 :(得分:3)

此代码最有可能是为Emacs&lt; 23编写的,当时Emacs中字符的内部编码不是Unicode。因此,这些字符实际上是各种不同的NBSP(一个用于拉丁语1,一个用于拉丁语-2,...)。