Spec-Zone.ru › Elisp

Атрибуты лиц

Атрибуты лица определяют внешний вид лица. В следующей таблице перечислены все атрибуты лица, их возможные значения и эффекты.

Помимо приведённых ниже значений, каждый атрибут лица может иметь значение 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 зависит от наличия возможностей terminfo Smulx или 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API