Персонажи универсального набора символов - Universal Character Set characters

Новый Unicode logo.svg

Unicode Consortium (UC) и Международная организация по стандартизации (ИСО) сотрудничать на универсальный набор символов (UCS). UCS - это международный стандарт для преобразования символов, используемых в естественном языке, математике, музыке и других областях, в машиночитаемые значения. Создавая это сопоставление, UCS позволяет поставщикам компьютерного программного обеспечения взаимодействовать и передавать текстовые строки в кодировке UCS друг другу. Поскольку это универсальная карта, ее можно использовать для одновременного представления нескольких языков. Это позволяет избежать путаницы с использованием нескольких устаревших кодировок символов , которые могут привести к тому, что одна и та же последовательность кодов будет иметь несколько значений и, следовательно, будет неправильно декодирована, если будет выбран неправильный.

UCS потенциально может кодировать более 1 миллиона символов. Каждый символ UCS абстрактно представлен кодовой точкой , которая представляет собой целое число от 0 до 1,114,111, используемое для представления каждого символа во внутренней логике программного обеспечения для обработки текста (1,114,112 = 2 20 + 2 16 или 17 × 2 16 , или шестнадцатеричное 110 000 кодовых точек). В Unicode 14.0, выпущенном в сентябре 2021 года, выделено 288 512 (26%) из этих кодовых точек, включая 144 762 (13%) назначенных символа, 137 468 (12,3%) зарезервированных для частного использования , 2048 для суррогатов и 66 назначенных не- символов , оставив 825 600 (74%) нераспределенными. Количество закодированных символов составляется следующим образом:

  • 144532 графических символа (некоторые из которых не имеют видимых глифов, но по-прежнему считаются графическими)
  • 230 символов специального назначения для управления и форматирования.

ISO поддерживает базовое отображение символов от имени символа до кодовой точки. Часто термины «символ» и «кодовая точка» используются как синонимы. Однако, когда проводится различие, кодовая точка относится к целому числу символа: то, что можно было бы считать его адресом. В то время как символ в UCS 10646 включает комбинацию кодовой точки и своего имени, Unicode добавляет множество других полезных свойств к набору символов, таких как блок, категория, сценарий и направленность.

Помимо UCS, Unicode также предоставляет другие детали реализации, такие как:

  1. превосходящие сопоставления между UCS и другими наборами символов
  2. разные сопоставления символов и символьных строк для разных языков
  3. алгоритм для размещения двунаправленного текста, при котором текст в одной строке может перемещаться слева направо и справа налево
  4. алгоритм сворачивания регистра

Конечные пользователи компьютерного программного обеспечения вводят эти символы в программы с помощью различных методов ввода. Методы ввода могут быть через клавиатуру или графическую палитру символов.

ПСК можно разделить по-разному, например, по плоскости , блоку, категории символа или свойству символа.

Обзор справочника персонажей

HTML или XML ссылка числового символа относится к символу , по его универсальному характеру Set / Unicode код точка, и использует формат

&#nnnn;

или

&#xхххх;

где nnnn - это кодовая точка в десятичной форме, а hhhh - это кодовая точка в шестнадцатеричной форме. В XML-документах x должен быть в нижнем регистре. Нннн или хххх может быть любое количество цифр и может включать в себя ведущие нули. В hhhh могут смешиваться прописные и строчные буквы, хотя прописные буквы являются обычным стилем.

Напротив, ссылка на символьный объект ссылается на символ по имени объекта, который имеет желаемый символ в качестве замещающего текста . Сущность должна быть либо предопределена (встроена в язык разметки), либо явно объявлена ​​в определении типа документа (DTD). Формат такой же, как и для любой ссылки на сущность:

&имя;

где name - это имя объекта с учетом регистра. Точка с запятой обязательна.

Самолеты

Unicode и ISO делят набор кодовых точек на 17 плоскостей, каждая из которых может содержать 65536 различных символов или всего 1114 112 символов. По состоянию на 2021 год (Unicode 14.0) ISO и Консорциум Unicode выделяли символы и блоки только в семи из 17 плоскостей. Остальные остаются пустыми и зарезервированы для использования в будущем.

Большинство персонажей в настоящее время назначены на первый план: базовый многоязычный уровень . Это сделано для облегчения перехода к устаревшему программному обеспечению, так как базовая многоязычная плоскость может быть адресована всего двумя октетами . Персонажи за пределами первого плана обычно используются очень редко или редко.

Каждой плоскости соответствует значение одной или двух шестнадцатеричных цифр (0-9, A-F), предшествующих четырем последним: следовательно, U + 24321 находится в плоскости 2, U + 4321 находится в плоскости 0 (неявно читается как U + 04321 ), а U + 10A200 будет в плоскости 16 (шестнадцатеричное 10 = десятичное 16). В пределах одной плоскости диапазон кодовых точек является шестнадцатеричным 0000-FFFF, что дает максимум 65536 кодовых точек. Самолеты ограничивают кодовые точки подмножеством этого диапазона.

Блоки

Unicode добавляет свойство блока к UCS, которое дополнительно разделяет каждую плоскость на отдельные блоки. Каждый блок представляет собой группу символов по их использованию, например «математические операторы» или «символы еврейского алфавита». При назначении символов ранее неназначенным кодовым точкам Консорциум обычно выделяет целые блоки схожих символов: например, все символы, принадлежащие одному и тому же сценарию, или все символы аналогичного назначения назначаются одному блоку. Блоки могут также поддерживать неназначенные или зарезервированные кодовые точки, когда Консорциум ожидает, что блок потребует дополнительных назначений.

Первые 256 кодовых точек в UCS соответствуют кодам ISO 8859-1 , самой популярной 8-битной кодировке символов в западном мире . В результате первые 128 символов также идентичны ASCII . Хотя Unicode называет их блоками латинского алфавита, эти два блока содержат много символов, которые обычно используются за пределами латинского алфавита. В общем, не все символы в данном блоке должны принадлежать к одному и тому же сценарию, и данный сценарий может находиться в нескольких разных блоках.

Категории

Unicode назначает каждому символу UCS общую категорию и подкатегорию. Общие категории: буква, знак, число, пунктуация, символ или элемент управления (другими словами, форматирующий или неграфический символ).

Типы включают:

  • Современные, исторические и древние рукописи . По состоянию на 2021 год (Unicode 14.0) UCS определяет 159 скриптов, которые используются или использовались во всем мире. Многие другие находятся на различных этапах утверждения для будущего включения UCS.
  • Международный фонетический алфавит . UCS выделяет несколько блоков (более 300 символов) для символов Международного фонетического алфавита .
  • Объединение диакритических знаков . Важным достижением Unicode в разработке UCS и связанных алгоритмов обработки текста стало введение комбинированных диакритических знаков. Предоставляя акценты, которые могут сочетаться с любым буквенным символом, Unicode и UCS значительно сокращают количество необходимых символов. Хотя UCS также включает предварительно составленные символы, они были включены в первую очередь для облегчения поддержки в UCS систем обработки текста, отличных от Unicode.
  • Пунктуация . Наряду с унификацией диакритических знаков UCS также стремилась унифицировать пунктуацию во всех шрифтах. Однако многие скрипты также содержат знаки препинания, если они не имеют аналогичной семантики в других скриптах.
  • Символы . Многие математические, технические, геометрические и другие символы включены в ПСК. Это обеспечивает отдельные символы с их собственной кодовой точкой или символом, а не полагается на переключение шрифтов для получения символических глифов.
    • Валюта .
    • Письмо . Эти символы выглядят как комбинации многих распространенных букв латинского алфавита, таких как ℅. Unicode обозначает многие из буквоподобных символов как символы совместимости, как правило, потому что они могут быть в виде обычного текста, заменяя глифы для составной последовательности символов: например, заменяя глиф ℅ на составленную последовательность символов c / o.
    • Числовые формы . Числовые формы в основном состоят из заранее составленных дробей и римских цифр. Как и другие области составления последовательностей символов, подход Unicode предпочитает гибкость составления дробей путем объединения символов вместе. В этом случае для создания дробей числа комбинируются с символом дробной черты (U + 2044). В качестве примера гибкости, которую обеспечивает этот подход, в UCS включены девятнадцать предварительно составленных знаков дроби. Однако существует бесконечное количество возможных дробей. При использовании составляющих символов бесконечность дробей обрабатывается 11 символами (0–9 и косая черта дроби). Никакой набор символов не может включать кодовые точки для каждой заранее составленной дроби. В идеале текстовая система должна представлять одни и те же глифы для дроби, будь то одна из предварительно составленных дробей (например,) или составляющая последовательность символов (например, 1⁄3). Однако веб-браузеры, как правило, не так сложны с Unicode и обработкой текста. Это гарантирует, что предварительно составленные дроби и объединенные дроби последовательности будут выглядеть совместимыми рядом друг с другом.
    • Стрелки .
    • Математический .
    • Геометрические фигуры .
    • Унаследованные вычисления .
    • Управляющие изображения Графические представления многих управляющих символов.
    • Рисунок коробки .
    • Блочные элементы .
    • Шаблоны Брайля .
    • Оптическое распознавание символов .
    • Технические .
    • Дингбаты .
    • Разные символы .
    • Смайлики .
    • Символы и пиктограммы .
    • Алхимические символы .
    • Фигуры (шахматы, шашки, го, кости, домино, маджонг, игральные карты и многие другие).
    • Шахматные символы
    • Тай Сюань Цзин .
    • Символы гексаграммы Ицзин .
  • CJK . Посвящен идеограммам и другим символам для поддержки языков Китая, Японии, Кореи (CJK), Тайваня, Вьетнама и Таиланда.
    • Радикалы и штрихи .
    • Идеографы . Безусловно, большая часть UCS посвящена иероглифам, используемым в языках Восточной Азии. Хотя представление глифов этих идеографов в языках, которые их используют, разошлось, UCS объединяет эти символы хань в то, что Unicode называет Unihan (для Unified Han). В Unihan программное обеспечение верстки текста должно работать вместе с доступными шрифтами и этими символами Unicode, чтобы создать соответствующий глиф для соответствующего языка. Несмотря на объединение этих персонажей, UCS по-прежнему включает более 92 000 иероглифов Unihan.
  • Музыкальная нотация .
  • Дуплоян сокращения .
  • Sutton SignWriting .
  • Совместимость символов . Несколько блоков в UCS почти полностью посвящены символам совместимости. Символы совместимости - это те, которые включены для поддержки устаревших систем обработки текста, которые не делают различий между символом и глифом, как это делает Unicode. Например, многие арабские буквы представлены другим глифом, когда буква появляется в конце слова, чем когда буква появляется в начале слова. Подход Unicode предпочитает, чтобы эти буквы были сопоставлены с одним и тем же символом для облегчения внутренней машинной обработки и хранения текста. Чтобы дополнить этот подход, текстовое программное обеспечение должно выбирать различные варианты глифов для отображения символа в зависимости от его контекста. Для такой совместимости включено более 4000 символов.
  • Управляющие персонажи .
  • Суррогаты . UCS включает 2048 кодовых точек в базовой многоязычной плоскости (BMP) для пар суррогатных кодовых точек. Вместе эти суррогаты позволяют адресовать любую кодовую точку в шестнадцати других плоскостях с помощью двух суррогатных кодовых точек. Это обеспечивает простой встроенный метод кодирования 20,1-битной UCS в 16-битной кодировке, такой как UTF-16. Таким образом, UTF-16 может представлять любой символ в BMP одним 16-битным байтом. Затем символы вне BMP кодируются с использованием двух 16-битных байтов (всего 4 октета) с использованием суррогатных пар.
  • Частное использование . Консорциум предоставляет несколько блоков и плоскостей для частного использования, которым могут быть назначены символы в различных сообществах, а также у поставщиков операционных систем и шрифтов.
  • Не-персонажи . Консорциум гарантирует, что определенным кодовым точкам никогда не будет присвоен символ, и вызывает эти несимвольные кодовые точки. Такими кодовыми точками являются две последние кодовые точки каждой плоскости (заканчивающиеся на FE и FF). Есть несколько других, разбросанных по Основному Многоязычному Плану, первому плану.

Персонажи специального назначения

Юникод кодирует более ста тысяч символов. Большинство из них представляют собой графемы для обработки в виде линейного текста. Однако некоторые из них либо не представляют собой графемы, либо, как графемы, требуют особой обработки. В отличие от управляющих символов ASCII и других символов, включенных в устаревшие возможности двустороннего обмена, эти другие символы специального назначения наделяют простой текст важной семантикой.

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

Unicode не определяет разделение труда между шрифтом и программным обеспечением (или «движком») верстки текста при рендеринге текста Unicode. Поскольку более сложные форматы шрифтов, такие как OpenType или Apple Advanced Typography , обеспечивают контекстную замену и позиционирование глифов, простой механизм компоновки текста может полностью полагаться на шрифт при принятии всех решений по выбору и размещению глифов. В той же ситуации более сложный движок может комбинировать информацию из шрифта со своими собственными правилами для достижения собственного представления о наилучшем рендеринге. Чтобы реализовать все рекомендации спецификации Unicode, текстовый движок должен быть подготовлен к работе со шрифтами любого уровня сложности, поскольку правила контекстной подстановки и позиционирования не существуют в некоторых форматах шрифтов и являются необязательными для остальных. Фракция слэш пример: сложные шрифты могут или не могут поставить правила позиционирования в присутствии фракции косых черт , чтобы создать фракцию, в то время как шрифты в простых форматах не может.

Отметка порядка байтов

При появлении в начале текстового файла или потока метка порядка байтов (BOM) U + FEFF намекает на форму кодирования и ее порядок байтов.

Если первый байт потока равен 0xFE, а второй - 0xFF, то текст потока вряд ли будет закодирован в UTF-8 , поскольку эти байты недопустимы в UTF-8. Кроме того , вероятно, не будет UTF-16 в прямой порядок байтов порядка байтов , потому что 0xFE, 0xFF читается как 16-разрядное Little Endian слово будет U + FFFE, которая не имеет смысла. Последовательность также не имеет значения в какой-либо схеме кодировки UTF-32 , поэтому, в целом, она служит довольно надежным показателем того, что текстовый поток кодируется как UTF-16 в порядке байтов с прямым порядком байтов. И наоборот, если первые два байта равны 0xFF, 0xFE, то можно предположить, что текстовый поток закодирован как UTF-16LE, потому что, прочитанные как 16-битное значение с прямым порядком байтов, байты дают ожидаемую метку порядка байтов 0xFEFF. Однако это предположение становится сомнительным, если следующие два байта равны 0x00; либо текст начинается с нулевого символа (U + 0000), либо правильная кодировка на самом деле UTF-32LE, в которой полная 4-байтовая последовательность FF FE 00 00 представляет собой один символ, спецификацию.

Последовательность UTF-8, соответствующая U + FEFF, - это 0xEF, 0xBB, 0xBF. Эта последовательность не имеет значения в других формах кодирования Unicode, поэтому она может служить для обозначения того, что этот поток закодирован как UTF-8.

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

Математические невидимки

В первую очередь для математики невидимый разделитель (U + 2063) обеспечивает разделитель между символами, где знаки препинания или пробелы могут быть опущены, например, в двумерном индексе, таком как i⁣j. Невидимые времена (U + 2062) и Приложение функции (U + 2061) полезны в математическом тексте, где умножение терминов или применение функции подразумевается без какого-либо глифа, указывающего на операцию. Unicode 5.1 также вводит символ математического невидимого плюса (U + 2064), который может указывать на то, что целое число, за которым следует дробь, должно обозначать их сумму, но не их произведение.

Дробная косая черта

Пример использования дробной косой черты . Этот шрифт ( Apple Chancery ) показывает синтезированную обыкновенную дробь слева и предварительно составленный глиф дроби справа как рендеринг простой текстовой строки «1 1⁄4 1¼». В зависимости от текстовой среды одиночная строка «1 1⁄4» может дать любой результат, один из них справа, путем замены последовательности дробей на один предварительно составленный глиф дроби.
Более сложный пример использования дробной косой черты: простой текст «4 221⁄225», отображаемый в Apple Chancery . Этот шрифт предоставляет программе верстки текста инструкции по синтезу дроби в соответствии с правилом Unicode, описанным в этом разделе.

Знак дробной косой черты (U + 2044) имеет особое поведение в стандарте Unicode: (раздел 6.2, Другая пунктуация)

Стандартная форма дроби, построенная с использованием дробной косой черты, определяется следующим образом: любая последовательность из одной или нескольких десятичных цифр (общая категория = Nd), за которой следует дробная косая черта, за которой следует любая последовательность из одной или нескольких десятичных цифр. Такая дробь должна отображаться в виде единицы, например ¾. Если программное обеспечение для отображения не способно отобразить дробь на единицу, то ее также можно отобразить как простую линейную последовательность в качестве запасного варианта (например, 3/4). Если дробь должна быть отделена от предыдущего числа, то можно использовать пробел, выбрав соответствующую ширину (нормальную, тонкую, нулевую и т. Д.). Например, 1 + ZERO WIDTH SPACE + 3 + FRACTION SLASH + 4 отображается как 1¾.

Следуя этой рекомендации Unicode, системы обработки текста выдают сложные символы только из простого текста. Здесь наличие символа дробной косой черты указывает механизму компоновки синтезировать дробную часть из всех последовательных цифр, предшествующих и следующих за косой чертой. На практике результаты различаются из-за сложного взаимодействия между шрифтами и механизмами компоновки. Механизмы простой верстки текста, как правило, вообще не синтезируют дроби, а вместо этого рисуют глифы в виде линейной последовательности, как описано в резервной схеме Unicode.

Более сложные механизмы компоновки сталкиваются с двумя практическими альтернативами: они могут следовать рекомендациям Unicode или они могут полагаться на собственные инструкции шрифта для синтеза дробей. Игнорируя инструкции шрифта, механизм компоновки может гарантировать рекомендованное поведение Unicode. Следуя инструкциям шрифта, механизм компоновки может улучшить типографику, потому что размещение и форма цифр будут настроены на этот конкретный шрифт с этим конкретным размером.

Проблема со следованием инструкциям шрифта заключается в том, что более простые форматы шрифтов не имеют возможности указать поведение синтеза дробей. Между тем, более сложные форматы не требуют, чтобы шрифт определял поведение дробного синтеза, и поэтому многие этого не делают. Большинство шрифтов сложных форматов могут указывать механизму компоновки заменять последовательность простого текста, например «1⁄2», предварительно составленным глифом «½». Но поскольку многие из них не будут выдавать инструкции для синтеза дробей, обычная текстовая строка, такая как «221⁄225», вполне может отображаться как 22½25 (при этом ½ является замененной предварительно составленной дробью, а не синтезированной). Перед лицом подобных проблем те, кто хочет полагаться на рекомендуемое поведение Unicode, должны выбирать шрифты, которые, как известно, синтезируют дробные части, или программное обеспечение для верстки текста, которое, как известно, обеспечивает рекомендуемое поведение Unicode независимо от шрифта.

Двунаправленное нейтральное форматирование

Направление письма - это глифы направления, которые размещаются на странице относительно прямого продвижения символов в строке Unicode. Английский и другие языки латинского алфавита имеют направление письма слева направо. Несколько основных письменных шрифтов, таких как арабский и иврит , имеют направление письма справа налево. Спецификация Unicode присваивает каждому символу направленный тип, чтобы информировать текстовые процессоры о том, как последовательности символов должны быть упорядочены на странице.

Хотя лексические символы (то есть буквы) обычно характерны для одного письменного сценария, некоторые символы и знаки препинания используются во многих письменных сценариях. Unicode мог бы создать повторяющиеся символы в репертуаре, которые отличаются только направленным типом, но вместо этого предпочел объединить их и присвоить им нейтральный направленный тип. Они получают направление во время рендеринга от соседних символов. Некоторые из этих символов также имеют свойство двунаправленного зеркального отображения, указывающее, что глиф должен отображаться в зеркальном отображении при использовании в тексте с письмом справа налево.

Тип направления нейтрального персонажа во время рендеринга может оставаться неоднозначным, когда метка размещается на границе между изменениями направления. Чтобы решить эту проблему, Unicode включает символы, которые имеют сильную направленность, не имеют связанных с ними глифов и игнорируются системами, которые не обрабатывают двунаправленный текст:

  • Арабский буквенный знак (U + 061C)
  • Знак слева направо (U + 200E)
  • Отметка справа налево (U + 200F)

Окружение двухстороннего нейтрального символа меткой слева направо заставит персонаж вести себя как символ слева направо, а окружение его меткой справа налево заставит его вести себя как символ справа налево персонаж. Поведение этих символов подробно описано в двунаправленном алгоритме Unicode.

Двунаправленное общее форматирование

Хотя Unicode предназначен для работы с несколькими языками, несколькими системами письма и даже текстом, который перемещается слева направо или справа налево с минимальным вмешательством автора, существуют особые обстоятельства, когда сочетание двунаправленного текста может стать сложным, требуя большего авторский контроль. Для этих обстоятельств Unicode включает пять других символов для управления сложным встраиванием текста с письмом слева направо в текст с письмом справа налево и наоборот:

  • Вложение слева направо (U + 202A)
  • Вложение справа налево (U + 202B)
  • Направленное форматирование Pop (U + 202C)
  • Переопределение слева направо (U + 202D)
  • Преобразование справа налево (U + 202E)
  • Изолят слева направо (U + 2066)
  • Изолят справа налево (U + 2067)
  • Первый сильный изолят (U + 2068)
  • Направленный изолятор поп-музыки (U + 2069)

Подстрочные символы аннотации

  • Якорь межстрочной аннотации (U + FFF9)
  • Подстрочный разделитель аннотаций (U + FFFA)
  • Подстрочный терминатор аннотации (U + FFFB)

Зависит от сценария

  • Управление форматом с префиксом
    • Арабский цифровой знак (U + 0600)
    • Арабский знак Сана (U + 0601)
    • Маркер для сносок на арабском языке (U + 0602)
    • Арабский знак Сафха (U + 0603)
    • Арабский знак самват (U + 0604)
    • Надпись арабской цифрой (U + 0605)
    • Арабский конец аята (U + 06DD)
    • Сирийский аббревиатурный знак (U + 070F)
    • Выше марки арабского фунта (U + 0890)
    • Арабский пиастр Марки выше (U + 0891)
    • Знак числа Кайтхи (U + 110BD)
    • Знак числа Кайтхи вверху (U + 110CD)
  • Египетские иероглифы
    • Вертикальный соединитель египетского иероглифа (U + 13430)
    • Горизонтальный соединитель египетского иероглифа (U + 13431)
    • Вставка египетского иероглифа в начале (U + 13432)
    • Вставка египетского иероглифа внизу (U + 13433)
    • Вставка египетского иероглифа в верхней части (U + 13434)
    • Вставка египетского иероглифа внизу (U + 13435)
    • Наложение египетского иероглифа в середине (U + 13436)
    • Начало сегмента египетского иероглифа (U + 13437)
    • Конечный сегмент египетского иероглифа (U + 13438)
  • Брахми
    • Объединитель числа Брахми (U + 1107F)
  • Образование мертвых символов на основе брахми ( вирама и подобные диакритические знаки)
    • Знак Деванагари Вирама (U + 094D)
    • Бенгальский знак Вирама (U + 09CD)
    • Знак Гурмукхи Вирама (U + 0A4D)
    • Знак Гуджарати Вирама (U + 0ACD)
    • Ория Знак Вирама (U + 0B4D)
    • Тамильский знак Вирама (U + 0BCD)
    • Знак телугу Вирама (U + 0C4D)
    • Знак каннада Вирама (U + 0CCD)
    • Знак Малаялам Вертикальная черта Вирама (U + 0D3B)
    • Круговая Вирама Знака Малаялама (U + 0D3C)
    • Знак Малаялам Вирама (U + 0D4D)
    • Сингальский знак Аль-Лакуна (U + 0DCA)
    • Тайский персонаж Пхинту (U + 0E3A)
    • Тайский иероглиф Ямаккан (U + 0E4E)
    • Лаосский знак Пали Вирама (U + 0EBA)
    • Знак Мьянмы Вирама (U + 1039)
    • Тагальский знак Вирама (U + 1714)
    • Тагальский знак Памудпод (U + 1715)
    • Знак Хануно Памудпод (U + 1734)
    • Кхмерский знак Вириам (U + 17D1)
    • Кхмерский знак Коенг (U + 17D2)
    • Знак Тай Тхам Сакот (U + 1A60)
    • Знак Тай Тхам Ра Хаам (U + 1A7A)
    • Балийский Адег Адег (U + 1B44)
    • Суданский знак Pamaaeh (U + 1BAA)
    • Суданский знак Вирама (U + 1BAB)
    • Батак Панголат (U + 1BF2)
    • Батак Панонгонан (U + 1BF3)
    • Силоти Нагри Знак Хасанта (U + A806)
    • Силоти Нагри подписывает альтернативу Хасанте (U + A82C)
    • Знак Саураштры Вирама (U + A8C4)
    • Реджанг Вирама (U + A953)
    • Яванский Пангкон (U + A9C0)
    • Митей Майек Вирама (U + AAF6)
    • Харошти Вирама (U + 10A3F)
    • Брахми Вирама (U + 11046)
    • Знак Брахми Старый тамильский Вирама (U + 11070)
    • Знак Кайтхи Вирама (U + 110B9)
    • Чакма Вирама (U + 11133)
    • Знак Шарада Вирама (U + 111C0)
    • Знак Ходжки Вирама (U + 11235)
    • Худавади Знак Вирама (U + 112EA)
    • Знак Гранты Вирама (U + 1134D)
    • Ньюа Знак Вирама (U + 11442)
    • Знак Тирхуты Вирама (U + 114C2)
    • Знак Сиддхама Вирама (U + 115BF)
    • Знак Моди Вирама (U + 1163F)
    • Знак Такри Вирама (U + 116B6)
    • Убийца знаков Ахома (U + 1172B)
    • Знак Догра Вирама (U + 11839)
    • Dives Akuru Sign Halanta (U + 1193D)
    • Дайвс Акуру Вирама (U + 1193E)
    • Знак Нандинагари Вирама (U + 119E0)
    • Знак площади Занабазар Вирама (U + 11A34)
    • Квадрат Занабазар (U + 11A47)
    • Сойомбо Субджайнер (U + 11A99)
    • Знак Бхайкуки Вирама (U + 11C3F)
    • Масарам Гонди Знак Халанта (U + 11D44)
    • Масарам Гонди Вирама (U + 11D45)
    • Гунджала Гонди Вирама (U + 11D97)
  • Исторические вирамы с другими функциями
    • Тибетец Марк Халанта (U + 0F84)
    • Знак Мьянмы Асат (U + 103A)
    • Знак Лимбу Sa-I (U + 193B)
    • Митей Майек Апун Ийек (U + ABED)
    • Чакма Майя (U + 11134)
  • Селекторы монгольских вариаций
    • Селектор монгольских свободных вариаций один (U + 180B)
    • Селектор свободных вариаций монгольского языка 2 (U + 180C)
    • Селектор трех монгольских свободных вариаций (U + 180D)
    • Монгольский разделитель гласных (U + 180E)
  • Универсальные селекторы вариантов
    • Селектор вариантов от-1 до -16 (U + FE00 – U + FE0F)
    • Селектор вариантов от-17 до -256 (U + E0100 – U + E01EF)
  • Знаки тегов (U + E0001 и U + E0020 – U + E007F)
  • Тифинаг
    • Тифинагский согласный соединитель (U + 2D7F)
  • Огам
    • Огамовый пробел (U + 1680)
  • Идеографический
    • Индикатор идеографической вариации (U + 303E)
    • Идеографическое описание (U + 2FF0 – U + 2FFB)
  • Управление музыкальным форматом
    • Музыкальный символ Begin Beam (U + 1D173)
    • Концевая балка с музыкальным символом (U + 1D174)
    • Музыкальный символ начала галстука (U + 1D175)
    • Музыкальный символ на конце галстука (U + 1D176)
    • Музыкальный символ Begin Slur (U + 1D177)
    • Музыкальный символ End Slur (U + 1D178)
    • Музыкальный символ в начале фразы (U + 1D179)
    • Конечная фраза музыкального символа (U + 1D17A)
  • Управление сокращенным форматом
    • Перекрытие букв сокращенного формата (U + 1BCA0)
    • Сокращенный формат продолжающегося перекрытия (U + 1BCA1)
    • Шаг вниз для сокращенного формата (U + 1BCA2)
    • Шаг увеличения сокращенного формата (U + 1BCA3)
  • Устаревшее альтернативное форматирование
    • Запретить симметричную замену (U + 206A)
    • Активировать симметричный обмен (U + 206B)
    • Запретить формирование арабской формы (U + 206C)
    • Активировать формирование арабской формы (U + 206D)
    • Национальные цифры (U + 206E)
    • Номинальные формы цифр (U + 206F)

Другие

  • Символ замены объекта (U + FFFC)
  • Заменяющий символ (U + FFFD)

Персонажи против кодовых очков

Термин «персонаж» не имеет четкого определения, и большую часть времени мы имеем в виду графему . Графема визуально представлена ​​ее глифом . Используемый шрифт (часто ошибочно называемый шрифтом ) может отображать визуальные вариации одного и того же символа. Возможно, что две разные графемы могут иметь один и тот же глиф или визуально настолько близки, что средний читатель не сможет их различить.

Графема почти всегда представлена ​​одной кодовой точкой, например, ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A представлена ​​только кодовой точкой U + 0041.

Графема LATIN CAPITAL A WITH DIAERESIS Ä является примером, в котором символ может быть представлен более чем одной кодовой точкой. Это может быть U + 00C4 или U + 0041U + 0308. U + 0041 - это знакомый A, а U + 0308 - COMBINING DIAERESIS ̈ , объединяющий диакритический знак .

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

Таким образом, слово BÄM было бы тремя графемами. Он может состоять из трех или более кодовых точек в зависимости от того, как на самом деле составлены символы.

Пробелы, объединители и разделители

Unicode предоставляет список символов, которые он считает пробельными символами для поддержки взаимодействия. Программные реализации и другие стандарты могут использовать этот термин для обозначения немного другого набора символов. Например, Java не считает U + 00A0 NO-BREAK SPACE или U + 0085 <control-0085> (NEXT LINE) пробелом, даже если Unicode это делает. Пробельные символы - это символы, которые обычно используются в среде программирования. Часто они не имеют синтаксического значения в таких средах программирования и игнорируются машинными интерпретаторами. Unicode обозначает устаревшие управляющие символы от U + 0009 до U + 000D и U + 0085 как символы пробела, а также все символы, значение свойства General Category которых равно Separator. В Unicode 14.0 всего 25 пробельных символов.  

Присоединяемые и не присоединяющиеся графемы

Средство объединения нулевой ширины (U + 200D) и средство объединения нулевой ширины (U + 200C) управляют объединением и лигированием глифов. Соединитель не заставляет символы, которые в противном случае не соединялись бы или не лигировали, делать это, но в паре с не соединяющимся, эти символы могут использоваться для управления свойствами соединения и лигирования окружающих двух соединяющихся или соединяемых символов. Объединение объединяющих графем (U + 034F) используется для различения двух базовых символов как одной общей базы или орграфа, в основном для обработки основного текста, сопоставления строк, сворачивания регистра и т. Д.

Соединители и разделители слов

Самый распространенный разделитель слов - это пробел (U + 0020). Однако есть и другие элементы объединения и разделители слов, которые также указывают на разрыв между словами и участвуют в алгоритмах разрыва строки. Пробел без разрыва (U + 00A0) также обеспечивает продвижение базовой линии без глифа, но не разрешает разрыв строки, а тормозит. Пробел нулевой ширины (U + 200B) допускает разрыв строки, но не дает пробела: в некотором смысле соединяет, а не разделяет два слова. Наконец, Word Joiner (U + 2060) запрещает разрывы строк, а также не использует пустое пространство, возникающее при продвижении базовой линии.

Базовый прогресс Без достижения базовой линии
Разрешить перенос строки
(разделители)
Космос U + 0020 Пространство нулевой ширины U + 200B
Запретить разрыв строки
(соединители)
Пробел без перерыва U + 00A0 Word Joiner U + 2060

Прочие разделители

  • Разделитель строк (U + 2028)
  • Разделитель абзацев (U + 2029)

Они обеспечивают Unicode с собственными разделителями абзацев и строк независимо от устаревших управляющих символов ASCII, таких как возврат каретки (U + 000A), перевод строки (U + 000D) и следующая строка (U + 0085). Unicode не предусматривает других управляющих символов форматирования ASCII, которые, по-видимому, не являются частью модели обработки простого текста Unicode. Эти устаревшие символы управления форматированием включают табуляцию (U + 0009), табуляцию строки или вертикальную табуляцию (U + 000B) и канал формы (U + 000C), которые также считаются разрывом страницы.

Пространства

Пробел (U + 0020), обычно вводимый с помощью клавиши пробела на клавиатуре, семантически служит разделителем слов во многих языках. По устаревшим причинам UCS также включает в себя пробелы различного размера, которые являются эквивалентами совместимости для символа пробела. Хотя эти пробелы различной ширины важны в типографике, модель обработки Unicode требует, чтобы такие визуальные эффекты обрабатывались с помощью форматированного текста, разметки и других подобных протоколов. Они включены в репертуар Unicode в первую очередь для обработки двустороннего транскодирования без потерь из других кодировок набора символов. Эти пространства включают:

  1. En Quad (U + 2000)
  2. Эм Квад (U + 2001)
  3. En Space (U + 2002)
  4. Em Space (U + 2003)
  5. Трехмерное пространство (U + 2004)
  6. Пространство четырех на каждую (U + 2005)
  7. Six-Per-Em Space (U + 2006)
  8. Фигурное пространство (U + 2007)
  9. Знаки пунктуации (U + 2008)
  10. Тонкое пространство (U + 2009)
  11. Пространство для волос (U + 200A)
  12. Среднее математическое пространство (U + 205F)

За исключением исходного пробела ASCII, все остальные пробелы являются символами совместимости. В данном контексте это означает, что они фактически не добавляют к тексту семантического содержимого, а вместо этого предоставляют управление стилем. В Unicode этот несемантический элемент управления стилем часто называют форматированным текстом и выходит за рамки целей Unicode. Вместо того, чтобы использовать разные пробелы в разных контекстах, этот стиль следует обрабатывать с помощью интеллектуального программного обеспечения для верстки текста.

Три других разделителя слов, зависящих от системы письма:

  • Монгольский разделитель гласных (U + 180E)
  • Идеографическое пространство (U + 3000): действует как идеографический разделитель и обычно отображается как пробел той же ширины, что и идеограмма.
  • Огамовый пробел (U + 1680): этот символ иногда отображается с глифом, а иногда только как пробел.

Управляющие символы разрыва строки

Некоторые символы разработаны, чтобы помочь контролировать перенос строки, либо препятствуя их переносу (символы без разрыва), либо предлагая перенос строки, такой как мягкий дефис (U + 00AD) (иногда называемый «застенчивым дефисом»). Такие символы, хотя и предназначены для стилизации, вероятно, незаменимы для сложных типов разрыва строки, которые они делают возможными.

Запрещение перерыва

  1. Неразрывный дефис (U + 2011)
  2. Бесперебойный пробел (U + 00A0)
  3. Тибетский разделитель знаков Tsheg Bstar (U + 0F0C)
  4. Узкое неразрывное пространство (U + 202F)

Символы, запрещающие разрыв, должны быть эквивалентны последовательности символов, заключенной в Word Joiner U + 2060. Однако Word Joiner может быть добавлен до или после любого символа, который позволяет разрыву строки препятствовать такому разрыву строки.

Включение перерыва

  1. Мягкий дефис (U + 00AD)
  2. Тибетский Знак Межсложный Цхег (U + 0F0B)
  3. Пространство нулевой ширины (U + 200B)

И запрещающие разрыв, и разрешающие разрыв символы участвуют с другими знаками пунктуации и пробельными символами, чтобы позволить системам визуализации текста определять разрывы строк в рамках алгоритма разрыва строки Unicode.

Специальные кодовые точки

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

Не-персонажи

66 несимвольных кодовых точек (помеченных <not a character>) отложены и гарантированно никогда не будут использоваться для символа. Каждая из 17 плоскостей имеет две конечные кодовые точки, зарезервированные как несимвольные. Итак, несимволы: U + FFFE и U + FFFF на BMP, U + 1FFFE и U + 1FFFF на Плоскости 1 и так далее, до U + 10FFFE и U + 10FFFF на Плоскости 16, всего 34 кода. точки. Кроме того, в BMP есть непрерывный диапазон из еще 32 несимвольных кодовых точек: U + FDD0..U + FDEF. Поэтому программные реализации могут свободно использовать эти кодовые точки для внутреннего использования. Одним из особенно полезных примеров несимвола является кодовая точка U + FFFE. Эта кодовая точка имеет обратную последовательность байтов UTF-16 / UCS-2 метки порядка байтов (U + FEFF). Если поток текста содержит этот несимвол, это хороший признак того, что текст был интерпретирован с неправильным порядком байтов .

Версии стандарта Unicode от 3.1.0 до 6.3.0 утверждали, что несимволы «никогда не должны заменяться местами». В исправлении № 9 стандарта позже говорилось, что это ведет к «неуместному чрезмерному отклонению», поясняется, что «[Несимволы] не являются незаконными при обмене и не вызывают неправильный формат текста Unicode», и удаляется исходное утверждение.

Суррогаты

UCS использует суррогаты для адресации символов за пределами исходной базовой многоязычной плоскости, не прибегая к представлению байтов, превышающих 16 бит. Есть 1024 «высоких» суррогатов (D800 – DBFF) и 1024 «низких» суррогата (DC00 – DFFF). Комбинируя пару суррогатов, можно адресовать оставшиеся символы во всех других плоскостях (1024 × 1024 = 1048576 кодовых точек в других 16 плоскостях). В UTF-16 они всегда должны появляться парами, как старший суррогат, за которым следует младший суррогат, таким образом, используя 32 бита для обозначения одной кодовой точки.

Суррогатная пара обозначает кодовую точку

10000 16 + ( H - D800 16 ) × 400 16 + ( L - DC00 16 )

где H и L - числовые значения высокого и низкого заместителей соответственно.

Поскольку высокие суррогатные значения в диапазоне DB80 – DBFF всегда производят значения в плоскостях частного использования, высокий суррогатный диапазон можно далее разделить на (нормальные) высокие суррогаты (D800 – DB7F) и «суррогаты с высоким уровнем частного использования» (DB80 – DBFF) .

Изолированные суррогатные кодовые точки не имеют общей интерпретации; следовательно, для этого диапазона не предоставляются таблицы кодов символов или списки имен. В языке программирования Python отдельные суррогатные коды используются для встраивания недекодируемых байтов в строки Unicode.

Частное использование

UCS включает 137468 кодовых точек для частного использования в трех различных диапазонах, каждый из которых называется областью частного использования (PUA). Стандарт Unicode распознает кодовые точки в PUA как допустимые коды символов Unicode, но не присваивает им какие-либо (абстрактные) символы. Вместо этого отдельные лица, организации, поставщики программного обеспечения, поставщики операционных систем, поставщики шрифтов и сообщества конечных пользователей могут свободно использовать их по своему усмотрению. В закрытых системах символы PUA могут работать однозначно, что позволяет таким системам представлять символы или глифы, не определенные в Unicode. В общедоступных системах их использование более проблематично, поскольку отсутствует реестр и нет способа помешать нескольким организациям использовать одни и те же коды для разных целей. Одним из примеров такого конфликта является Apple , «s использование в U + F8FF для логотипа компании Apple , по сравнению с призывника реестром Unicode » s использования в U + F8FF как Клингон мумификации глифа в сценарии Клингонского .

Базовая многоязычная плоскость включает PUA в диапазоне от U + E000 до U + F8FF (6400 ячеек кода). Самолеты Пятнадцать и Шестнадцать имеют PUA, которые состоят из всех, кроме последних двух позиций кода, которые обозначены не-символами. PUA в Пятнадцатом самолете - это диапазон от U + F0000 до U + FFFFD (65534 кодовых местоположения). PUA в шестнадцатой плоскости - это диапазон от U + 100000 до U + 10FFFD (65534 кодовых ячейки).

PUA - это концепция, унаследованная от некоторых азиатских систем кодирования. Эти системы имели частные области использования для кодирования того, что японцы называют гайдзи (редкие символы, которые обычно не встречаются в шрифтах), специфическими для приложения способами.

Персонажи, кластеры графем и глифы

В то время как многие другие наборы символов назначают символ для каждого возможного представления символа символа, Unicode стремится обрабатывать символы отдельно от глифов. Это различие не всегда однозначно, однако несколько примеров помогут проиллюстрировать это различие. Часто два символа могут быть объединены вместе типографически, чтобы улучшить читаемость текста. Например, трехбуквенная последовательность «ffi» может рассматриваться как один глиф. Другие наборы символов часто назначают этому глифу кодовую точку в дополнение к отдельным буквам: «f» и «i».

Кроме того, Unicode рассматривает диакритические модифицированные буквы как отдельные символы, которые при отображении становятся одним глифом. Например, «о» с тремой : « ö ». Традиционно другим наборам символов присваивается уникальный код символа для каждой измененной диакритической буквы, используемой в каждом языке. Unicode стремится создать более гибкий подход, позволяя комбинировать диакритические символы с любой буквой. Это может значительно сократить количество активных кодовых точек, необходимых для набора символов. В качестве примера рассмотрим язык, в котором используется латинский шрифт и сочетаются диэрезис с прописными и строчными буквами «a», «o» и «u». При подходе Unicode к набору символов для использования с латинскими буквами необходимо добавить только диакритический символ диэрезиса: «a», «A», «o», «O», «u» и «U»: всего семь персонажей. В устаревшие наборы символов необходимо добавить шесть заранее составленных букв с диэрезисом в дополнение к шести кодовым точкам, которые он использует для букв без диэрезиса: всего двенадцать кодовых точек.

Совместимость персонажей

UCS включает тысячи символов, которые Unicode определяет как символы совместимости. Это символы, которые были включены в UCS, чтобы предоставить отдельные кодовые точки для символов, которые различаются другими наборами символов, но не будут различаться в подходе Unicode к символам.

Основная причина этого различия заключалась в том, что Unicode проводит различие между символами и глифами. Например, при написании английского курсивом буква «i» может принимать разные формы, независимо от того, появляется ли она в начале слова, в конце слова, в середине слова или отдельно. Такие языки, как арабский, написанные арабским шрифтом, всегда пишутся курсивом. Каждое письмо имеет много разных форм. UCS включает 730 символов арабской формы, которые разлагаются всего на 88 уникальных арабских символов. Однако эти дополнительные арабские символы включены, поэтому программное обеспечение для обработки текста может переводить текст из других наборов символов в UCS и обратно без какой-либо потери информации, важной для программного обеспечения, отличного от Unicode.

Однако, в частности, для UCS и Unicode предпочтительный подход состоит в том, чтобы всегда кодировать или отображать эту букву на один и тот же символ, независимо от того, где она появляется в слове. Затем различные формы каждой буквы определяются методами программного обеспечения для шрифта и верстки текста. Таким образом, внутренняя память для символов остается неизменной независимо от того, где символ появляется в слове. Это значительно упрощает поиск, сортировку и другие операции по обработке текста.

Свойства персонажа

Каждый символ в Unicode определяется большим и постоянно растущим набором свойств. Большинство этих свойств не являются частью универсального набора символов. Свойства облегчают обработку текста, включая сопоставление или сортировку текста, идентификацию слов, предложений и графем, визуализацию или отображение текста и т. Д. Ниже приведен список некоторых основных свойств. В базе данных символов Юникода задокументировано много других.

Имущество Пример Подробности
Имя ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА A Это постоянное имя, присвоенное совместным сотрудничеством Unicode и ISO UCS. Существует несколько известных плохо выбранных имен, которые подтверждаются, но не будут изменены, чтобы гарантировать стабильность спецификации.
Кодовая точка U + 0041 Кодовая точка Unicode - это номер, который также постоянно присваивается вместе со свойством «Имя» и включается в сопутствующую ПСК. Обычно кодовую точку представляют как шестнадцатеричное число с префиксом «U +» впереди.
Репрезентативный символ LetterA.svg Репрезентативные глифы представлены в кодовых таблицах.
Общая категория Прописная буква Общая категория выражается в виде двухбуквенной последовательности, например «Lu» для прописной буквы или «Nd» для десятичного числа.
Объединение класса Not_Reordered (0) Поскольку диакритические знаки и другие комбинированные знаки могут быть выражены несколькими символами в Unicode, свойство «Combining Class» позволяет различать символы по типу комбинируемых символов, которые они представляют. Класс комбинирования может быть выражен как целое число от 0 до 255 или как именованное значение. Целочисленные значения позволяют переупорядочивать комбинированные метки в каноническом порядке, чтобы сделать возможным сравнение идентичных строк.
Двунаправленная категория Слева направо Указывает тип символа для применения двунаправленного алгоритма Unicode.
Двунаправленное зеркальное отображение нет Указывает, что глиф символа должен быть перевернут или отражен в рамках двунаправленного алгоритма. Зеркальные глифы могут быть предоставлены создателями шрифтов, извлечены из других символов, связанных с помощью свойства «Двунаправленный зеркальный символ», или синтезированы системой визуализации текста.
Глиф двунаправленного зеркального отображения N / A Это свойство указывает кодовую точку другого символа, чей глиф может служить зеркальным глифом для текущего символа при зеркальном отображении в двунаправленном алгоритме.
Десятичное значение NaN Для чисел это свойство указывает числовое значение символа. Для десятичных цифр все три значения имеют одинаковое значение, символы совместимости с форматированным текстом и другие арабско-индийские недесятичные цифры обычно имеют только два последних свойства, установленных на числовое значение символа, в то время как числа, не относящиеся к арабским индийским цифрам, такие как Римские цифры или цифры Ханьчжоу / Сучжоу обычно имеют только "числовое значение".
Цифра Значение NaN
Числовое значение NaN
Идеографический Ложь Указывает, что символ является идеограммой CJK : логографом в шрифте Han .
По умолчанию игнорируется Ложь Указывает, что символ игнорируется для реализаций и что не нужно отображать глиф, глиф крайней меры или заменяющий символ.
Устарело Ложь Unicode никогда не удаляет символы из репертуара, но иногда Unicode устарел для небольшого количества символов.

Unicode предоставляет онлайн-базу данных для интерактивного запроса всего репертуара символов Unicode по различным свойствам.

Смотрите также

использованная литература

внешние ссылки