2

whitespace-modewhitespace.el在 EmacsWiki 上)中,有一个名为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

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

这些字符可能是由 Emacs 生成的代表某种“特殊”字符的哨兵,但这没有任何意义,因为TIBETAN DIGIT ZERO在这种情况下无法将例如映射到其他字符。

这些字符和它们映射到的字符实际代表什么?

4

1 回答 1

3

这段代码很可能是为 Emacs<23 编写的,当时 Emacs 中字符的内部编码不是 Unicode。所以这些字符实际上是各种不同的 NBSP(一个用于 latin-1,一个用于 latin-2,......)。

于 2012-09-12T17:55:22.567 回答