42.12.9 字体选择

Emacs 在图形界面上绘制字符前, 必须先为该字符选择一种 字体(font)31。 See Fonts in The GNU Emacs Manual。 通常 Emacs 会根据字符所分配的文本视觉样式自动选择字体— 具体依据样式属性 :family:weight:slant:width(see 文本视觉样式属性)。 字体选择还取决于待显示的字符;部分字体仅支持有限字符集。 若没有完全符合要求的可用字体,Emacs 会寻找 最匹配字体(closest matching font)。 本节变量用于控制 Emacs 如何进行这一选择。

User Option: face-font-family-alternatives

若指定了某一字体系列但该系列不存在, 该变量指定要尝试的替代字体系列。 每个元素格式如下:

(family alternate-families...)

family 已指定但不可用, Emacs 会依次尝试 alternate-families 中的其他系列, 直至找到可用系列。

User Option: face-font-selection-order

若没有字体完全匹配所有期望的文本视觉样式属性(:width:height:weight:slant), 该变量指定选择最匹配字体时这些属性的考虑顺序。 值应为包含这四个属性符号的列表,按重要性从高到低排列。 默认值为 (:width :height :weight :slant)

字体选择会先为列表中第一个属性找到最优匹配, 再在这些最优匹配字体中为第二个属性寻找最优匹配,依此类推。

属性 :weight:width 的符号值以 normal 为中心分布。 更极端(偏离 normal 更远)的匹配会略优先于较温和(更接近 normal)的匹配; 这样设计是为了尽可能让非常规样式与常规样式形成对比。

该变量产生效果的一个例子是: 当默认字体没有对应斜体时, 使用默认顺序,italic 样式会使用与默认字体相近的非斜体字体; 但若将 :slant 置于 :height 之前, italic 样式会使用斜体字体,即使其高度不完全匹配。

User Option: face-font-registry-alternatives

该变量允许在指定字体注册库不存在时, 指定要尝试的替代注册库。 每个元素格式如下:

(registry alternate-registries...)

registry 已指定但不可用, Emacs 会依次尝试 alternate-registries 中的其他注册库, 直至找到可用注册库。

Emacs 可以使用可缩放字体,但默认不会启用。

User Option: scalable-fonts-allowed

该变量控制使用哪些可缩放字体。 默认值 nil 表示不使用可缩放字体。 t 表示使用所有看起来适合当前文本的可缩放字体。

其他情况下,值必须为正则表达式列表。 只有名称与列表中任一正则表达式匹配的可缩放字体才会被启用。 例如:

(setq scalable-fonts-allowed '("iso10646-1$"))

允许使用注册库为 iso10646-1 的可缩放字体。

Variable: face-font-rescale-alist

该变量为特定文本视觉样式指定缩放比例。 值应为元素格式如下的列表:

(fontname-regexp . scale-factor)

fontname-regexp 与即将使用的字体名称匹配, 则根据 scale-factor 选择更大的同类字体。 若某些字体实际尺寸与其标称尺寸不符, 可使用该功能统一字体大小。


Footnotes

(31)

此处所说的 字体(font) 与字体锁定模式无关(see Font Lock Mode)。