Стандарт Unicode присваивает различные свойства каждому символу и кодовой точке Unicode . [1] [2]
Свойства могут использоваться для обработки символов (кодовых точек) в процессах, таких как разрыв строки, направление письма справа налево или применение элементов управления. Некоторые «свойства символов» также определены для кодовых точек, которым не назначен символ, и кодовых точек, помеченных как «<не символ>». Свойства символов описаны в Стандартном приложении № 44. [2]
Свойства имеют уровни силы: нормативный, информативный, вспомогательный или предварительный. Для простоты спецификации свойство символа может быть назначено путем указания непрерывного диапазона кодовых точек, которые имеют то же свойство. [3]
Свойства отображаются в следующем порядке: [4]
[код];[имя];[gc];[cc];[bc];[разложение];[nv-dec];[nv-dig];[nv-num];[bm];[псевдоним];;[верхний регистр];[нижний регистр];[заглавный регистр]
Свойство между «псевдонимом» и «верхним регистром» устарело и теперь равно нулю для всех символов Unicode.
Первое свойство — это шестнадцатеричный код .
Символу Unicode присваивается уникальное Имя (na). [1] Имя состоит из заглавных букв A–Z, цифр 0–9, дефиса-минуса и пробела . Некоторые последовательности исключаются: имена, начинающиеся с пробела или дефиса, имена, заканчивающиеся пробелом или дефисом, повторяющиеся пробелы или дефисы, а также пробел после дефиса не допускаются. Имя гарантированно уникально в Unicode и может использоваться для идентификации кодовой точки и ее символа. Идеографические символы, которых десятки тысяч, именуются по шаблону " cjk unified ideograph - hhhh ". Например, U+4E00 一 CJK UNIFIED IDEOGRAPH-4E00 . Символы форматирования также именуются: U+00A0 NO-BREAK SPACE .
Следующие классы кодовых точек не имеют имени (na=""): элементы управления (общая категория: Cc), частное использование (Co), суррогат (Cs), несимволы (Cn) и зарезервированные (Cn). На них можно ссылаться неформально с помощью общего или специального мета-имени, называемого "метками кодовых точек": <control>, <control-0088>, <reserved>, <noncharacter- hhhh >, <private-use- hhhh > или <surrogate>. Поскольку эти метки содержат скобки <>, они никогда не могут отображаться как имя, что предотвращает путаницу.
В версии 2.0 Unicode многие имена были изменены. С этого момента вступило в силу правило «имя никогда не изменится», включая строгое (нормативное) использование псевдонимов. Неиспользуемые имена версии 1.0 были перемещены в свойство Alias, чтобы обеспечить некоторую обратную совместимость.
Начиная с версии Unicode 2.0, опубликованное имя для кодовой точки никогда не изменится. Поэтому в случае неправильного написания имени символа или если имя символа полностью неверно или серьезно вводит в заблуждение, символу может быть назначен формальный псевдоним имени символа , и этот псевдоним может использоваться приложениями вместо фактического дефектного имени символа. [1] Например, U+FE18 ︘ ФОРМА ПРЕДСТАВЛЕНИЯ ДЛЯ ВЕРТИКАЛЬНОЙ ПРАВОЙ БЕЛОЙ ДВУХСТОРОННЕЙ СКОБКИ имеет псевдоним имени символа " ФОРМА ПРЕДСТАВЛЕНИЯ ДЛЯ ВЕРТИКАЛЬНОЙ ПРАВОЙ БЕЛОЙ ДВУХСТОРОННЕЙ СКОБКИ " для того, чтобы смягчить неправильное написание "bracket" как "brakcet" [ sic ] в фактическом имени символа; U+A015 ꀕ СЛОГОВЫЙ И И У имеет псевдоним имени персонажа «ЗНАК ПОВТОРЕНИЯ СЛОГА И И», поскольку, в отличие от имени персонажа, он не имеет фиксированного слогового значения.
В дополнение к псевдонимам имен символов, которые являются исправлениями для некорректных имен символов, некоторым символам назначаются псевдонимы, которые являются альтернативными именами или сокращениями. В стандарте Unicode определены пять типов псевдонимов имен символов:
Все формальные псевдонимы имен персонажей следуют правилам для допустимых имен персонажей и гарантированно являются уникальными как в пределах псевдонима имени персонажа, так и в пределах пространств имен имен персонажей (по этой причине имя ISO 6429 "BELL" не определено как псевдоним для U+0007 <control-0007> ). потому что U+1F514 называется "BELL"). [1]
Начиная с версии Unicode 16.0, тридцать пять формальных псевдонимов имен символов определены как исправления для дефектных имен символов. [5]
Помимо этих нормативных имен, в таблицах кодов Unicode могут быть показаны неформальные имена . Это другие общеупотребительные имена для символа, и они не имеют тех же ограничений на символы. Эти неформальные имена не гарантируют уникальность и могут быть изменены или удалены в более поздних версиях стандарта.
Каждой кодовой точке назначается значение для категории General. Это одно из свойств символа, которое также определяется для неназначенных кодовых точек и кодовых точек, которые определены как "не символ".
Символы имеют отдельные свойства, указывающие на то, что они являются символами пунктуации . Все свойства имеют значения Да/Нет : Dash , Quotation_Mark , Sentence_Terminal , Terminal_Punctuation . Свойство Punctuation относится к символам, которые используются для разделения или структурирования текста, и они классифицируются по разным типам в зависимости от их ролей. Unicode назначает этим символам пунктуации определенные категории.
Пробел — это широко используемая концепция для типографского эффекта. В основном она охватывает невидимые символы, которые имеют эффект пробела в отображаемом тексте. Она включает пробелы , табуляции и элементы управления форматированием новой строки. В Unicode такой символ имеет свойство "WSpace=yes". В версии 16.0 существует 25 пробельных символов.
Значение регистра в Unicode — Normataive. Оно относится к тем письменностям, в которых есть заглавные (т. е. заглавные, маюскульные) и строчные (т. е. малые, минускульные) буквы. Разница в регистре встречается в адламском, армянском, чероки, коптском, кириллическом, дезеретском, гарайском, глаголическом, греческом, грузинском, хуцури и мхедрули, латинском, медефаидринском, древневенгерском, осейджском, виткуки и варанг-сити.
(верхний, нижний, титульный, складной — как простой, так и полный)
Идеографический, алфавитный, несимвольный.
Некоторые распространённые коды:
10–199 = различные классы с фиксированной позицией
Знаки, прикрепляемые к базовой букве:
Знаки, не прикрепленные к базовой букве:
Шесть свойств символов относятся к двунаправленному письму: Bidi_Class , Bidi_Control , Bidi_Mirrored , Bidi_Mirroring_Glyph , Bidi_Paired_Bracket и Bidi_Paired_Bracket_Type .
Одной из основных особенностей Unicode является поддержка двунаправленного ( Bidi ) отображения текста справа налево (R-to-L) и слева направо (L-to-R). Двунаправленный алгоритм Unicode UAX9 [19] описывает процесс представления текста с изменяющимися направлениями письма. Например, он позволяет использовать цитату на иврите в английском тексте. Bidi_Character_Type отмечает поведение символа при направленном письме. Для переопределения направления Unicode определил специальные символы управления форматированием ( Bidi-Control s). Эти символы могут задавать направление и по определению влияют только на двунаправленное письмо.
Каждая кодовая точка имеет свойство Bidi_Class . Оно определяет ее поведение в двунаправленном тексте, интерпретируемом алгоритмом:
В обычных ситуациях алгоритм может определить направление текста по этому свойству символа. Для управления более сложными ситуациями Bidi, например, когда английский текст имеет кавычки на иврите, в Unicode добавляются дополнительные параметры. Двенадцать символов имеют свойство Bidi_Control=Yes
: ALM, FSI, LRE, LRI, LRM, LRO, PDF, PDI, RLE, RLI, RLM и RLO, как указано в таблице. Это невидимые символы управления форматированием, используемые только алгоритмом и не имеющие эффекта за пределами двунаправленного форматирования. [19] Несмотря на название, они являются символами форматирования, а не управляющими символами, и имеют общую категорию Другие, формат (Cf) в определении Unicode.
По сути, алгоритм определяет последовательность символов с тем же сильным типом направления (R-to-L или L-to-R), принимая во внимание переопределение специальными элементами управления Bidi. Числовые строки (слабые типы) назначаются направлению в соответствии с их сильным окружением, как и нейтральные символы. Наконец, символы отображаются в соответствии с направлением строки.
Два свойства символа имеют значение для определения зеркального отображения глифа в двунаправленном тексте: Bidi_Mirrored=Yes
указывает, что глиф должен быть зеркальным при написании от R к L. Bidi_Mirroring_Glyph=U+hhhh
Затем свойство может указывать на зеркальный символ. Например, скобки ( , ) зеркально отображаются таким образом. Формирование курсивных шрифтов, таких как арабский, и зеркальное отображение глифов, имеющих направление, не является частью алгоритма.
Символы классифицируются с типом Numeric . [1] Такие символы, как дроби, подстрочные и надстрочные индексы, римские цифры, числители валют, обведенные числа и цифры, специфичные для письменности, имеют тип Numeric. Они имеют числовое значение , которое может быть десятичным, включая ноль и отрицательные числа, или вульгарной дробью. Если такого значения нет, как у большинства символов, то числовой тип — «None».
Символы, имеющие числовое значение, делятся на три группы: десятичные (De), цифровые (Di) и числовые (Nu, т. е. все остальные). «Десятичный» означает, что символ является прямой десятичной цифрой. Только символы, являющиеся частью непрерывного закодированного диапазона 0..9, имеют числовой тип Decimal. Другие цифры, такие как надстрочные индексы, имеют числовой тип Digit. Все числовые символы, такие как дроби и римские цифры, в конечном итоге имеют тип «Numeric». Предполагаемый эффект заключается в том, что простой синтаксический анализатор может использовать эти десятичные числовые значения, не отвлекаясь, скажем, на числовой надстрочный индекс или дробь. Восемьдесят три идеограммы CJK, представляющие число, включая те, которые используются для бухгалтерского учета, имеют тип Numeric.
С другой стороны, символы, которые могут иметь числовое значение в качестве второго значения, по-прежнему помечены как Numeric type None и не имеют числового значения. Например, латинские буквы могут использоваться в нумерации абзацев, как "II.A.1.b", но буквы "I", "A" и "b" не являются числовыми (тип None ) и не имеют числового значения.
Шестнадцатеричные символы — это символы в серии с шестнадцатеричными значениями 0...9ABCDEF (шестнадцать символов, десятичное значение 0–15). Свойство символа Hex_Digit устанавливается в значение Yes, когда символ находится в такой серии:
Сорок четыре символа обозначены как Hex_Digit . Символы в блоке Basic Latin также обозначены как ASCII_Hex_Digit .
В Unicode нет отдельных символов для шестнадцатеричных значений. Следствием этого является то, что при использовании обычных символов невозможно определить, подразумевается ли шестнадцатеричное значение или подразумевается ли значение вообще. Это должно определяться на более высоком уровне, например, путем добавления 0x к шестнадцатеричному числу или по контексту. Единственная особенность заключается в том, что Unicode может отмечать, может ли последовательность быть или не быть шестнадцатеричным значением.
Блок — это уникальный поименованный, непрерывный диапазон кодовых точек. Он идентифицируется первой и последней кодовой точкой. Блоки не перекрываются . Блок может содержать зарезервированные, не назначенные и т. д. кодовые точки. Каждый назначенный символ имеет одно значение «имя блока» из 338 имен, назначенных в версии Unicode 16.0. Неназначенные кодовые точки за пределами существующего блока имеют значение по умолчанию «No_block».
Каждый назначенный символ может иметь одно значение для своего свойства «Script», обозначающее, к какому скрипту он принадлежит. [20] Значение представляет собой четырехбуквенный код в диапазоне Aaaa-Zzzz, как указано в ISO 15924, который сопоставлен с системой письма . За исключением случаев описания предыстории и использования скрипта, Unicode не использует связь между скриптом и языками , которые его используют. Таким образом, «иврит» относится к еврейскому скрипту, а не к еврейскому языку.
Специальный код Zyyy для "Common" допускает одно значение для символа, который используется в нескольких скриптах. Код Zinh "Inherited script", используемый для объединения символов и некоторых других специальных кодовых точек, указывает, что символ "наследует" свою идентичность скрипта от символа, с которым он объединен. (Ранее Unicode использовал для этой цели частный код Qaai.) Код Zzzz "Unknown" используется для всех символов, которые не принадлежат скрипту (т. е. значение по умолчанию), таких как символы и символы форматирования. В целом, символы одного скрипта могут быть разбросаны по нескольким блокам, как латинские символы . И наоборот: несколько скриптов могут присутствовать в одном блоке, например, блок Letterlike Symbols содержит символы из латинского, греческого и общего скриптов.
Если Script равен "" (пустой), то согласно Unicode символ не принадлежит к скрипту. Это относится к символам, поскольку существующие коды скрипта ISO "Zmth" (математическая нотация), "Zsym" (символ) и "Zsye" (символ, вариант эмодзи) не используются в Unicode. Свойство "Script" также пусто для кодовых точек, которые не являются типографскими символами, такими как элементы управления, заменители и кодовые точки частного использования.
Если в ISO 15924 есть определенное имя псевдонима письма, оно используется в имени символа: U+0041 A ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A и U+05D0 א ЕВРЕЙСКАЯ БУКВА ALEF .
Разложения, тип разложения, канонический объединяющий класс, исключения композиции и многое другое.
Age — это версия Стандарта, в которой впервые была обозначена кодовая точка. Номер версии сокращается до нумерации major.minor, хотя используются более подробные номера версий: версии 4.0.0 и 4.0.1 обе называются 4.0 как Age. Учитывая выпуски, Age может быть из диапазона: 1.1, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, 6.0, 6.1, 6.2, 6.3, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 12.1, 13.0, 14.0, 15.0, 15.1 и 16.0. [21] Длинные значения для Age начинаются с буквы V и используют подчеркивание вместо точки: например, V1_1. [2] Кодовые точки без специально назначенного значения возраста имеют значение «NA» с длинной формой «Unassigned».
После определения символа он не будет удален или переназначен. [22] Однако символ может быть объявлен устаревшим , что означает, что его «использование настоятельно не рекомендуется». [23] Начиная с версии Unicode 15.1, следующие пятнадцать символов являются устаревшими: [24]
Стандарт Unicode определяет следующие свойства, связанные с границами:
Unicode может назначать псевдонимы кодовым точкам. Эти имена уникальны среди всех имен (включая обычные), поэтому их можно использовать в качестве идентификатора. Существует пять возможных причин для добавления псевдонима:
После кодирования символа он не будет перемещен или удален.