Spec-Zone.ru › Elisp

Представление шрифта низкого уровня

Обычно нет необходимости непосредственно манипулировать шрифтами. В случае необходимости этот раздел объясняет, как это сделать.

В Emacs Lisp шрифты представлены с помощью трёх типов объектов Lisp: объекты шрифта, спецификации шрифта и сущности шрифта.

Функция: fontp объект &optional тип

Возвращает t, если объект является объектом шрифта, спецификацией шрифта или сущностью шрифта. В противном случае возвращает nil.

Необязательный аргумент тип, если он не nil, определяет точный тип объекта Lisp для проверки. В этом случае тип должен быть одним из font-object, font-spec, или font-entity.

Объект шрифта — это объект Lisp, представляющий шрифт, который Emacs открыл. Объекты шрифтов нельзя изменять в Lisp, но их можно инспектировать.

Функция: font-at позиция &optional окно строка

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

Спецификация шрифта — это объект Lisp, содержащий набор спецификаций, которые могут быть использованы для поиска шрифта. Может соответствовать нескольким шрифтам.

Функция: font-spec &rest аргументы

Возвращает новую спецификацию шрифта, используя спецификации в аргументах, которые должны быть в формате property-value пар. Возможные спецификации следующие:

:name

Имя шрифта (строка) в формате XLFD, Fontconfig или GTK+. См. Шрифты в Руководстве по GNU Emacs.

:family
:foundry
:weight
:slant
:width

Эти имеют те же значения, что и атрибуты стиля граней с тем же названием. См. Атрибуты стиля граней. :family и :foundry являются строками, в то время как остальные три — символами. Например, :slant может быть italic, :weight может быть bold, а :width может быть normal.

:size

Размер шрифта — либо неотрицательное целое число, задающее размер в пикселях, либо число с плавающей точкой, задающее размер в пунктах.

:adstyle

Дополнительная информация о стиле шрифта, например, ‘sans’. Значение должно быть строкой или символом.

:registry

Регистр набора символов и кодировка шрифта, например, ‘iso8859-1’. Значение должно быть строкой или символом.

:dpi

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

:spacing

Интервалы шрифта: пропорциональные, двойные, моноширинные или charcell. Значение должно быть либо целым числом (0 для пропорциональных, 90 для двойных, 100 для моноширинных, 110 для charcell), либо символом из одной буквы (одним из P, D, M, или C).

:avgwidth

Средняя ширина шрифта в 1/10 пикселей.

:script

Шрифт, который должен поддерживать шрифт (символ).

:lang

Язык, который должен поддерживать шрифт. Значение должно быть символом, имя которого — двухбуквенное имя языка ISO-639. На X оно сопоставляется со значением поля «Дополнительный стиль» имени XLFD шрифта, если оно не пусто. В MS-Windows шрифты, соответствующие спецификации, должны поддерживать кодовые страницы, необходимые для языка. В настоящее время поддерживается только небольшой набор CJK языков: ‘ja’, ‘ko’ и ‘zh’.

:otf

Шрифт должен быть шрифтом OpenType, который поддерживает эти функции OpenType, при условии, что Emacs скомпилирован с библиотекой, такой как ‘libotf’ в GNU/Linux, которая поддерживает сложную компоновку текста для скриптов, нуждающихся в этом. Значение должно быть списком следующего вида:

(script-tag langsys-tag gsub gpos)

где script-tag — символ метки скрипта OpenType; langsys-tag — символ метки системы языка OpenType или nil, чтобы использовать стандартную систему языка; gsub — список меток тегов функции GSUB OpenType, или nil, если не требуется; и gpos — список меток тегов функции GPOS OpenType, или nil, если не требуется. Если gsub или gpos является списком, элемент nil в этом списке означает, что шрифт не должен соответствовать остальным символам тегов. Элемент gpos может быть опущен. Список меток тегов скрипта, языка и функций OpenType см. в списке зарегистрированных меток OTF.

:type

Символ, определяющий задний план шрифта, используемый для рисования символов. Возможные значения зависят от платформы и от того, как был сконфигурирован Emacs при компиляции. Типичные значения включают ftcrhb и xfthb на X, harfbuzz на MS-Windows, ns на GNUstep и т. д. Также может быть nil, если значение не задано, обычно в спецификации шрифта.

Функция: font-put спецификация-шрифта свойство значение

Устанавливает свойство шрифта свойство в спецификации шрифта спецификация-шрифта на значение. свойство может быть любым из описанных выше.

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

Функция: find-font спецификация-шрифта &optional фрейм

Эта функция возвращает сущность шрифта, которая наилучшим образом соответствует спецификации шрифта спецификация-шрифта во фрейме фрейм. Если фрейм nil, он по умолчанию устанавливается в выделенный фрейм.

Функция: list-fonts спецификация-шрифта &optional фрейм число предпочтение

Эта функция возвращает список всех сущностей шрифтов, которые соответствуют спецификации шрифта спецификация-шрифта.

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

Если вы вызываете set-face-attribute и передаёте спецификацию шрифта, сущность шрифта или строку с именем шрифта в качестве значения атрибута :font, Emacs откроет наилучший соответствующий шрифт, доступный для отображения. Затем он сохраняет соответствующий объект шрифта как фактическое значение атрибута :font для этой грани.

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

Функция: font-get шрифт свойство

Эта функция возвращает значение свойства шрифта свойство для шрифт. свойство может быть любым из тех, которые font-spec поддерживает.

Если шрифт является спецификацией шрифта и спецификация шрифта не задаёт свойство, возвращаемое значение равно nil. Если шрифт — объект шрифта или сущность шрифта, значение свойства :script может быть списком скриптов, поддерживаемых шрифтом, а значение свойства :otf является списком вида (gsub . gpos), где gsub и gpos — списки, представляющие поддерживаемые шрифтом функции OpenType, вида

((script-tag (langsys-tag feature…) …) …)

где script-tag, langsys-tag и feature — символы, представляющие метки макета OpenType.

Если шрифт — объект шрифта, специальное свойство :combining-capability имеет ненулевое значение, если движок рендеринга шрифта шрифт поддерживает отображение знаков объединения для шрифтов, не являющихся OpenType.

Функция: font-face-attributes шрифт &optional фрейм

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

(:family family :height height :weight weight
   :slant slant :width width)

где значения семья, высота, вес, наклон и ширина — значения атрибутов стиля грани. Некоторые из этих пар «ключ-атрибут» могут отсутствовать в списке, если они не заданы шрифтом.

Функция: font-xlfd-name шрифт &optional сложить-подстановочные-знаки

Эта функция возвращает XLFD (X Logical Font Descriptor), строку, соответствующую шрифту. См. Шрифты в Руководстве по GNU Emacs, для получения информации об XLFD. Если имя слишком длинное для XLFD (которое может содержать не более 255 символов), функция возвращает nil.

Если необязательный аргумент сложить-подстановочные-знаки не nil, последовательные подстановочные знаки в XLFD сводятся к одному.

Следующие две функции возвращают важную информацию о шрифте.

Функция: font-info имя &необязательный кадр

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

Значение, возвращаемое функцией, представляет собой вектор вида [opened-name full-name size height baseline-offset relative-compose default-ascent max-width ascent descent space-width average-width filename capability]. Вот описание каждого компонента этого вектора:

opened-name

Имя, используемое для открытия шрифта, строка.

full-name

Полное имя шрифта, строка.

size

Размер шрифта в пикселях.

height

Высота шрифта в пикселях.

baseline-offset

Смещение в пикселях от базовой линии ASCII, положительное значение вверх.

relative-compose
default-ascent

Числа, управляющие тем, как комбинировать символы.

max-width

Максимальная ширина продвижения шрифта.

ascent
descent

Подъём и спуск этого шрифта. Сумма этих двух чисел должна быть равна значению height выше.

space-width

Ширина, в пикселях, символа пробела шрифта.

average-width

Средняя ширина символов шрифта. Если это значение равно нулю, Emacs использует значение space-width вместо него при расчёте вывода текста на экране.

filename

Имя файла шрифта в виде строки. Может быть nil, если шрифтовой бэкенд не предоставляет способ узнать имя файла шрифта.

capability

Список, первый элемент которого – символ, представляющий тип шрифта, один из x, opentype, truetype, type1, pcf, или bdf. Для OpenType шрифтов список включает 2 дополнительных элемента, описывающие поддерживаемые шрифтом функции GSUB и GPOS. Каждый из этих элементов представляет собой список вида ((script (langsys feature …) …) …), где script – символ, представляющий тег сценария OpenType, langsys – символ, представляющий тег langsys OpenType (или nil, обозначающий язык по умолчанию), а каждый feature – символ, представляющий тег функции OpenType.

Функция: query-font объект-шрифт

Эта функция возвращает информацию об объекте-шрифте. (Это в отличие от font-info, которая принимает имя шрифта, строку, в качестве аргумента.)

Значение, возвращаемое функцией, представляет собой вектор вида [name filename pixel-size max-width ascent descent space-width average-width capability]. Вот описание каждого компонента этого вектора:

name

Имя шрифта, строка.

filename

Имя файла шрифта в виде строки. Может быть nil, если шрифтовой бэкенд не предоставляет способ узнать имя файла шрифта.

pixel-size

Размер шрифта в пикселях, используемый при открытии шрифта.

max-width

Максимальная ширина продвижения шрифта.

ascent
descent

Подъём и спуск этого шрифта. Сумма этих двух значений даёт высоту шрифта.

space-width

Ширина, в пикселях, символа пробела шрифта.

average-width

Средняя ширина символов шрифта. Если это значение равно нулю, Emacs использует значение space-width вместо него при расчёте вывода текста на экране.

capability

Список, первый элемент которого – символ, представляющий тип шрифта, один из x, opentype, truetype, type1, pcf, или bdf. Для OpenType шрифтов список включает 2 дополнительных элемента, описывающие поддерживаемые шрифтом функции GSUB и GPOS. Каждый из этих элементов представляет собой список вида ((script (langsys feature …) …) …), где script – символ, представляющий тег сценария OpenType, langsys – символ, представляющий тег langsys OpenType (или nil, обозначающий язык по умолчанию), а каждый feature – символ, представляющий тег функции OpenType.

Следующие четыре функции возвращают информацию о размерах шрифтов, используемых различными стилями, позволяя учитывать различные аспекты макета в программах Lisp. Эти функции учитывают переназначение стилей, возвращая информацию о переназначенном стиле, если соответствующий стиль был переназначен. См. Переназначение стилей.

Функция: default-font-width

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

Функция: default-font-height

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

Функция: window-font-width &необязательный окно стиль

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

Функция: window-font-height &необязательный окно стиль

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

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Low_002dLevel-Font.html

Spec-Zone.ru

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