Spec-Zone.ru › Elisp

Свойства символов

Свойство символа — это именованный атрибут символа, определяющий, как символ ведет себя и как он должен обрабатываться при обработке текста и отображении. Таким образом, свойства символов являются важной частью определения семантики символа.

В целом, Emacs следует Стандарту Юникода в своей реализации свойств символов. В частности, Emacs поддерживает Модель свойств символов Юникода, а база данных свойств символов Emacs получена из базы данных символов Юникода (UCD). Подробное описание свойств символов Юникода и их значений можно найти в главе о свойствах символов Стандарта Юникода. В этом разделе предполагается, что вы уже знакомы с этой главой Стандарта Юникода и хотите применить эти знания к программам Emacs Lisp.

В Emacs каждое свойство имеет имя, которое является символом, и набор возможных значений, типы которых зависят от свойства; если у символа отсутствует определенное свойство, значение равно nil. Как общее правило, имена свойств символов в Emacs производятся из соответствующих свойств Юникода путем приведения их к нижнему регистру и замены каждого символа «_» на дефис «-». Например, Canonical_Combining_Class становится canonical-combining-class. Однако иногда мы сокращаем имена для удобства использования.

Некоторые кодовые точки оставлены неприсвоенными в UCD — они не соответствуют ни одному символу. Стандарт Юникода определяет значения по умолчанию для свойств таких кодовых точек; они указаны ниже для каждого свойства.

Вот полный список типов значений для всех известных Emacs свойств символов:

name

Соответствует свойству Name Юникода. Значение — строка, состоящая из заглавных латинских букв A–Z, цифр, пробелов и символов дефиса «-». Для неприсвоенных кодовых точек значение равно nil.

general-category

Соответствует свойству General_Category Юникода. Значение — символ, имя которого является сокращением из 2 букв классификации символа. Для неприсвоенных кодовых точек значение равно Cn.

canonical-combining-class

Соответствует свойству Canonical_Combining_Class Юникода. Значение — целое число. Для неприсвоенных кодовых точек значение равно нулю.

bidi-class

Соответствует свойству Юникода Bidi_Class. Значение — символ, имя которого — тип направления Юникода символа. Emacs использует это свойство при переупорядочении двунаправленного текста для отображения (см. Двунаправленное отображение). Для неприсвоенных кодовых точек значение зависит от блоков кодов, к которым относится кодовая точка: большинство неприсвоенных кодовых точек получают значение L (сильный L), но некоторые получают значения AL (арабская буква) или R (сильный R).

decomposition

Соответствует свойствам Юникода Decomposition_Type и Decomposition_Value. Значение — список, первый элемент которого может быть символом, представляющим тег форматирования совместимости, например, small21; другие элементы — символы, составляющие последовательность разложения совместимости этого символа. Для символов, не имеющих последовательностей разложения, и для неприсвоенных кодовых точек значение — список с единственным членом, самим символом.

decimal-digit-value

Соответствует свойству Юникода Numeric_Value для символов, у которых Numeric_Type равно «Decimal». Значение — целое число или nil, если у символа нет значения десятичной цифры. Для неприсвоенных кодовых точек значение равно nil, что означает NaN, или «не число».

digit-value

Соответствует свойству Юникода Numeric_Value для символов, у которых Numeric_Type равно «Digit». Значение — целое число. Примерами таких символов являются символы совместимости подстрочных и надстрочных цифр, для которых значение равно соответствующему числу. Для символов, не имеющих числового значения, и для неприсвоенных кодовых точек значение равно nil, что означает NaN.

numeric-value

Соответствует свойству Юникода Numeric_Value для символов, у которых Numeric_Type равно «Numeric». Значение этого свойства — число. Примерами символов, обладающих этим свойством, являются дроби, подстрочные и надстрочные символы, римские цифры, цифровые знаменатели валюты и округлённые числа. Например, значение этого свойства для символа U+2155 VULGAR FRACTION ONE FIFTH равно 0.2. Для символов, не имеющих числового значения, и для неприсвоенных кодовых точек значение равно nil, что означает NaN.

mirrored

Соответствует свойству Юникода Bidi_Mirrored. Значение этого свойства — символ, либо Y, либо N. Для неприсвоенных кодовых точек значение равно N.

mirroring

Соответствует свойству Юникода Bidi_Mirroring_Glyph. Значение этого свойства — символ, представляющий зеркальное отображение глифа символа, или nil, если нет определенного зеркального глифа. Все символы, у которых свойство mirrored равно N, имеют nil в качестве своего свойства mirroring; однако некоторые символы, у которых свойство mirrored равно Y, также имеют nil для mirroring, поскольку нет подходящих символов с зеркальными глифами. Emacs использует это свойство для отображения зеркальных изображений символов при необходимости (см. Двунаправленное отображение). Для неприсвоенных кодовых точек значение равно nil.

paired-bracket

Соответствует свойству Юникода Bidi_Paired_Bracket. Значение этого свойства — кодовая точка парного скобочного символа, или nil, если символ не является скобочным символом. Это устанавливает соответствие между символами, которые обрабатываются как пары скобок алгоритмом двунаправленного Юникода; Emacs использует это свойство, когда определяет, как переупорядочить для отображения скобки, фигурные скобки и другие подобные символы (см. Двунаправленное отображение).

bracket-type

Соответствует свойству Юникода Bidi_Paired_Bracket_Type. Для символов, у которых свойство paired-bracket отлично от nil, значение этого свойства — символ, либо o (для открывающих скобок), либо c (для закрывающих скобок). Для символов, у которых свойство paired-bracket равно nil, значение — символ n (None). Подобно paired-bracket, это свойство используется для двунаправленного отображения.

old-name

Соответствует свойству Юникода Unicode_1_Name. Значение — строка. Для неприсвоенных кодовых точек и символов, не имеющих значения для этого свойства, значение равно nil.

iso-10646-comment

Соответствует свойству Юникода ISO_Comment. Значение — либо строка, либо nil. Для неприсвоенных кодовых точек значение равно nil.

uppercase

Соответствует свойству Юникода Simple_Uppercase_Mapping. Значение этого свойства — один символ. Для неприсвоенных кодовых точек значение равно nil, то есть сам символ.

lowercase

Соответствует свойству Юникода Simple_Lowercase_Mapping. Значение этого свойства — один символ. Для неприсвоенных кодовых точек значение равно nil, то есть сам символ.

titlecase

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

special-uppercase

Соответствует правилам специального преобразования в верхний регистр Юникода, независимым от языка и контекста. Значение этого свойства — строка (может быть пустой). Например, соответствие для U+00DF LATIN SMALL LETTER SHARP S — "SS". Для символов без специального соответствия значение равно nil, что означает, что нужно обратиться к свойству uppercase.

special-lowercase

Соответствует правилам специального преобразования в нижний регистр Юникода, независимым от языка и контекста. Значение этого свойства — строка (может быть пустой). Например, для U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE значение равно "i\u0307" (т.е. строка из 2 символов, состоящая из LATIN SMALL LETTER I, за которым следует U+0307 COMBINING DOT ABOVE). Для символов без специального соответствия значение равно nil, что означает, что нужно обратиться к свойству lowercase.

special-titlecase

Соответствует безусловным правилам специального преобразования в заглавную форму Юникода. Значение этого свойства — строка (может быть пустой). Например, для U+FB01 LATIN SMALL LIGATURE FI значение равно "Fi". Для символов без специального соответствия значение равно nil, что означает, что нужно обратиться к свойству titlecase.

Функция: get-char-code-property символ свойство

Эта функция возвращает значение свойства свойство символа символ.

(get-char-code-property ?\s 'general-category)
     ⇒ Zs
(get-char-code-property ?1 'general-category)
     ⇒ Nd
;; U+2084
(get-char-code-property ?\N{SUBSCRIPT FOUR}
                        'digit-value)
     ⇒ 4
;; U+2155
(get-char-code-property ?\N{VULGAR FRACTION ONE FIFTH}
                        'numeric-value)
     ⇒ 0.2
;; U+2163
(get-char-code-property ?\N{ROMAN NUMERAL FOUR}
                        'numeric-value)
     ⇒ 4
(get-char-code-property ?\( 'paired-bracket)
     ⇒ 41  ; closing parenthesis
(get-char-code-property ?\) 'bracket-type)
     ⇒ c
Функция: char-code-property-description свойство значение

Эта функция возвращает строку описания свойства свойство с значением, или nil если для значения нет описания.

(char-code-property-description 'general-category 'Zs)
     ⇒ "Separator, Space"
(char-code-property-description 'general-category 'Nd)
     ⇒ "Number, Decimal Digit"
(char-code-property-description 'numeric-value '1/5)
     ⇒ nil
Функция: put-char-code-property символ свойство значение

Эта функция сохраняет значение в качестве значения свойства свойство для символа символ.

END_OF_DOCUMENT_MARKER
Переменная: unicode-category-table

Значение этой переменной — таблица символов (см. Таблицы символов), которая для каждого символа указывает его свойство Unicode General_Category в виде символа.

Переменная: char-script-table

Значение этой переменной — таблица символов, которая для каждого символа указывает символ, имя которого соответствует письму, к которому принадлежит символ согласно классификации пространства кодов Unicode по блокам, специфичным для определенного письма в соответствии со стандартом Unicode. Эта таблица символов имеет один дополнительный слот, значение которого — список всех символов письма. Обратите внимание, что классификация символов в Emacs по письмам не является полным отражением стандарта Unicode, например, в Unicode нет письма 'symbol'.

Переменная: char-width-table

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

Переменная: printable-chars

Значение этой переменной — таблица символов, которая для каждого символа указывает, является ли он печатным символом или нет. То есть, если вычисление (aref printable-chars char) даёт результат t, символ является печатным, а если 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/Character-Properties.html

Spec-Zone.ru

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