В Unicode и UCS символ совместимости — это символ, который кодируется исключительно для обеспечения двусторонней конвертируемости с другими, часто более старыми стандартами. [1] Как сказано в глоссарии Unicode:
Символ, который не был бы закодирован, если бы не совместимость и возможность двустороннего преобразования с другими стандартами [2].
Хотя совместимость используется в именах, она не помечается как свойство. Однако это определение более сложное, чем показывает глоссарий. Одним из свойств, присвоенных символам консорциумом Unicode, является декомпозиция символов или декомпозиция совместимости . Более пяти тысяч символов имеют разложение совместимости, сопоставляющее этот символ совместимости с одним или несколькими другими символами UCS. Устанавливая свойство разложения символа, Unicode устанавливает этот символ как символ совместимости. Причины этих обозначений совместимости различны и более подробно обсуждаются ниже. Термин «декомпозиция» иногда сбивает с толку, поскольку в некоторых случаях декомпозиция символа может быть одноэлементной. В этих случаях декомпозиция одного символа представляет собой просто другой приблизительно (но не канонически) эквивалентный символ.
Свойство разложения совместимости для 5402 символов совместимости Юникода [ когда? ] включает ключевое слово, которое делит символы совместимости на 17 логических групп. Эти символы с разложением совместимости, но без ключевого слова, называются каноническими разлагаемыми символами, и эти символы не являются символами совместимости. Ключевые слова для совместимости разлагаемых символов включают: <начальный>, <медиальный>, <конечный>, <изолированный>, <широкий>, <узкий>, <маленький>, <квадратный>, <вертикальный>, <круг>, <без разрыва> , <фракция>, <sub>, <super> и <compat>. Эти ключевые слова дают некоторую информацию об отношении между символом совместимости и его последовательностью символов разложения совместимости. Совместимость персонажей делится на три основные категории:
Поскольку эти семантически разные символы могут отображаться глифами, похожими на глифы других символов, программное обеспечение для обработки текста должно попытаться устранить возможную путаницу ради конечных пользователей. При сравнении и сопоставлении (сортировке) текстовых строк различные формы и варианты символов форматированного текста не должны изменять результаты обработки текста. Например, пользователи программного обеспечения могут быть сбиты с толку при поиске на странице заглавной латинской буквы «I», а их программное приложение не может найти визуально похожую римскую цифру «Ⅰ».
Некоторые символы совместимости совершенно необязательны для программного обеспечения обработки текста и отображения, соответствующего стандарту Unicode. К ним относятся:
UCS, свойства символов Юникода и алгоритмы Юникода предоставляют программным реализациям все необходимое для правильного отображения этих символов из их эквивалентов разложения. Следовательно, эти разлагаемые символы совместимости становятся излишними и ненужными. Их существование в наборе символов требует дополнительной обработки текста, чтобы обеспечить правильное сравнение и сопоставление текста (см. Нормализация Юникода ). Более того, эти символы совместимости не несут никакой дополнительной или отдельной семантики. Эти символы также не обеспечивают визуально четкого отображения, если макет текста и шрифты соответствуют Unicode. Кроме того, ни один из этих символов не требуется для двусторонней конвертации в другие наборы символов, поскольку транслитерация может легко сопоставить разложенные символы с предварительно составленными аналогами в другом наборе символов. Аналогичным образом, контекстуальные формы, такие как последняя арабская буква, могут быть сопоставлены на основе ее положения в слове с соответствующим символом формы устаревшего набора символов.
Чтобы обойтись без этих символов совместимости, текстовое программное обеспечение должно соответствовать нескольким протоколам Unicode. Программное обеспечение должно иметь возможность:
В совокупности эти символы совместимости, включенные для неполных реализаций Unicode, составляют 3779 из 5402 назначенных символов совместимости. К ним относятся все символы совместимости, отмеченные ключевыми словами <начальный>, <средний>, <конечный>, <изолированный>, <фракция>, <широкий>, <узкий>, <маленький>, <вертикальный>, <квадратный> . Кроме того, он включает почти все канонические символы и большинство символов совместимости ключевых слов <compat> (исключения включают символы ключевых слов <compat> для вложенных буквенно-цифровых символов, вложенных иероглифов и тех, которые обсуждаются в § Семантически различные символы).
Многие другие символы совместимости составляют то, что Юникод считает форматированным текстом, и поэтому выходят за рамки целей Юникода и UCS. В некотором смысле даже символы совместимости, обсуждавшиеся в предыдущем разделе, — те, которые помогают устаревшему программному обеспечению отображать лигатуры и вертикальный текст — представляют собой форму форматированного текста, поскольку протоколы форматированного текста определяют, отображается ли текст тем или иным способом. Однако выбор отображения текста с лигатурами или без них или вертикально или горизонтально является несемантическим форматированным текстом. Это просто различия в стиле. Это отличается от другого форматированного текста, такого как курсив, верхние и нижние индексы или маркеры списков, где стиль форматированного текста подразумевает вместе с ним определенную семантику.
Для сравнения, сортировки, обработки и хранения обычного текста варианты форматированного текста семантически избыточны. Например, использование надстрочного символа для цифры 4, скорее всего, неотличимо от использования стандартного символа для цифры 4 с последующим использованием протоколов форматированного текста, чтобы сделать его надстрочным индексом. Таким образом, такие альтернативные символы форматированного текста создают неоднозначность, поскольку они выглядят визуально так же, как их аналоги в обычном тексте с примененным форматированием текста. Эти символы совместимости форматированного текста включают в себя:
Для всех этих символов совместимости форматированного текста отображение глифов обычно отличается от их символов разложения совместимости (связанных с ними). Однако они считаются символами совместимости и не рекомендуются для использования консорциумом Unicode, поскольку они не являются символами обычного текста, что Unicode стремится поддерживать с помощью своих UCS и связанных с ними протоколов. Форматированный текст должен обрабатываться с помощью протоколов, не поддерживающих Юникод, таких как HTML, CSS, RTF и других подобных протоколов.
Символы совместимости форматированного текста составляют 1451 из 5402 символов совместимости. К ним относятся все символы совместимости, отмеченные ключевыми словами <circle> и <font> (кроме трех, перечисленных ниже в семантически различных символах); 11 вариантов пробелов из <compat> и канонических символов; и некоторые ключевые слова <надстрочный индекс> и <нижний индекс> из блока «Верхние индексы и нижние индексы».
Многие символы совместимости являются семантически разными символами, хотя они могут иметь общие репрезентативные глифы с другими символами. Некоторые из этих символов, возможно, были включены, потому что большинство других наборов символов ориентированы на один сценарий или систему письма. Так, например, ISO и другие наборы латинских символов, вероятно, включали символ π (пи), поскольку, если сосредоточиться в первую очередь на одной системе письма или алфавите, в противном случае в этих наборах символов не было бы символов для общего математического символа π;. Однако благодаря Unicode математики могут свободно использовать символы любого известного алфавита в мире в качестве математического набора или математической константы. На сегодняшний день в Unicode добавлена специальная семантическая поддержка только для некоторых таких математических констант (например, константа Планка, U+210E, и константа Эйлера, U+2107, оба из которых Unicode считает символами совместимости). Поэтому Unicode обозначает несколько математических символов, основанных на буквах греческого и иврита, как символы совместимости. К ним относятся:
Хотя эти символы совместимости отличаются от символов разложения совместимости только добавлением слова «символ» к их имени, они действительно представляют давние отдельные значения в письменной математике. Однако для всех практических целей они имеют ту же семантику, что и эквивалентные им греческие или еврейские буквы. Их можно считать пограничными семантически различимыми символами, поэтому они не включаются в общее количество.
Хотя Unicode не намерен кодировать такие единицы измерения, репертуар включает шесть (6) таких символов, которые не должны использоваться авторами: вместо этого следует использовать разложение символов.
Unicode также обозначает двадцать два (22) других буквоподобных символа как символы совместимости.
Кроме того, в некоторых сценариях для различения семантики используется положение глифа, например, верхние и нижние индексы. В этих случаях нижние и верхние индексы представляют собой не просто расширенный текст, но представляют собой отдельный символ — подобно гибриду диакритического знака и буквы [ оригинальное исследование? ] — в письменности (всего 130).
Наконец, Unicode обозначает римские цифры как эквивалент совместимости латинским буквам, имеющим те же глифы. [ нужна цитата ]
Римская цифра «Тысяча» на самом деле имеет третий символ, представляющий третью форму или глиф той же семантической единицы: Тысяча CD (ↀ U+2180). Из этого глифа можно увидеть, откуда могла возникнуть практика использования латинской буквы М. Как ни странно, хотя Unicode объединяет знаковые римские цифры с совершенно разными ( хотя визуально похожими) латинскими буквами , десятичные цифры индийского арабского языка повторяются 24 раза (всего 240 кодовых точек). для 10 цифр) по всей ПСК без какого-либо реляционного или декомпозиционного сопоставления между ними.
Присутствие этих 167 семантически различных, но визуально похожих символов (плюс 11 пограничных символов на основе еврейских и греческих букв и 6 символов единиц измерения) среди разлагаемых символов усложняет тему совместимости символов. Стандарт Unicode не рекомендует авторам контента использовать символы совместимости. Однако в некоторых специализированных областях эти символы важны и очень похожи на другие символы, не вошедшие в число символов совместимости. Например, в некоторых академических кругах использование римских цифр в отличие от латинских букв, имеющих те же глифы, ничем не отличается от использования клинописных цифр или древнегреческих цифр. Свертывание символов римских цифр в символы латинских букв устраняет семантическое различие. Аналогичная ситуация существует для символов фонетического алфавита, которые используют глифы, расположенные в нижнем или верхнем индексе. В специализированных кругах, использующих фонетические алфавиты, авторы должны иметь возможность делать это, не прибегая к протоколам форматированного текста. В качестве другого примера, символы совместимости ключевого слова «круг» часто используются для описания игры Го . Однако такое использование символов совместимости представляет собой исключение, когда у автора есть особая причина использовать символы, которые в противном случае не рекомендуются.
Несколько блоков символов Юникода включают полностью или почти полностью все символы совместимости (U+F900–U+FFEF, за исключением несимволовых символов). Блоки совместимости не содержат ни одного из семантически различных символов совместимости, за одним исключением: символ валюты риал (﷼ U+FDFC), поэтому разлагаемые символы совместимости в блоках совместимости однозначно попадают в набор нежелательных символов. Unicode рекомендует авторам вместо этого использовать эквиваленты декомпозиции совместимости с обычным текстом и дополнять эти символы форматированной текстовой разметкой. Этот подход гораздо более гибкий и открытый, чем использование конечного набора букв и цифр в кружках или в качестве одного примера.
К сожалению, даже внутри блоков совместимости имеется небольшое количество символов, которые сами по себе не являются символами совместимости и поэтому могут сбить с толку авторов. Блок «Закрытые буквы и месяцы CJK» содержит один несовместимый символ: «корейский стандартный символ» (㉿ U+327F). Этот символ и еще 12 символов были включены в блоки по неизвестным причинам. Блок «Идеограммы совместимости CJK» содержит следующие несовместимые унифицированные иероглифы Хань:
Эти тринадцать символов не являются символами совместимости, и их использование ни в коем случае не препятствует. Однако U+27EAF 𧺯, то же самое, что и U+FA23 﨣, ошибочно закодировано в расширении B унифицированных иероглифов CJK. [4] В любом случае нормализованный текст никогда не должен содержать одновременно U+27EAF 𧺯 и U+FA23 﨣; эти кодовые точки представляют один и тот же символ, закодированный дважды.
Некоторые другие символы в этих блоках не имеют сопоставления совместимости, но явно предназначены для поддержки устаревших версий:
Алфавитные формы презентаций (1)
Формы презентаций на арабском языке (4)
Формы совместимости CJK (две из которых связаны с унифицированным иероглифом CJK: U + 4E36 丶)
Закрытые буквенно-цифровые символы (21 вариант форматированного текста)
Нормализация — это процесс, при котором программное обеспечение, совместимое с Unicode, сначала выполняет декомпозицию совместимости, прежде чем выполнять сравнения или сопоставление текстовых строк. Это похоже на другие операции, необходимые, например, когда пользователь выполняет поиск без учета регистра или диакритических знаков в каком-либо тексте. В таких случаях программное обеспечение должно приравнивать или игнорировать символы, которые в противном случае не были бы приравнены или проигнорированы. Обычно нормализация выполняется без изменения базовых сохраненных текстовых данных (без потерь). Однако некоторое программное обеспечение потенциально может вносить в текст необратимые изменения, которые устраняют канонические или даже неканонические различия символов совместимости с текстовым хранилищем (с потерями).