Spec-Zone.ru › Elisp

Высота строки

Полная высота каждой отображаемой строки складывается из высоты ее содержимого и дополнительного вертикального интервала, который может располагаться над отображаемой строкой или под ней.

Высота содержимого строки — это максимальная высота любого символа или изображения в этой отображаемой строке, включая последний символ новой строки, если он есть. (Отображаемая строка, продолженная на следующей строке, не включает последний символ новой строки.) Это высота строки по умолчанию, если не задана большая высота. (В наиболее распространенном случае она равна высоте шрифта по умолчанию для соответствующего фрейма; см. Шрифт фрейма.)

Есть несколько способов явно задать большую высоту строки: указать абсолютную высоту отображаемой строки или задать вертикальный интервал. Однако фактическая высота строки ни при каких условиях не может быть меньше значения по умолчанию.

Для символа новой строки можно задать текстовое свойство или свойство наложения line-height, определяющее полную высоту отображаемой строки, заканчивающейся этим символом новой строки. Значение свойства может иметь одну из нескольких форм:

t

Если значение свойства — t, символ новой строки не влияет на отображаемую высоту строки: ее определяет только видимое содержимое. В этом случае также игнорируется описанное ниже свойство line-spacing символа новой строки. Это полезно для мозаичного размещения небольших изображений (или фрагментов изображений) без пустых промежутков между ними.

(height total)

Если значение свойства представляет собой список указанной формы, он добавляет дополнительное пространство под отображаемой строкой. Сначала Emacs использует height как спецификацию высоты, чтобы задать дополнительное пространство над строкой, а затем добавляет под строкой достаточно места, чтобы довести ее общую высоту до значения total. В этом случае любое значение свойства line-spacing символа новой строки игнорируется.

Любое другое значение свойства трактуется как спецификация высоты, которая преобразуется в число — заданную высоту строки. Спецификацию высоты можно записать несколькими способами; ниже описано, как каждый из них преобразуется в число:

integer

Если спецификация высоты — положительное целое число, значение высоты равно этому числу.

float

Если спецификация высоты — вещественное число float, числовое значение высоты равно float, умноженному на высоту строки по умолчанию для фрейма.

(face . ratio)

Если спецификация высоты — cons-ячейка указанного формата, числовое значение высоты равно ratio, умноженному на высоту начертания face. ratio может быть числом любого типа или nil, что означает коэффициент 1. Если face равно t, имеется в виду текущее начертание.

(nil . ratio)

Если спецификация высоты — cons-ячейка указанного формата, числовое значение высоты равно ratio, умноженному на высоту содержимого строки.

Таким образом, любая допустимая спецификация высоты тем или иным способом задает высоту в пикселях. Если высота содержимого строки меньше заданного значения, Emacs добавляет над строкой дополнительное вертикальное пространство, чтобы достичь указанной общей высоты.

Если свойство line-height не задано, высота строки складывается из высоты ее содержимого и межстрочного интервала. Задать межстрочный интервал для разных частей текста Emacs можно несколькими способами.

В графических терминалах можно задать межстрочный интервал для всех строк фрейма с помощью параметра фрейма line-spacing (см. Параметры расположения). Однако если значение по умолчанию для line-spacing не равно nil, оно переопределяет параметр фрейма line-spacing. Целое число задает количество пикселей, добавляемых под строками. Число с плавающей точкой задает интервал относительно высоты строки по умолчанию для фрейма.

Задать межстрочный интервал для всех строк буфера можно с помощью буферно-локальной переменной line-spacing. Целое число задает количество пикселей, добавляемых под строками. Число с плавающей точкой задает интервал относительно высоты строки по умолчанию для фрейма. Cons-ячейка, содержащая целые числа или числа с плавающей точкой, задает интервалы над строкой и под ней, позволяя вертикально центрировать текст. Этот параметр переопределяет межстрочные интервалы, заданные для фрейма.

Наконец, для символа новой строки можно задать текстовое свойство или свойство наложения line-spacing, которое может увеличить межстрочный интервал по умолчанию для фрейма и значение буферно-локальной переменной line-spacing: если оно больше значений по умолчанию для буфера или фрейма, для отображаемой строки, заканчивающейся этим символом новой строки, используется это большее значение (если только у символа новой строки нет также свойства line-height со специальным значением, при котором line-spacing игнорируется; см. выше).

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

В текстовых терминалах межстрочный интервал изменить нельзя.

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/Line-Height.html

Spec-Zone.ru

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