Переназначение шрифтов
Переменная face-remapping-alist используется для буферных или глобальных изменений внешнего вида шрифта. Например, она используется для реализации команды text-scale-adjust (см. Масштабирование текста в Руководстве GNU Emacs).
- Переменная: face-remapping-alist
-
Значение этой переменной — список списков (alist), элементы которого имеют вид
(face . remapping). Это заставляет Emacs отображать любой текст с шрифтом face с переназначением, а не с обычным определением face.переназначение может быть любым указанием шрифта, подходящим для текстового свойства
face: либо шрифтом (т.е., именем шрифта или списком свойств/значений атрибутов), либо списком шрифтов. Подробности см. в описании текстового свойстваfaceв разделе Специальные свойства. переназначение служит полным описанием переназначенного шрифта — оно заменяет обычное определение face, а не изменяет его.Если
face-remapping-alistявляется локальным для буфера, его локальное значение применяется только в этом буфере. Еслиface-remapping-alistвключает шрифты, применимые только к определённым окнам, используя(:filtered (:window param val) spec), этот шрифт применяется только в тех окнах, которые соответствуют условиям фильтра (см. Специальные свойства). Чтобы временно отключить фильтрацию шрифтов, привяжитеface-filters-always-matchк значению, отличному отnil, затем все фильтры шрифтов будут соответствовать любому окну.Примечание: переназначение шрифтов не рекурсивно. Если переназначение ссылается на то же имя шрифта face, прямо или через атрибут
:inheritдругого шрифта в переназначение, эта ссылка использует обычное определение шрифта face. Например, если шрифтmode-lineпереназначен с помощью этой записи вface-remapping-alist:(mode-line italic mode-line)
то новое определение шрифта
mode-lineнаследует от шрифтаitalic, и обычного (не переназначенного) определения шрифтаmode-line.
Следующие функции реализуют интерфейс более высокого уровня для face-remapping-alist. Большинство кодов Lisp должны использовать эти функции вместо непосредственной установки face-remapping-alist, чтобы избежать перезаписи переназначений, применённых в других местах. Эти функции предназначены для переназначений, локальных для буфера, поэтому они все делают face-remapping-alist локальными для буфера как побочный эффект. Они управляют записями face-remapping-alist вида
(face relative-spec-1 relative-spec-2 ... base-spec)
где, как объяснено выше, каждый из relative-spec-N и base-spec является либо именем шрифта, либо списком свойств/значений атрибутов. Каждая из записей относительного переназначения, relative-spec-N, управляется функциями face-remap-add-relative и face-remap-remove-relative; они предназначены для простых модификаций, таких как изменение размера текста. Запись основного переназначения, base-spec, имеет наименьший приоритет и управляется функциями face-remap-set-base и face-remap-reset-base; она предназначена для основных режимов, чтобы переназначать шрифты в управляемых ими буферах.
- Функция: face-remap-add-relative face &rest specs
-
Эта функция добавляет specs в качестве относительных переназначений для шрифта face в текущем буфере. specs должен быть списком, где каждый элемент — либо имя шрифта, либо список свойств/значений атрибутов.
Возвращаемое значение — объект Lisp, который служит куки; вы можете передать этот объект в качестве аргумента функции
face-remap-remove-relative, если вам нужно удалить переназначение позже.;; Remap the 'escape-glyph' face into a combination ;; of the 'highlight' and 'italic' faces: (face-remap-add-relative 'escape-glyph 'highlight 'italic) ;; Increase the size of the 'default' face by 50%: (face-remap-add-relative 'default :height 1.5)
- Функция: face-remap-remove-relative cookie
Эта функция удаляет относительное переназначение, добавленное ранее функцией
face-remap-add-relative. cookie должен быть объектом Lisp, возвращенным функциейface-remap-add-relativeпри добавлении переназначения.
- Функция: face-remap-set-base face &rest specs
-
Эта функция устанавливает основное переназначение для face в текущем буфере на specs. Если specs пустой, восстанавливается стандартное основное переназначение, аналогично вызову
face-remap-reset-base(см. ниже); обратите внимание, что это отличается от specs, содержащего единственное значениеnil, которое имеет обратный эффект (глобальное определение face игнорируется).Это перезаписывает стандартное base-spec, которое наследует глобальное определение шрифта, поэтому вызов должен сам добавлять такое наследование, если это требуется.
- Функция: face-remap-reset-base face
Эта функция устанавливает основное переназначение для face на его значение по умолчанию, которое наследует от глобального определения face.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Face-Remapping.html