Функции атрибутов лиц
В этом разделе описаны функции для непосредственного доступа к атрибутам именованного лица и их изменения.
- Функция: face-attribute face attribute &optional frame inherit
-
Эта функция возвращает значение атрибута attribute для лица face в кадре frame. Сведения о поддерживаемых атрибутах см. в разделе Атрибуты лиц.
Если аргумент frame опущен или равен
nil, это означает выбранный кадр (см. раздел Фокус ввода). Если frame равенt, эта функция возвращает значение указанного атрибута для вновь созданных кадров, то есть значение атрибута до применения спецификации лица из определенияdeffaceэтого лица (см. раздел Определение лиц) или спецификации, заданной с помощьюface-spec-set. Обычно значение по умолчанию для attribute равноunspecified, если только вы не указали другое значение с помощьюset-face-attribute; см. ниже.Если inherit равен
nil, учитываются только атрибуты, непосредственно определённые для face, поэтому возвращаемое значение может бытьunspecifiedили относительным. Если inherit не равенnil, определение attribute для face объединяется с лицами, указанными в его атрибуте:inherit; однако возвращаемое значение всё ещё может бытьunspecifiedили относительным. Если inherit — это лицо или список лиц, результат дополнительно объединяется с этим лицом (или этими лицами), пока значение не станет заданным и абсолютным.Чтобы гарантировать, что возвращаемое значение всегда задано и является абсолютным, укажите для inherit значение
default; это разрешит все незаданные или относительные значения путём объединения с лицомdefault, для которого всегда заданы все значения.Например:
(face-attribute 'bold :weight) ⇒ bold
- Функция: face-attribute-relative-p attribute value
-
Эта функция возвращает значение, отличное от
nil, если value, используемое в качестве значения атрибута лица attribute, является относительным. Это означает, что оно изменит, а не полностью переопределит любое значение, полученное от следующего лица в списке лиц или унаследованное от другого лица.unspecifiedявляется относительным значением для всех атрибутов. Для:heightотносительными также являются значения с плавающей точкой и функции.Например:
(face-attribute-relative-p :height 2.0) ⇒ t
- Функция: face-all-attributes face &optional frame inherit
Эта функция возвращает список ассоциаций атрибутов лица face. Элементы результата — пары «имя—значение» вида
(attr-name . attr-value). Необязательный аргумент frame задаёт кадр, определение face для которого нужно вернуть; если он опущен или равенnil, возвращаемое значение описывает атрибуты face по умолчанию для вновь созданных кадров, то есть значения этих атрибутов до применения спецификации лица из определенияdeffaceэтого лица или спецификации, заданной с помощьюface-spec-set. Обычно значения атрибутов по умолчанию равныunspecified, если только вы не указали другие значения с помощьюset-face-attribute; см. ниже. Необязательный аргумент inherit имеет то же значение, что и одноимённый аргумент функцииface-attribute; см. её описание. Это полезно, когда нужно, чтобы атрибуты лица были абсолютными, а неunspecified.
- Функция: merge-face-attribute attribute value1 value2
Если value1 является относительным значением атрибута лица attribute, функция возвращает его, объединённое с базовым значением value2; в противном случае, если value1 является абсолютным значением атрибута лица attribute, функция возвращает value1 без изменений.
Обычно Emacs использует спецификации лиц каждого лица для автоматического вычисления его атрибутов в каждом кадре (см. раздел Определение лиц). Функция set-face-attribute может переопределить это вычисление, напрямую назначая атрибуты лицу — как для определённого кадра, так и для всех кадров. Эта функция предназначена главным образом для внутреннего использования.
- Функция: set-face-attribute face frame &rest arguments
-
Эта функция задаёт один или несколько атрибутов лица face для кадра frame. Указанные таким образом атрибуты переопределяют спецификации лица, относящиеся к face. Сведения о поддерживаемых атрибутах см. в разделе Атрибуты лиц.
Дополнительные аргументы arguments задают атрибуты и их значения. Они должны состоять из чередующихся имён атрибутов (например,
:familyили:underline) и значений. Таким образом,(set-face-attribute 'foo nil :weight 'bold :slant 'italic)
задаёт атрибут
:weightравнымbold, а атрибут:slant— равнымitalic.Если frame равен
t, эта функция задаёт атрибуты по умолчанию для вновь созданных кадров; фактически они переопределяют значения атрибутов, указанные с помощьюdefface. Если frame равенnil, эта функция задаёт атрибуты для всех существующих, а также вновь создаваемых кадров.Чтобы сбросить значение атрибута, то есть указать, что само лицо не задаёт значение этого атрибута, используйте для атрибута специальное значение
unspecified(неnil!) и задайте аргументу frame значениеtв дополнение к вызову, в котором frame равенnil. Это необходимо потому, что атрибуты по умолчанию для вновь созданных кадров объединяются со спецификацией лица вdeffaceпри создании нового кадра, поэтому значениеunspecifiedсреди атрибутов по умолчанию для новых кадров не сможет переопределитьdefface; специальный вызов этой функции, описанный выше, обеспечит переопределениеdefface.Обратите внимание, что пары «атрибут—значение» вычисляются в указанном порядке, за исключением атрибутов
:familyи:foundry, которые вычисляются первыми. Это означает, что если атрибут указан несколько раз, будет использовано только последнее значение. Кроме того, в некоторых случаях изменение порядка атрибутов приводит к разным результатам. Например, если:weightуказан перед:font, значение толщины начертания применяется к текущему шрифту лица и может быть округлено до ближайшей доступной толщины начертания этого шрифта; если же:fontуказан перед:weight, значение толщины начертания применяется к заданному шрифту.
Следующие команды и функции предназначены главным образом для совместимости со старыми версиями Emacs. Они работают, вызывая set-face-attribute. Значения t и nil (или отсутствие аргумента) для аргумента frame обрабатываются так же, как set-face-attribute и face-attribute. При интерактивном вызове команды считывают аргументы с помощью минибуфера.
- Команда: set-face-foreground face color &optional frame
- Команда: set-face-background face color &optional frame
Эти команды задают для лица face атрибут
:foreground(или, соответственно, атрибут:background), устанавливая его в значение color.
- Команда: set-face-stipple face pattern &optional frame
Эта команда задаёт для лица face атрибут
:stipple, устанавливая его в значение pattern.
- Команда: set-face-font face font &optional frame
Изменяет атрибуты лица face, связанные со шрифтом, устанавливая их в значения атрибутов шрифта font (строки или объекта шрифта). О поддерживаемых форматах аргумента font см. в разделе Атрибут face-font-attribute. Эта функция задаёт атрибут лица
:font, а также косвенно атрибуты:family,:foundry,:width,:height,:weightи:slant, определяемые шрифтом. Если frame не равенnil, изменяются только атрибуты указанного кадра.
- Функция: set-face-bold face bold-p &optional frame
Эта функция задаёт для лица face атрибут
:weight, устанавливая его в значение normal, если bold-p равноnil, и в значение bold в противном случае.
- Функция: set-face-italic face italic-p &optional frame
Эта функция задаёт для лица face атрибут
:slant, устанавливая его в значение normal, если italic-p равноnil, и в значение italic в противном случае.
- Команда: set-face-underline face underline &optional frame
Эта команда задаёт для лица face атрибут
:underline, устанавливая его в значение underline.
- Команда: set-face-inverse-video face inverse-video-p &optional frame
Эта команда задаёт для лица face атрибут
:inverse-video, устанавливая его в значение inverse-video-p.
- Команда: invert-face face &optional frame
Эта команда меняет местами цвета переднего и заднего плана лица face.
- Команда: set-face-extend face extend &optional frame
Эта команда задаёт для лица face атрибут
:extend, устанавливая его в значение extend.
Следующие функции проверяют атрибуты лица. Они предназначены главным образом для совместимости со старыми версиями Emacs. Если аргумент frame не указан, они относятся к выбранному кадру; t обозначает данные по умолчанию для новых кадров. Если лицо не задаёт значение атрибута, функции возвращают unspecified. Если inherit равен nil, возвращается только атрибут, непосредственно заданный лицом. Если inherit не равен nil, также учитываются все лица, указанные в атрибуте :inherit; если же inherit — это лицо или список лиц, учитываются и они, пока не будет найден заданный атрибут. Чтобы гарантировать, что возвращаемое значение всегда задано, укажите для inherit значение default.
- Функция: face-font face &optional frame character
-
Эта функция возвращает имя шрифта, используемого указанным лицом face.
Если указан необязательный аргумент frame, функция возвращает имя шрифта лица face для этого кадра; если frame равен
nilили опущен, используется выбранный кадр. Если frame равенt, функция возвращает значения шрифтов по умолчанию для face, которые будут использоваться в новых кадрах.По умолчанию возвращаемый шрифт предназначен для отображения символов ASCII, но если frame не равен
tи задан необязательный третий аргумент character, функция возвращает имя шрифта, используемого лицом face для этого символа.
- Функция: face-foreground face &optional frame inherit
- Функция: face-background face &optional frame inherit
Эти функции возвращают цвет переднего плана (или, соответственно, цвет заднего плана) лица face в виде строки. Если цвет не задан, они возвращают
nil.
- Функция: face-stipple face &optional frame inherit
Эта функция возвращает имя фонового узора лица face или
nil, если он не задан.
- Функция: face-bold-p face &optional frame inherit
Эта функция возвращает значение, отличное от
nil, если атрибут:weightлица face соответствует начертанию жирнее обычного (то есть одному из значенийsemi-bold,bold,extra-boldилиultra-bold). В противном случае она возвращаетnil.
- Функция: face-italic-p face &optional frame inherit
Эта функция возвращает значение, отличное от
nil, если атрибут:slantлица face равенitalicилиoblique, иnilв противном случае.
- Функция: face-underline-p face &optional frame inherit
Эта функция возвращает значение, отличное от
nil, если для лица face задан атрибут:underline, отличный отnil.
- Функция: face-inverse-video-p face &optional frame inherit
Эта функция возвращает значение, отличное от
nil, если для лица face задан атрибут:inverse-video, отличный отnil.
- Функция: face-extend-p face &optional frame inherit
Эта функция возвращает значение, отличное от
nil, если для лица face задан атрибут:extend, отличный отnil. Аргумент inherit передаётся функцииface-attribute.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Attribute-Functions.html