Свойства символов
Свойство символа — это именованный атрибут символа, который определяет его поведение и то, как с ним следует обращаться при обработке и отображении текста. Таким образом, свойства символов — важная часть описания семантики символов.
В целом Emacs следует стандарту Unicode при реализации свойств символов. В частности, Emacs поддерживает модель свойств символов Unicode, а база свойств символов Emacs создана на основе базы данных символов Unicode (UCD). Подробное описание свойств символов Unicode и их значений см. в главе «Свойства символов» стандарта Unicode. В этом разделе предполагается, что вы уже знакомы с этой главой стандарта Unicode и хотите применить полученные знания в программах на Emacs Lisp.
В Emacs у каждого свойства есть имя — символ — и множество возможных значений, типы которых зависят от свойства; если у символа нет определённого свойства, его значение — nil. Как правило, имена свойств символов в Emacs получают из соответствующих свойств Unicode: их записывают строчными буквами и заменяют каждый символ «_» дефисом «-». Например, Canonical_Combining_Class становится canonical-combining-class. Однако иногда мы сокращаем имена, чтобы упростить их использование.
Некоторые кодовые точки остаются неназначенными в UCD — они не соответствуют никакому символу. Стандарт Unicode определяет значения свойств по умолчанию для таких кодовых точек; они указаны ниже для каждого свойства.
Ниже приведён полный список типов значений для всех свойств символов, известных Emacs:
name-
Соответствует свойству Unicode
Name. Значение — строка, состоящая из латинских заглавных букв от A до Z, цифр, пробелов и дефисов «-». Для неназначенных кодовых точек значение —nil. -
general-category -
Соответствует свойству Unicode
General_Category. Значение — символ, имя которого представляет собой двухбуквенное сокращение классификации символа. Для неназначенных кодовых точек значение —Cn. canonical-combining-class-
Соответствует свойству Unicode
Canonical_Combining_Class. Значение — целое число. Для неназначенных кодовых точек значение равно нулю. -
bidi-class -
Соответствует свойству Unicode
Bidi_Class. Значение — символ, имя которого соответствует Unicode-типу направления символа. Emacs использует это свойство при изменении порядка двунаправленного текста для отображения (см. Отображение двунаправленного текста). Для неназначенных кодовых точек значение зависит от блока кодов, к которому принадлежит кодовая точка: большинство неназначенных кодовых точек получают значениеL(сильное L), но некоторые получают значенияAL(арабская буква) илиR(сильное R). decomposition-
Соответствует свойствам Unicode
Decomposition_TypeиDecomposition_Value. Значение — список, первым элементом которого может быть символ, обозначающий тег форматирования совместимости, напримерsmall; остальные элементы — символы, задающие последовательность разложения этого символа для совместимости. Для символов, у которых нет последовательностей разложения, и для неназначенных кодовых точек значение представляет собой список из одного элемента — самого символа. decimal-digit-value-
Соответствует свойству Unicode
Numeric_Valueдля символов, у которых значение свойстваNumeric_Typeравно «Decimal». Значение — целое число илиnil, если у символа нет значения десятичной цифры. Для неназначенных кодовых точек значение —nil, что означает NaN, или «не число». digit-value-
Соответствует свойству Unicode
Numeric_Valueдля символов, у которых значение свойстваNumeric_Typeравно «Digit». Значение — целое число. К таким символам относятся, например, цифры в нижнем и верхнем индексах, совместимые с обычными цифрами; их значения соответствуют обычным числам. Для символов без числового значения и для неназначенных кодовых точек значение —nil, что означает NaN. numeric-value-
Соответствует свойству Unicode
Numeric_Valueдля символов, у которых значение свойстваNumeric_Typeравно «Numeric». Значение этого свойства — число. К символам с этим свойством относятся дроби, цифры в нижнем и верхнем индексах, римские цифры, числители валют и числа в кружках. Например, значение этого свойства для символа U+2155 VULGAR FRACTION ONE FIFTH —0.2. Для символов без числового значения и для неназначенных кодовых точек значение —nil, что означает NaN. -
mirrored -
Соответствует свойству Unicode
Bidi_Mirrored. Значение этого свойства — символYилиN. Для неназначенных кодовых точек значение —N. mirroring-
Соответствует свойству Unicode
Bidi_Mirroring_Glyph. Значение этого свойства — символ, глиф которого является зеркальным отражением глифа данного символа, илиnil, если зеркальный глиф не определён. У всех символов, для которых свойствоmirroredимеет значениеN, свойствоnilимеет значениеmirroring; однако у некоторых символов, для которых свойствоmirroredимеет значениеY, значение свойстваnilтакже равноmirroring, поскольку подходящих символов с зеркальными глифами не существует. Emacs использует это свойство для отображения зеркальных отражений символов, когда это необходимо (см. Отображение двунаправленного текста). Для неназначенных кодовых точек значение —nil. paired-bracket-
Соответствует свойству Unicode
Bidi_Paired_Bracket. Значение этого свойства — кодовая точка парной скобки символа илиnil, если символ не является скобкой. Это свойство устанавливает соответствие между символами, которые алгоритм двунаправленного текста Unicode считает парными скобками; Emacs использует его, чтобы определить, как изменить порядок скобок, фигурных скобок и других подобных символов при отображении (см. Отображение двунаправленного текста). bracket-type-
Соответствует свойству Unicode
Bidi_Paired_Bracket_Type. Для символов, у которых свойствоpaired-bracketне равноnil, значением этого свойства является символo(для открывающих скобок) илиc(для закрывающих скобок). Для символов, у которых свойствоpaired-bracketравноnil, значением является символn(None). Как иpaired-bracket, это свойство используется при отображении двунаправленного текста. old-name-
Соответствует свойству Unicode
Unicode_1_Name. Значение — строка. Для неназначенных кодовых точек и символов, у которых нет значения этого свойства, значение —nil. iso-10646-comment-
Соответствует свойству Unicode
ISO_Comment. Значение — строка илиnil. Для неназначенных кодовых точек значение —nil. uppercase-
Соответствует свойству Unicode
Simple_Uppercase_Mapping. Значение этого свойства — один символ. Для неназначенных кодовых точек значение —nil, то есть сам символ. lowercase-
Соответствует свойству Unicode
Simple_Lowercase_Mapping. Значение этого свойства — один символ. Для неназначенных кодовых точек значение —nil, то есть сам символ. titlecase-
Соответствует свойству Unicode
Simple_Titlecase_Mapping. Заглавная форма — особая форма символа, используемая, когда первую букву слова нужно сделать заглавной. Значение этого свойства — один символ. Для неназначенных кодовых точек значение —nil, то есть сам символ. special-uppercase-
Соответствует специальным правилам преобразования в верхний регистр Unicode, не зависящим от языка и контекста. Значение этого свойства — строка (которая может быть пустой). Например, для U+00DF LATIN SMALL LETTER SHARP S значением является
"SS". Это преобразование переопределяет свойствоuppercaseи, следовательно, текущую таблицу регистра. Для символов без специального преобразования значением являетсяnil, что означает, что вместо этого следует обратиться к свойствуuppercase. special-lowercase-
Соответствует специальным правилам преобразования в нижний регистр Unicode, не зависящим от языка и контекста. Значение этого свойства — строка (которая может быть пустой). Например, для U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE значением является
"i\u0307"(то есть строка из двух символов: LATIN SMALL LETTER I, за которым следует U+0307 COMBINING DOT ABOVE). Это преобразование переопределяет свойствоlowercaseи, следовательно, текущую таблицу регистра. Для символов без специального преобразования значением являетсяnil, что означает, что вместо этого следует обратиться к свойствуlowercase. special-titlecaseСоответствует безусловным специальным правилам преобразования в заглавную форму Unicode. Значение этого свойства — строка (которая может быть пустой). Например, для U+FB01 LATIN SMALL LIGATURE FI значением является
"Fi". Это преобразование переопределяет свойствоtitlecaseи, следовательно, текущую таблицу регистра. Для символов без специального преобразования значением являетсяnil, что означает, что вместо этого следует обратиться к свойствуtitlecase.
- Функция: get-char-code-property char propname
-
Эта функция возвращает значение свойства propname символа char.
(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 prop value
-
Эта функция возвращает строку с описанием значения свойства prop — value — или
nil, если у value нет описания.(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 char propname value
Эта функция сохраняет value как значение свойства propname для символа char.
- Переменная: unicode-category-table
Значение этой переменной — таблица символов (см. Таблицы символов), которая задаёт для каждого символа его свойство Unicode
General_Categoryв виде символа.
- Переменная: char-script-table
-
Значение этой переменной — таблица символов, которая задаёт для каждого символа символ, имя которого обозначает письменность, к которой относится данный символ согласно классификации кодового пространства Unicode на блоки, соответствующие отдельным письменностям. У этой таблицы символов есть один дополнительный слот, значение которого — список всех символов письменностей. Поэтому можно вычислить
(char-table-extra-slot char-script-table 0)
и получить список всех письменностей, известных Emacs. Обратите внимание, что классификация символов по письменностям в Emacs не полностью совпадает с классификацией стандарта Unicode; например, в Unicode нет письменности «symbol».
- Переменная: char-width-table
Значение этой переменной — таблица символов, которая задаёт ширину каждого символа в столбцах экрана, занимаемых им при отображении.
- Переменная: printable-chars
Значение этой переменной — таблица символов, которая указывает для каждого символа, является ли он печатным. Иными словами, если вычисление
(aref printable-chars char)возвращаетt, символ является печатным; если результат —nil, символ не является печатным. Определение печатного символа совпадает с определением класса символов «[:print:]» в регулярных выражениях; см. Классы символов.
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/Character-Properties.html