❗ Вебсайт в стадии бета-тестирования. Возможны ошибки.

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

Источник данных о свойствах символа

База данных символов Юникода (Unicode Character Database, UCD) служит приложением к каждому очередному выпуску стандарта Юникод. Каждая опубликованная версия стабильная, её больше не изменяют, архивируют и хранят бессрочно.

Свободно доступны файлы базы данных символов Юникода текущей стабильной версии. Также открыт доступ к черновикам следующей версии Юникода.

В базе данных Юникода можно найти файлы с описанием свойств:

  • Файл PropertyAliases.txt содержит список свойств символов.
  • Файл PropertyValueAliases.txt содержит список значений свойств символов.

Тип свойства

Свойство (Property) — именованный атрибут сущности в стандарте Юникода, связанный с определённым набором значений.

Свойство кодовой точки (Code point property) — атрибут кодовой точки. Примеры свойств кодовой точки: суррогатная (Surrogate), несимвольная (Noncharacter).

Свойство абстрактного символа (Abstract character property) — атрибут абстрактного символа, который существует в письменности независимо от кодировки Юникода.

Например, алфавит (свойство Alphabetic), пунктуация (свойство Punctuation), число (свойство Numeric_Value) относят к свойствам абстрактного символа и связаны с этим символом вне зависимости от того, внесены ли эти символы в какой-либо стандарт или не внесены. Более того, свойства абстрактных символов конкретной письменности возникли задолго то появления современных стандартов.

Примеры свойств абстрактного символа: алфавит (Alphabetic), пунктуация (Punctuation), численное значение (Numeric_Value). Эти свойства связанны с письменностью, а не с кодировкой стандарта.

Свойство кодированного символа (Encoded character property) — сопоставление каждой кодовой точки с некоторым значением из заданного набора значений этого свойства.

Примеры свойство основной категории символов (General_Category): буква (Letter), пунктуация (Punctuation), число (Number).

Основные и производные свойства

У символа различают основные и производные свойства.

Основное свойство (Simple property) — свойство, значение которого указано непосредственно в базе данных Юникода. Это значение невозможно вычислить с помощью свойств других символов.

Производное свойство (Derived property) — свойство, для которого в Юникоде существует правило вывода из других свойств.

Производные свойства символа выводимы из основных, дополнительных и других производных свойств. Для каждого производного свойство определено правило вывода. Обычно правила сформулированы как операции над множествами.

Дополнительное свойство символа —  элементарное свойство, введённое исключительно для того, чтобы определить правило для производного свойства.

Дополнительные свойства вводят для того, чтобы:

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

Основные, дополнительные и производные свойства не разделяют на первичные и второстепенные.

В базе данных Юникода ряд производных свойств перечислен явно. Несмотря на то, что эти значения можно вывести алгоритмом, они уже вычислены и представлены в виде списка. Вывод некоторых свойств нетривиальный и пользователю некогда это делать самостоятельно. Пример производных свойств: ID_Start, ID_Continue, которые применяют для задания формального синтаксиса идентификаторов символов Юникода.

Псевдонимы свойств

Псевдонимы свойств приведены в базе данных Юникода.

Псевдоним свойства (Property alias) — уникальный идентификатор конкретного свойства символа.

Существуют краткая и длинная формы псевдонима. Например, для свойства General Category существует короткая форма псевдонима gc и длинная форма General_Category.

Псевдоним значения свойства (Property value alias) — уникальный идентификатор конкретного перечисленного значения конкретного свойства символа.

Существуют краткая и длинная формы псевдонима. Например, Currency_Symbol это длинная форма, а Sc — краткая форма псевдонима.

Нерекомендованные свойства

Некоторые ранее введённые свойства в очередной версии могут объявить нерекомендованными для применения в API приложений.

Например, в версии Unicode 17.0.0, введённой 2025-08-27, следующие свойства объявлены нерекомендованными:

  • Grapheme_Link — дублирование с другими свойствами;
  • Hyphen — перенос заменён переводом строки (Line_Break);
  • ISO_Comment — бесполезное свойство;
  • Expands_On_NFC — менее полезно, чем UTF;
  • Expands_On_NFD — менее полезно, чем UTF;
  • Expands_On_NFKC — менее полезно, чем UTF;
  • Expands_On_NFKD — менее полезно, чем UTF;
  • FC_NFKC_Closure — заменено на NFKC_Casefold.

Стабилизированные свойства

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

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

С 2025 года стабилизированы свойства:

  • Hyphen — не следует применять символы переноса строки;
  • ISO_Comment — не следует применять комментарии (примечания), введённые стандартом ISO/IEC 10646:2020.

Список свойств

Стандарт определяет следующие группы свойств:

  • общие свойства (General property);
  • регистр (Case property);
  • свойства чисел (Numeric property);
  • нормализация (Normalization);
  • сегментация (Segmentation);
  • формирование и отображение (Shaping and Rendering);
  • идентификаторы (Identifiers);
  • разное (Miscellaneous).

Общие свойства

Список общих свойств:

  • наименование (Name);
  • синонимы, псевдонимы (Name_Alias);
  • блок (Block);
  • возраст (дата назначения кодовой точки) (Age);
  • категория (General_Category);
  • письменность (Script);
  • расширения письменности (Script_Extensions);
  • пробел (White_Space);
  • алфавитный символ (Alphabetic);
  • несимвольный кодовый указатель (Noncharacter_Code_Point);
  • игнорируемый по умолчанию кодовый указатель (Default_Ignorable_Code_Point);
  • нерекомендуемый (Deprecated);
  • исключение логического порядка (Logical_Order_Exception);
  • вариативный переключатель (Variation_Selector).

Свойства регистра

В файле DerivedCoreProperties.txt базы данных Юникода приведены производные свойства регистра. Производные свойства дополняют символы, которые пользователи визуально относят к верхнему или нижнему регистру.

В файле PropList.txt базы данных Юникода указаны дополнительные свойства:

  • Other_Lowercase (прочий нижний регистр) — добавлены буквы-модификаторы, обведённые строчные буквы и строчные римские цифры;
  • Other_Uppercase (прочий верхний регистр) — добавлены обведённые заглавные буквы и заглавные римские цифры.

В файле UnicodeData.txt базы данных Юникода приведена таблица соответствия регистров по умолчанию. Если для символа нет сопоставления, то полагают, что он сопоставлен сам себе.

Файл CaseFolding.txt базы данных Юникода содержит данные для выполнения преобразования регистра по умолчанию.

Регистр — нормативное свойство символа, согласно которому символы воспринимают как вариант одного глифа.

Варианты глифов заметно различны по форме и размеру. Крупные глифы называют верхним регистром (заглавными, титульными, прописными), а мелкие — нижним регистром (строчными).

Стандарт различает три типа регистров:

  • UPPERCASE (ВЕРХНИЙ РЕГИСТР);
  • Titlecase (Заглавный регистр, регистр заглавной буквы);
  • lowercase (нижний регистр).

Набор значений, участвующих в определении регистра, основан на свойстве General_Category. В файле UnicodeData.txt базы данных определены следующие значения:

  • General_Category = Ll (Lowercase_Letter) (глиф нижнего регистра);
  • General_Category = Lu (Uppercase_Letter) (глиф верхнего регистра).

Следует иметь в виду, что не каждый символ Юникода, который выглядит как заглавная буква, имеет свойство General_Category = Lu и соответствующий символ нижнего регистра.

Полный список свойств регистра, в скобках неофициальный перевод на русский язык:

  • Uppercase (верхний регистр);
  • Lowercase (нижний регистр);
  • Lowercase_Mapping (соответствие нижнего регистра);
  • Titlecase_Mapping (соответствие заглавных букв);
  • Uppercase_Mapping (соответствие верхнего регистра);
  • Case_Folding (свертывание регистра);
  • Simple_Lowercase_Mapping (простое соответствие нижнего регистра);
  • Simple_Uppercase_Mapping (простое соответствие верхнего регистра);
  • Simple_Titlecase_Mapping (простое соответствие заглавных букв);
  • Simple_Case_Folding (простое свертывание регистра);
  • Soft_Dotted (символ с удаляемой (мягкой) точкой);
  • Cased (множество регистров);
  • Case_Ignorable (игнорировать регистр);
  • Changes_When_Lowercased (изменять при преобразовании в нижний регистр);
  • Changes_When_Uppercased (изменять при преобразовании в верхний регистр);
  • Changes_When_Titlecased (изменять при преобразовании в заглавную букву);
  • Changes_When_Casefolded (изменять при свёртывании регистра);
  • Changes_When_Casemapped (изменять при соответствии регистра).

Свойства сегментации

Единообразная сегментация обеспечивает одинаковое отображение текста в различных приложениях пользователя.

Список свойств сегментации:

  • перевод строки (Line_Break);
  • разделение кластера графемы (Grapheme_Cluster_Break);
  • разделение предложений (Sentence_Break);
  • разделение слов (Word_Break).

Значения свойства

Значение свойства (Property value) — одно из множества значений свойства кодированного символа.

Явное значение свойства (Explicit property value) — значение свойства кодированного символа, которое содержит один из файлов базы данных Юникода.

Неявное значение свойства (Implicit property value) — значение свойства кодированного символа, которое задано общим правилом или условием «иначе» правила. Правила содержат файлы базы данных Юникода.

Неявные значения свойств используют для того, чтобы избежать необходимости перечислять значения для более миллиона кодовых точек Юникода.

Юникод определяет свойство General_Category для всех кодовых точек. Значение свойства General_Category служит классификацией применения символа. Каждое значение свойства General_Category имеет двухбуквенный идентификатор (псевдоним) этого значения. Первая буква обозначает класс, а вторая подкласс. В каждом классе существует подкласс «other». В этот подкласс добавлены символы, которые не вошли в другие подклассы. Например, идентификатор «No». Первый символ «N» это идентификатор класса Number. Второй символ «o» это идентификатор подкласса «other». В целом «No» означает: числа, не вошедшие в классы десятичных или буквенных.

Для справки приведу обозначения классов и подклассов свойства General_Category:

Ид.	Значение свойства	 Пояснение
===================================
Lu	Uppercase_Letter	 Буква в верхнем регистре
Ll	Lowercase_Letter	 Буква в нижнем регистре
Lt	Titlecase_Letter	 Первая заглавная буква
LC	Cased_Letter		 Значения регистра: Lu | Ll | Lt
Lm	Modifier_Letter	     Модификатор буквы
Lo	Other_Letter		 Другие буквы
L	Letter			     Значения буквы: Lu | Ll | Lt | Lm | Lo
Mn	Nonspacing_Mark	     Непробельная метка нулевой ширины
Mc	Spacing_Mark		 Пробел
Me	Enclosing_Mark	     Метка комбинирования символов
M	Mark			     Значения меток: Mn | Mc | Me
Nd	Decimal_Number	     Десятичная цифра
Nl	Letter_Number	     Буквенная цифра
No	Other_Number	     Другие цифры
N	Number		         Значения цифр: Nd | Nl | No
Pc	Connector_Punctuation Пунктуация, соединитель
Pd	Dash_Punctuation	 Пунктуация, дефис или тире
Ps	Open_Punctuation	 Пунктуация открывающая
Pe	Close_Punctuation	 Пунктуация закрывающая
Pi	Initial_Punctuation	 Начальная кавычка
Pf	Final_Punctuation	 Конечная кавычка
Po	Other_Punctuation	 Прочая пунктуация
P	Punctuation          Значения пунктуации: Pc | Pd | Ps | Pe | Pi | Pf | Po
Sm	Math_Symbol          Математический символ
Sc	Currency_Symbol      Символ валюты
Sk	Modifier_Symbol      Небуквыенный модификатор
So	Other_Symbol         Прочий символ
S	Symbol               Значения символов: Sm | Sc | Sk | So
Zs	Space_Separator      Пробел
Zl	Line_Separator	     Перевод строки
Zp	Paragraph_Separator	 Перевод абзаца
Z	Separator            Значения разделителей: Zs | Zl | Zp
Cc	Control              Коды управления C0 и C1
Cf	Format               Формат
Cs	Surrogate            Суррогатная кодовая точка
Co	Private_Use	         Частный символ
Cn	Unassigned           Зарезервировано
C	Other                Значения управления: Cc | Cf | Cs | Co | Cn

Все свойства символов Юникода имеют значения по умолчанию.

Значение свойства символа по умолчанию — одно или несколько значений, которое свойство символа принимает в случае отсутствия явного назначения.

Композиционная сочетаемость

В свойствах каждого символа указана композиционная сочетаемость (символ «≈»).

Существуют следующие теги композиционной сочетаемости:

  • <font> — подсказка, месторасположение символа для вывода;
  • <noBreak> — неразрывная версия символа (неразрывный пробел, неразрывный дефис);
  • <initial> — инициальная форма символа;
  • <medial> — медиальная форма символа в контекстуальном письме;
  • <final> — конечная форма символа в контекстуальном письме;
  • <isolated> — изолированная форма символа в контекстуальном письме;
  • <circle> — символ внутри круга;
  • <super> — верхний индекс;
  • <sub> — нижний индекс;
  • <vertical> — вертикальная ориентация символа;
  • <wide> — полная ширина символа;
  • <small> — малая форма символа;
  • <square> — квадратная компоновка;
  • <fraction> — дробь.