无字形字符(Glyphless characters)指以特殊方式显示的字符,例如显示为包含十六进制编码的方框,而非原样显示。 包括显式定义为无字形的字符、图形显示器上无可用字体的字符, 以及文本终端上无法由终端编码系统编码的字符。
glyphless-display-mode 次要模式可用于在当前缓冲区中方便地切换无字形字符的显示。
启用该模式时,所有无字形字符均显示为包含字符名称缩写的方框。
如需更精细(全局)的控制,可使用该变量。 其值为字符表,定义无字形字符及其显示方式。每个条目必须为以下显示方式之一:
nil按常规方式显示该字符。
zero-width不显示该字符。
thin-space显示窄空格,图形显示器上为 1 像素宽,文本终端上为 1 字符宽。
empty-box显示空方框。
hex-code显示包含该字符 Unicode 编码的十六进制方框。
显示包含该字符串的方框。字符串最多包含 6 个 ASCII 字符。 例外情况:若字符串仅含一个字符,在文本模式终端上该字符会不带方框显示; 这样可以将此类 “缩写(acronyms)” 用作终端无法显示字符的替代字符。
(graphical . text)在图形显示器上使用 graphical 显示,文本终端上使用 text 显示。 graphical 与 text 均为上述显示方式之一。
thin-space、empty-box、hex-code 与 ASCII 字符串
显示方式使用 glyphless-char 文本视觉样式绘制。
在文本终端上,方框用方括号 ‘[]’ 模拟。
该字符表有一个额外槽位,决定如何显示无可用字体或无法由终端编码系统编码的字符。
其值应为上述显示方式之一,但 zero-width 除外。
若字符在活动显示表中有非 nil 条目,则显示表生效;
此时 Emacs 完全不会查询 glyphless-char-display。
该用户选项提供便捷方式,为同类字符组设置 glyphless-char-display。
不要从 Lisp 代码直接设置其值;该值仅通过自定义 :set 函数生效(see 定义自定义变量),
该函数会更新 glyphless-char-display。
其值应为元素为 (group . method) 的关联列表,
其中 group 为指定字符组的符号,method 为指定显示方式的符号。
group 应为以下之一:
c0-controlASCII 控制字符 U+0000 至 U+001F,
排除换行符与制表符(通常显示为 ‘^A’ 之类的转义序列;see How Text Is Displayed in The GNU Emacs Manual)。
c1-control非 ASCII 不可打印字符 U+0080 至 U+009F
(通常显示为 ‘\230’ 之类的八进制转义序列)。
format-controlUnicode 通用类别 [Cf] 的字符,如 U+200E 从左至右标记, 但排除有图形图像的字符,如 U+00AD 软连字符。
bidi-control为 format-control 的子集,仅包含与双向格式化控制相关的字符,
如 U+2069 弹出方向隔离符 与 U+202A 从左至右嵌入。See 双向显示。
属于 Unicode 通用类别 [Cf] 的字符,例如 U+200E 从左至右标记,但不包含具有图形显示的字符,例如 U+00AD 软连字符。
variation-selectorsUnicode 变体选择符 1 至 256(U+FE00 至 U+FE0F 与 U+E0100 至 U+E01EF), 用于为同一编码选择不同字形(通常为表情符号)。
no-font无合适字体、无法由终端编码系统编码,或文本模式终端无对应字形的字符。
method 符号应为 zero-width、thin-space、empty-box 或 hex-code 之一。
含义与上述 glyphless-char-display 中相同。