文本视觉样式属性(Face attributes) 决定文本视觉样式的外观。下表列出所有文本视觉样式属性、可选值及其作用。
除下列值外,每个文本视觉样式属性均可取值 unspecified。该特殊值表示此文本视觉样式不直接指定该属性。unspecified 属性会让 Emacs 转而继承自父文本视觉样式(见下方 :inherit 属性说明);若无父样式,则使用基础文本视觉样式(see 显示文本视觉样式)。(但 unspecified 在 defface 中不是有效值。)
文本视觉样式属性也可取值 reset。该特殊值表示使用 default 文本视觉样式中对应属性的值。
default 文本视觉样式必须显式指定所有属性,不能使用特殊值 reset。
部分属性仅在特定类型的显示器上有效。如果你的显示设备不支持某属性,该属性会被忽略。
:family字体族名称(字符串)。See Fonts in The GNU Emacs Manual 了解更多字体族信息。函数 font-family-list(见下文)返回可用字体族名称列表。
:foundry:family 属性指定字体族对应的 字体铸造厂(font foundry) 名称(字符串)。See Fonts in The GNU Emacs Manual。
:width字符相对宽度。取值为下列符号之一:
ultra-condensed、extra-condensed、condensed、
‘semi-condensed’、normal、regular、medium、
‘semi-expanded’、expanded、extra-expanded 或
ultra-expanded。
:height字体高度。最简单情况下为整数,单位是 1/10 磅。
该值也可以是浮点数或函数,用于相对于 基础文本视觉样式(underlying face) 指定高度(see 显示文本视觉样式)。浮点数表示对基础文本视觉样式高度的缩放比例。函数值会接收一个参数(基础文本视觉样式高度)并返回新文本视觉样式的高度。若传入整数参数,函数必须返回整数。
默认文本视觉样式的高度必须使用整数指定;不允许浮点数或函数。
:weight字体粗细—按从粗到细顺序为下列符号之一:
ultra-bold、extra-bold、bold、semi-bold、
normal、semi-light、light、extra-light 或
ultra-light。在支持亮度变化的文本终端上,比 normal 更粗的字体会高亮显示,更细的字体会半亮显示。
:slant ¶字体倾斜—取值为 italic、oblique、
normal、reverse-italic 或 reverse-oblique。
在支持亮度变化的文本终端上,倾斜文本以半亮显示。
:foreground前景色,字符串。值可以是系统定义颜色名或十六进制颜色表示。See 颜色名称。在黑白显示器上,部分灰度通过网点图案实现。
:distant-foreground备用前景色,字符串。用法类似 :foreground,但仅当背景色与原本使用的前景色接近时才作为前景色使用。例如用于标记文本(选区文本视觉样式)时很有用。若文本前景色在选区样式下仍清晰可见,则使用原前景色;若前景色与选区背景色接近,则改用 :distant-foreground 以保证可读性。
:background背景色,字符串。值可以是系统定义颜色名或十六进制颜色表示。See 颜色名称。
:underline ¶是否为字符添加下划线以及样式。:underline 属性可选值:
nil不添加下划线。
t使用文本视觉样式的前景色添加下划线。
使用颜色 color(颜色字符串)添加下划线。
(:color color :style style :position position)color 为字符串或符号 foreground-color(表示使用文本视觉样式前景色)。省略 :color 表示使用文本视觉样式前景色。
style 为符号,指定下划线线型,可选 line、double-line、wave、
dots 或 dashes。多数窗口系统下的图形框架支持所有下划线样式,而文本终端下 double-line、wave 和 dots 依赖 Smulx 或 Su terminfo 能力。省略 :style 表示使用直线。
position 非 nil 时表示在下缘处显示下划线而非基线位置。若为数值,则指定下划线距离下缘的像素数。
:overline ¶是否为字符添加上划线及颜色。值为 t 时使用文本视觉样式前景色;为字符串时使用指定颜色;为 nil 时不添加上划线。
:strike-through ¶是否为字符添加删除线及颜色。用法与 :overline 相同。
:box ¶是否在字符周围绘制边框、边框颜色、线条宽度与 3D 外观。:box 属性可选值及含义:
nil不绘制边框。
t使用文本视觉样式前景色绘制宽度为 1 的边框。
使用颜色 color 绘制宽度为 1 的边框。
(:line-width (vwidth . hwidth) :color color :style style)可通过此属性列表显式指定边框所有参数。列表中任意元素均可省略。
vwidth 与 hwidth 分别指定竖线与横线宽度,默认为 (1 . 1)。负的水平或垂直宽度 −n 表示绘制宽度为 n 并占用文本空间,不增加字符高度或宽度。为简化写法,可直接用单个数值 n 代替列表,等价于 ((abs n) . n)。
color 指定边框绘制颜色。3D 边框与 flat-button 默认使用文本视觉样式背景色,其他边框默认使用前景色。
style 指定是否绘制 3D 边框。值为 released-button 时外观为未按下的 3D 按钮;为 pressed-button 时为按下的 3D 按钮;为 nil、flat-button 或省略时为普通 2D 边框。
若通过 display 文本属性在字符串上使用 :box 属性替代缓冲区文本,且周围缓冲区文本也带有 :box 属性,则需注意特殊处理。See 替换文本的显示规范。另外注意:仅当 :box 属性在 nil 与非 nil 之间切换时才绘制竖线;两个连续的非 nil :box 属性之间不会显示竖线。
:inverse-video是否以反色显示字符。值为 t(是)或 nil(否)。
:stipple背景网点图案,即位图。
值可以是字符串,即包含外部格式 X 位图数据的文件名。文件在变量 x-bitmap-file-path 指定的目录中查找。
或者直接通过 (width height data) 格式列表指定位图。其中 width 与 height 为像素尺寸,data 为逐行存储原始位图数据的字符串。每行占用 \((\mathit{width} + 7) / 8\) 字节(建议使用单字节字符串)。这表示每行至少占用一个完整字节。
值为 nil 表示不使用网点图案。
通常无需手动设置该属性,因为它会自动用于部分灰度显示。
:font用于此文本视觉样式的字体。值为字体对象或字体集。若为字体对象,则指定文本视觉样式显示 ASCII 字符所用字体。See 底层字体表示 了解字体对象、字体规格与字体实体。See 字体集 了解字体集。
通过 set-face-attribute 或 set-face-font(see 文本视觉样式属性函数)指定此属性时,也可传入字体规格、字体实体或字符串。Emacs 会将这些值转换为合适的字体对象并保存为实际属性值。若传入字符串,内容应为字体名(see Fonts in The GNU Emacs Manual);若为包含通配符的 XLFD,Emacs 会选择第一个匹配的字体。设置此属性会同时改变 :family、:foundry、:width、:height、:weight 与 :slant 属性。
:inherit ¶要继承属性的单个文本视觉样式名称或名称列表。继承自其他文本视觉样式的属性会以高于基础文本视觉样式的优先级合并到当前样式中(see 显示文本视觉样式)。若要继承的样式为 unspecified,则与 nil 等效,因为 Emacs 从不合并 :inherit 属性。若使用样式列表,列表中靠前的样式属性会覆盖靠后的样式。
:extend此文本视觉样式是否延伸至行尾之外,并影响行尾至窗口边缘空白区域的显示。值为 t 表示使用该样式显示行尾到窗口边缘的空白;为 nil 则不使用。Emacs 合并多个样式显示行尾空白时,仅合并 :extend 非 nil 的样式。默认只有少数样式( notably region)启用此属性。该属性与其他属性不同:若主题未显式指定某样式的值,则继承 defface 原始定义中的值(see 定义文本视觉样式)。
部分模式(如 hl-line-mode)使用带 :extend 属性的样式标记整行当前行。但注意:Emacs 始终允许光标移至缓冲区最后一个字符之后;若缓冲区以换行符结尾,光标可看似位于缓冲区末尾行—但 Emacs 无法高亮该 “行”,因为它实际并不存在。
此函数返回可用字体族名称列表。可选参数 frame 指定要显示文本的框架;为 nil 时使用当前选中框架。
该变量指定显示下划线时基线与下划线之间的最小距离,单位为像素。
该变量指定搜索位图文件的目录列表,用于 :stipple 属性。
若 object 为适用于 :stipple 的有效位图规范则返回 t,否则返回 nil。