Свойства символов
Свойство символа — это именованный атрибут символа, определяющий, как символ ведет себя и как он должен обрабатываться при обработке текста и отображении. Таким образом, свойства символов являются важной частью определения семантики символа.
В целом, 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 символ свойство значение
Эта функция сохраняет значение в качестве значения свойства свойство для символа символ.
- Переменная: 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