Атрибуты лиц
Атрибуты лица определяют внешний вид лица. В следующей таблице перечислены все атрибуты лица, их возможные значения и эффекты.
Помимо приведённых ниже значений, каждый атрибут лица может иметь значение unspecified. Это специальное значение означает, что лицо не задаёт этот атрибут напрямую. Атрибут unspecified указывает Emacs использовать вместо этого родительское лицо (см. описание атрибута :inherit ниже); если такого лица нет — базовое лицо (см. Отображение лиц). (Однако unspecified не является допустимым значением в defface.)
Атрибут лица также может иметь значение reset. Это специальное значение означает, что используется значение соответствующего атрибута лица default.
Лицо default должно явно задавать все атрибуты и не может использовать специальное значение reset.
Некоторые из этих атрибутов имеют смысл только для определённых типов дисплеев. Если ваш дисплей не поддерживает какой-либо атрибут, этот атрибут игнорируется.
:family-
Имя семейства шрифтов (строка). Дополнительные сведения о семействах шрифтов см. в разделе Шрифты в Руководстве по GNU Emacs. Функция
font-family-list(см. ниже) возвращает список доступных имён семейств. :foundry-
Имя производителя шрифта для семейства шрифтов, указанного атрибутом
:family(строка). См. раздел Шрифты в Руководстве по GNU Emacs. :width-
Относительная ширина символов. Это должен быть один из символов
ultra-condensed,extra-condensed,condensed,semi-condensed,normal,regular,medium,semi-expanded,expanded,extra-expandedилиultra-expanded. :height-
Высота шрифта. В простейшем случае это целое число в единицах 1/10 пункта.
Значением также может быть число с плавающей точкой или функция, задающая высоту относительно базового лица (см. Отображение лиц). Значение с плавающей точкой задаёт коэффициент масштабирования высоты базового лица. Функция вызывается с одним аргументом — высотой базового лица — и возвращает высоту нового лица. Если функции передан целочисленный аргумент, она должна вернуть целое число.
Высота лица по умолчанию должна задаваться целым числом; значения с плавающей точкой и функции не допускаются.
:weight-
Насыщенность шрифта — один из символов (от самого плотного к самому бледному):
ultra-bold,extra-bold,bold,semi-bold,normal,semi-light,light,extra-lightилиultra-light. На текстовых терминалах, поддерживающих переменную яркость текста, насыщенность выше нормальной отображается как повышенная яркость, а ниже нормальной — как пониженная яркость. -
:slant -
Наклон шрифта — один из символов
italic,oblique,normal,reverse-italicилиreverse-oblique. На текстовых терминалах, поддерживающих переменную яркость текста, наклонный текст отображается с пониженной яркостью. :foreground-
Цвет переднего плана — строка. Значением может быть системное имя цвета или шестнадцатеричное обозначение цвета. См. раздел Имена цветов. На чёрно-белых дисплеях некоторые оттенки серого реализуются с помощью узоров штриховки.
:distant-foreground-
Альтернативный цвет переднего плана — строка. Он аналогичен
:foreground, но используется в качестве цвета переднего плана только тогда, когда цвет фона близок к цвету переднего плана, который использовался бы в обычном случае. Это полезно, например, при выделении текста (то есть для лица области). Если цвет переднего плана текста хорошо различим на фоне лица области, используется этот цвет переднего плана. Если цвет переднего плана близок к цвету фона лица области, вместо него используется:distant-foreground, чтобы текст оставался читаемым. :background-
Цвет фона — строка. Значением может быть системное имя цвета или шестнадцатеричное обозначение цвета. См. раздел Имена цветов.
-
:underline -
Следует ли подчёркивать символы и каким образом. Возможные значения атрибута
:underline:nil-
Не подчёркивать.
t-
Подчёркивать цветом переднего плана лица.
- color
-
Подчёркивать цветом color — строкой, задающей цвет.
(:color color :style style :position position)color — это строка или символ
foreground-color, означающий цвет переднего плана лица. Если атрибут:colorне указан, используется цвет переднего плана лица. style — символ, задающий стиль линии подчёркивания. Это должен быть один из символовline,double-line,wave,dotsилиdashes. Графические кадры в большинстве оконных систем поддерживают все перечисленные выше стили подчёркивания, а на текстовых терминалах поддержкаdouble-line,waveиdotsзависит от наличия возможностей terminfoSmulxилиSu. Если атрибут:styleне указан, используется сплошная линия. Если position не равноnil, подчёркивание отображается на уровне нижнего выносного элемента текста, а не на уровне базовой линии. Если значение является числом, оно задаёт расстояние в пикселях от нижнего выносного элемента до линии подчёркивания.
-
:overline -
Следует ли надчёркивать символы и каким цветом. Если значение равно
t, надчёркивание выполняется цветом переднего плана лица. Если значение является строкой, для надчёркивания используется указанный цвет. Значениеnilозначает, что надчёркивание не выполняется. -
:strike-through -
Следует ли зачёркивать символы и каким цветом. Значение используется так же, как значение
:overline. -
:box -
Следует ли рисовать рамку вокруг символов, каков её цвет, ширина линий и объёмный вид. Возможные значения атрибута
:boxи их смысл:nil-
Не рисовать рамку.
t-
Рисовать рамку линиями шириной 1 цветом переднего плана.
- color
-
Рисовать рамку линиями шириной 1 цветом color.
(:line-width (vwidth . hwidth) :color color :style style)-
Можно явно задать все параметры рамки с помощью списка свойств следующего вида. Любой элемент этого списка можно опустить.
Значения vwidth и hwidth задают соответственно ширину вертикальных и горизонтальных линий; по умолчанию они равны (1 . 1). Отрицательная горизонтальная или вертикальная ширина −n означает, что нужно нарисовать линию шириной n, занимающую пространство базового текста, чтобы не увеличивать высоту или ширину символа. Для упрощения ширину можно задать одним числом n вместо списка; в этом случае значение эквивалентно
((abs n) . n).Значение color задаёт цвет линий. Для объёмных рамок и
flat-buttonпо умолчанию используется цвет фона лица, а для остальных рамок — цвет переднего плана лица.Значение style указывает, следует ли рисовать объёмную рамку. Если оно равно
released-button, рамка выглядит как ненажатая объёмная кнопка. Если оно равноpressed-button, рамка выглядит как нажатая объёмная кнопка. Если оно равноnil,flat-buttonили не задано, используется обычная двумерная рамка.
Если использовать атрибут лица
:boxдля строк, отображаемых вместо текста буфера посредством свойства текстаdisplay, могут применяться особые правила, если окружающий текст буфера также имеет атрибут лица:box. См. раздел Спецификации отображения, заменяющие текст. Также обратите внимание, что вертикальные линии рамки рисуются только при изменении атрибута:boxсnilна не-nilили наоборот; два последовательных свойства лица с атрибутом:box, отличным отnil, будут отображаться без вертикальной линии между ними. :inverse-video-
Следует ли отображать символы в инверсном видео. Значение должно быть
t(да) илиnil(нет). :stipple-
Фоновая штриховка — растровое изображение.
Значением может быть строка — имя файла с растровыми данными X во внешнем формате. Файл ищется в каталогах, перечисленных в переменной
x-bitmap-file-path.Кроме того, значение может задавать растровое изображение напрямую списком вида
(width height data). Здесь width и height задают размер в пикселях, а data — строка, содержащая необработанные биты изображения, строка за строкой. Каждая строка занимает в строке (width + 7) / 8 последовательных байтов (для наилучших результатов строка должна состоять из однобайтовых символов). Это означает, что каждая строка всегда занимает как минимум один полный байт.Если значение равно
nil, узор штриховки не используется.Обычно атрибут штриховки не нужно задавать, поскольку он автоматически используется для отображения некоторых оттенков серого.
:font-
Шрифт, используемый для отображения лица. Значением должен быть объект шрифта или набор шрифтов. Если значение является объектом шрифта, он задаёт шрифт, используемый лицом для отображения символов ASCII. Сведения об объектах шрифтов, спецификациях шрифтов и сущностях шрифтов см. в разделе Низкоуровневое представление шрифтов. Сведения о наборах шрифтов см. в разделе Наборы шрифтов.
При задании этого атрибута с помощью
set-face-attributeилиset-face-font(см. Функции атрибутов лица) также можно указать спецификацию шрифта, сущность шрифта или строку. Emacs преобразует такие значения в соответствующий объект шрифта и сохраняет этот объект как фактическое значение атрибута. Если указана строка, она должна содержать имя шрифта (см. раздел Шрифты в Руководстве по GNU Emacs); если имя шрифта представляет собой XLFD с подстановочными знаками, Emacs выбирает первый шрифт, соответствующий этим знакам. Задание этого атрибута также изменяет значения атрибутов:family,:foundry,:width,:height,:weightи:slant. -
:inherit -
Имя лица, атрибуты которого нужно наследовать, или список имён лиц. Атрибуты унаследованных лиц объединяются с атрибутами данного лица так же, как атрибуты базового лица, но имеют более высокий приоритет (см. Отображение лиц). Если наследуемое лицо равно
unspecified, оно обрабатывается так же, какnil, поскольку Emacs никогда не объединяет атрибуты:inherit. Если используется список лиц, атрибуты лиц, расположенных в начале списка, имеют приоритет над атрибутами лиц, расположенных далее. :extend-
Будет ли это лицо распространяться за конец строки и влиять на отображение пустого пространства между концом строки и краем окна. Чтобы отображать пустое пространство между концом строки и краем окна с использованием этого лица, значение должно быть
t; чтобы не использовать это лицо для пространства между концом строки и краем окна —nil. При объединении Emacs нескольких лиц для отображения пустого пространства за концом строки объединяются только лица, у которых значение:extendне равноnil. По умолчанию этот атрибут установлен лишь у небольшого числа лиц, в частности уregion. Этот атрибут отличается от остальных: если тема не задаёт для лица явное значение, наследуется значение из исходного определения лица, заданного посредствомdefface(см. Определение лиц).Некоторые режимы, например
hl-line-mode, используют лицо со свойством:extendдля выделения всей текущей строки. Однако обратите внимание, что Emacs всегда позволяет перемещать точку после последнего символа буфера. Если буфер заканчивается символом новой строки, точку можно поместить на строку, которая, по-видимому, находится в конце буфера, но Emacs не может выделить эту «строку», поскольку на самом деле её не существует.
- Функция: font-family-list &optional frame
Эта функция возвращает список доступных имён семейств шрифтов. Необязательный аргумент frame задаёт кадр, в котором должен отображаться текст; если он равен
nil, используется выбранный кадр.
- Пользовательская настройка: underline-minimum-offset
Эта переменная задаёт минимальное расстояние в пикселях между базовой линией и подчёркиванием при отображении подчёркнутого текста.
- Пользовательская настройка: x-bitmap-file-path
Эта переменная задаёт список каталогов для поиска файлов растровых изображений, используемых атрибутом
:stipple.
- Функция: bitmap-spec-p object
Функция возвращает
t, если object является допустимой спецификацией растрового изображения, пригодной для использования с:stipple(см. выше). В противном случае она возвращаетnil.
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/Face-Attributes.html