Прежде чем Emacs сможет отобразить символ на графическом дисплее, он должен
выбрать шрифт для этого символа31. См. Шрифты в Руководстве GNU Emacs. Обычно
Emacs автоматически выбирает шрифт на основе лиц (faces), назначенных этому
символу — в частности, атрибутов лица :family,
:weight, :slant и :width (см. Атрибуты лица). Выбор шрифта также зависит от отображаемого символа; некоторые шрифты могут отображать только ограниченный набор символов.
Если ни один из доступных шрифтов не соответствует требованиям в точности, Emacs ищет
наиболее близкий по соответствию шрифт. Переменные в этом разделе
контролируют, как Emacs выполняет этот выбор.
Если указана определенная семья, но она не существует, эта переменная указывает альтернативные семейства шрифтов для thử. Каждый элемент должен иметь такую форму:
(family alternate-families…)
Если family указана, но недоступна, Emacs попытается использовать другие семейства, указанные в alternate-families, по одному, пока не найдет существующее семейство.
Если не существует шрифта, который точно соответствует всем желаемым
атрибутам лица (:width, :height, :weight и :slant),
эта переменная указывает порядок, в котором эти атрибуты следует
рассматривать при выборе наиболее близкого по соответствию шрифта. Значение
должно быть списком, содержащим эти четыре символа атрибутов в порядке
убывающей важности. По умолчанию используется (:width :height :weight :slant).
Выбор шрифта сначала находит наилучшие доступные совпадения для первого атрибута в списке; затем, среди шрифтов, которые являются наилучшими в этом отношении, он ищет наилучшие совпадения по второму атрибуту и так далее.
Атрибуты :weight и :width имеют символьные
значения в диапазоне, центрированном вокруг normal. Совпадения,
которые более экстремальны (дальше от normal), несколько
предпочтительнее совпадений, которые менее экстремальны (ближе к normal);
это сделано для того, чтобы обеспечить контраст между ненормальными и нормальными
шрифтами, когда это возможно.
Пример случая, когда эта переменная имеет значение, заключается в том, что
по умолчанию шрифт не имеет курсивного эквивалента. При стандартном порядке
лицо italic будет использовать некурсивный шрифт, похожий на
стандартный. Но если вы поместите :slant перед :height,
лицо italic будет использовать курсивный шрифт, даже если его
высота не совсем верна.
Эта переменная позволяет указать альтернативные реестры шрифтов для попытки, если указанный реестр не существует. Каждый элемент должен иметь такую форму:
(registry alternate-registries…)
Если registry указан, но недоступен, Emacs попытается использовать другие реестры, указанные в alternate-registries, по одному, пока не найдет существующий реестр.
Emacs может использовать масштабируемые шрифты, но по умолчанию он не использует их.
Эта переменная контролирует, какие масштабируемые шрифты использовать. Значение
nil, по умолчанию, означает не использовать масштабируемые шрифты. t
означает использовать любой масштабируемый шрифт, который кажется подходящим для текста.
В противном случае значение должно быть списком регулярных выражений. Затем масштабируемый шрифт включается в использование, если его имя соответствует любому регулярному выражению в списке. Например,
(setq scalable-fonts-allowed '("iso10646-1"))
позволяет использовать масштабируемые шрифты с реестром iso10646-1.
Эта переменная определяет масштабирование для определенных лиц. Ее значение должно быть списком элементов вида
(fontname-regexp . scale-factor)
Если fontname-regexp соответствует имени шрифта, который вот-вот будет использован, это означает, что следует выбрать более крупный похожий шрифт в соответствии с фактором scale-factor. Вы можете использовать эту функцию для нормализации размера шрифта, если определенные шрифты больше или меньше, чем предполагают их номинальные высоты и ширины.
В данном контексте термин шрифт не имеет отношения к Font Lock (см. Режим блокировки шрифта).