30.28 显示功能检测

本节中的函数用于描述特定显示设备的基础能力。Lisp 程序可通过这些函数根据显示设备的支持情况调整自身行为。例如,原本使用弹出菜单的程序,可在不支持弹出菜单时改用迷你缓冲区。

这些函数中的可选参数 display 指定要查询的显示设备。它可以是显示设备名称、一个框架(代表该框架所在的显示设备),或 nil(代表选中框架所属的显示设备,see 输入焦点)。

其他用于获取显示设备信息的函数,参见 See 颜色名称、See 文本终端颜色

Function: display-popup-menus-p &optional display

display 支持弹出菜单,该函数返回 t,否则返回 nil。弹出菜单的支持要求鼠标可用,因为菜单需要通过在 Emacs 显示区域点击鼠标触发。

Function: display-graphic-p &optional display

display 是图形化显示设备,可同时显示多个框架与多种不同字体,则返回 t。使用 X 等窗口系统的显示设备满足此条件,文本终端则不满足。

Function: display-mouse-p &optional display

display 配备可用鼠标,该函数返回 t,否则返回 nil

Function: display-color-p &optional display

若屏幕为彩色屏幕,该函数返回 t

Function: display-grayscale-p &optional display

若屏幕可显示灰度渐变,该函数返回 t。(所有彩色显示设备均支持此功能。)

Function: display-supports-face-attributes-p attributes &optional display

attributes 中的所有面孔属性均受支持,该函数返回非 nil 值(see 文本视觉样式属性)。

“受支持(supported)” 的定义偏向经验判定,但基本含义是:包含 attributes 中所有属性的面孔,在与默认面孔合并用于显示时,其呈现效果满足:

  1. 外观与默认面孔存在明显区别,且
  2. 即便不完全精确,也在效果上接近属性所指定的样式。

第 2 点意味着:任何可显示粗体的显示设备都可满足 :weight black 属性;只要能显示某种偏黄色,即可满足 :foreground "yellow";但文本终端代码会自动用暗淡面孔替代斜体,这不能 满足 :slant italic 属性。

Function: display-selections-p &optional display

display 支持选区(selections),该函数返回 t。窗口化显示设备通常支持选区,部分其他环境下也可能支持。

Function: display-images-p &optional display

display 可显示图像,该函数返回 t。窗口化显示设备理论上应支持图像,但部分系统缺少相关支持。在不支持图像的显示设备上,Emacs 无法显示工具栏。

Function: display-screens &optional display

该函数返回与该显示设备关联的屏幕数量。

Function: display-pixel-height &optional display

该函数以像素为单位返回屏幕高度。在字符终端上,以字符为单位返回高度。

对于图形化终端,在多显示器配置下,该值为 display 关联的所有物理显示器的总像素高度。See 多终端

Function: display-pixel-width &optional display

该函数以像素为单位返回屏幕宽度。在字符终端上,以字符为单位返回宽度。

对于图形化终端,在多显示器配置下,该值为 display 关联的所有物理显示器的总像素宽度。See 多终端

Function: display-mm-height &optional display

该函数以毫米为单位返回屏幕高度;若 Emacs 无法获取该信息,则返回 nil

对于图形化终端,在多显示器配置下,该值为 display 关联的所有物理显示器的总高度。See 多终端

Function: display-mm-width &optional display

该函数以毫米为单位返回屏幕宽度;若 Emacs 无法获取该信息,则返回 nil

对于图形化终端,在多显示器配置下,该值为 display 关联的所有物理显示器的总宽度。See 多终端

User Option: display-mm-dimensions-alist

当系统提供的尺寸信息不正确时,用户可通过该变量指定 display-mm-heightdisplay-mm-width 返回的图形化显示设备尺寸。

Function: display-backing-store &optional display

该函数返回显示设备的后备存储(backing store)能力。后备存储会记录未显示窗口(及窗口部分区域)的像素,以便在重新显示时快速渲染。

返回值可为符号 alwayswhen-mappednot-useful。若该查询对某类显示设备不适用,函数也可能返回 nil

Function: display-save-under &optional display

若显示设备支持 SaveUnder 特性,该函数返回非 nil 值。该特性供弹出窗口保存被遮挡的像素,以便快速收起窗口。

Function: display-planes &optional display

该函数返回显示设备支持的位平面数,通常为每像素位数。对于文本终端,该值为支持颜色数的以 2 为底的对数值。

Function: display-visual-class &optional display

该函数返回屏幕的视觉类(visual class)。取值为下列符号之一:static-gray(有限且不可更改的灰度等级)、gray-scale(完整灰度范围)、static-color(有限且不可更改的颜色数)、pseudo-color(有限颜色数)、true-color(完整色彩范围)和 direct-color(完整色彩范围)。

Function: display-color-cells &optional display

该函数返回屏幕支持的颜色单元数量。

下列函数用于获取 Emacs 在指定 display 上所使用窗口系统的额外信息。(出于历史原因,它们的名称以 x- 开头。)

Function: x-server-version &optional display

该函数返回运行在 display 上的图形窗口系统的版本号列表,例如 GNU 和类 Unix 系统上的 X 服务端。返回值为三个整数组成的列表:协议主版本号、次版本号,以及窗口系统软件自身由发行方指定的发布号。在 GNU 和类 Unix 系统上,通常分别为 X 协议版本与 X 服务端软件的发行版发布号;在 MS-Windows 上,则为 Windows 操作系统版本。

Function: x-server-vendor &optional display

该函数以字符串形式返回提供窗口系统软件的发行商。在 GNU 和类 Unix 系统上,实际指 X 服务端的发行方;在 MS-Windows 上,为 Windows 操作系统的厂商 ID 字符串(Microsoft)。

X 的开发者将软件发行方称为 “厂商(vendors)”,这暴露了他们的错误预设:即不存在非商业开发与发行的系统。