Значение специальных символов в режиме пробела

В whitespace-mode (whitespace.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, ?\x9A0, ?\xE20 и ?\xF20 загадочны. Они представляют Devanganari/<not assigned>, Bengali/BENGALI LETTER TTHA, Thai/THAI CHARACTER PHO SAMPHAO и Tibetan/TIBETAN DIGIT ZERO соответственно. Персонажи, на которых они сопоставляются, также загадочны; по умолчанию они просто отображаются на 4 символа «позже» в блоке Unicode, что не имеет смысла.

Символы могут быть часовыми, созданными Emacs, которые представляют какие-то другие «специальные» символы, но это не имеет смысла, потому что было бы невозможно сопоставить, например. TIBETAN DIGIT ZERO на какой-либо другой символ в этом случае.

Что на самом деле представляют эти символы и символы, которые они отображают?


person dflemstr    schedule 11.09.2012    source источник


Ответы (1)


Скорее всего этот код был написан для Emacs‹23, когда внутренняя кодировка символов в Emacs не была Unicode. Таким образом, эти символы на самом деле были разными NBSP (один для латинского-1, один для латинского-2, ...).

person Stefan    schedule 12.09.2012