В Unicode и UCS символ совместимости — это символ, который кодируется исключительно для поддержания двусторонней конвертируемости с другими, часто более старыми стандартами. [1] Как говорится в глоссарии Unicode:
Символ, который не был бы закодирован, если бы не совместимость и возможность преобразования в другие стандарты [2]
Хотя совместимость используется в именах, она не отмечена как свойство. Однако определение сложнее, чем показывает глоссарий. Одним из свойств, присвоенных символам консорциумом Unicode, является разложение символов или разложение совместимости . Более пяти тысяч символов имеют разложение совместимости, сопоставляющее этот символ совместимости с одним или несколькими другими символами UCS. Устанавливая свойство разложения символа, Unicode устанавливает этот символ как символ совместимости. Причины этих обозначений совместимости разнообразны и более подробно обсуждаются ниже. Термин разложение иногда сбивает с толку, поскольку разложение символа может быть в некоторых случаях синглтоном. В этих случаях разложение одного символа — это просто другой приблизительно (но не канонически) эквивалентный символ.
Свойство разложения совместимости для 5402 символов совместимости Unicode [ when? ] включает ключевое слово, которое делит символы совместимости на 17 логических групп. Символы с разложением совместимости, но без ключевого слова, называются каноническими разложимыми символами, и эти символы не являются символами совместимости. Ключевые слова для разложимых символов совместимости включают: <initial>, <medial>, <final>, <isolated>, <wide>, <narrow>, <small>, <square>, <vertical>, <circle>, <noBreak>, <fraction>, <sub>, <super> и <compat>. Эти ключевые слова дают некоторое представление о связи между символом совместимости и его последовательностью символов разложения совместимости. Символы совместимости делятся на три основные категории:
Поскольку эти семантически различные символы могут отображаться с помощью глифов, похожих на глифы других символов, программное обеспечение для обработки текста должно попытаться устранить возможную путаницу ради конечных пользователей. При сравнении и сопоставлении (сортировке) текстовых строк различные формы и варианты расширенного текста символов не должны влиять на результаты обработки текста. Например, пользователи программного обеспечения могут быть сбиты с толку при выполнении поиска на странице для заглавной латинской буквы «I», и их программное приложение не может найти визуально похожую римскую цифру «Ⅰ».
Некоторые символы совместимости совершенно необязательны для программного обеспечения обработки и отображения текста, соответствующего стандарту Unicode. К ним относятся:
UCS, свойства символов Unicode и алгоритмы Unicode предоставляют программным реализациям все необходимое для правильного отображения этих символов из их эквивалентов декомпозиции. Поэтому эти разложимые символы совместимости становятся избыточными и ненужными. Их существование в наборе символов требует дополнительной обработки текста для обеспечения правильного сравнения и сопоставления текста (см. Нормализация Unicode ). Более того, эти символы совместимости не предоставляют никакой дополнительной или отличной семантики. Эти символы также не обеспечивают визуально отличной визуализации при условии, что макет текста и шрифты соответствуют Unicode. Кроме того, ни один из этих символов не требуется для конвертации в другие наборы символов, поскольку транслитерация может легко сопоставлять разложенные символы с предварительно составленными аналогами в другом наборе символов. Аналогично, контекстные формы, такие как конечная арабская буква, могут быть сопоставлены на основе ее положения в слове с соответствующим символом формы устаревшего набора символов.
Чтобы обойтись без этих символов совместимости, текстовое программное обеспечение должно соответствовать нескольким протоколам Unicode. Программное обеспечение должно уметь:
Все вместе эти символы совместимости, включенные для неполных реализаций Unicode, составляют 3779 из 5402 обозначенных символов совместимости. Они включают все символы совместимости, отмеченные ключевыми словами <initial>, <medial>, <final>, <isolated>, <fraction>, <wide>, <narrow>, <small>, <vertical>, <square>. Также он включает почти все канонические и большинство символов совместимости с ключевыми словами <compat> (исключения включают те символы <compat> для вложенных буквенно-цифровых символов, вложенных идеограмм и те, которые обсуждаются в § Семантически различные символы).
Многие другие символы совместимости составляют то, что Unicode считает расширенным текстом, и, следовательно, находятся вне целей Unicode и UCS. В некотором смысле даже символы совместимости, обсуждавшиеся в предыдущем разделе — те, которые помогают устаревшему программному обеспечению отображать лигатуры и вертикальный текст, — составляют форму расширенного текста, поскольку протоколы расширенного текста определяют, отображается ли текст тем или иным образом. Однако выбор отображения текста с лигатурами или без них или вертикально или горизонтально — это несемантический расширенный текст. Это просто различия стилей. Это контрастирует с другим расширенным текстом, таким как курсив, надстрочные и подстрочные индексы или маркеры списков, где стиль расширенного текста подразумевает определенную семантику вместе с ним.
Для сравнения, сопоставления, обработки и хранения обычного текста варианты форматированного текста семантически избыточны. Например, использование надстрочного символа для цифры 4, скорее всего, неотличимо от использования стандартного символа для цифры 4 и последующего использования протоколов форматированного текста для превращения его в надстрочный. Такие альтернативные символы форматированного текста создают неоднозначность, поскольку визуально выглядят так же, как и их аналоги из обычного текста с примененным форматированием форматированного текста. Эти совместимые с форматированным текстом символы включают:
Для всех этих символов совместимости с форматированным текстом отображение глифов обычно отличается от их символов разложения совместимости (связанных). Однако они считаются символами совместимости и не рекомендуются к использованию консорциумом Unicode, поскольку они не являются символами обычного текста, что Unicode стремится поддерживать с помощью UCS и связанных с ним протоколов. Форматированный текст должен обрабатываться через не-Unicode-протоколы, такие как HTML, CSS, RTF и другие подобные протоколы.
Символы совместимости с форматированным текстом включают 1451 [ требуется ссылка ] из 5402 символов совместимости. Они включают все символы совместимости, отмеченные ключевыми словами <circle> и <font> (за исключением трех, перечисленных в семантически различных ниже); 11 вариантов пробелов из <compat> и канонических символов; и некоторые из ключевых слов <superscript> и <subscript> из блока "Superscripts and Subscripts".
Многие символы совместимости являются семантически различными символами, хотя они могут разделять репрезентативные глифы с другими символами. Некоторые из этих символов могли быть включены, потому что большинство других наборов символов были сосредоточены на одном алфавите или системе письма. Так, например, ISO и другие латинские наборы символов, вероятно, включали символ для π (пи), поскольку при фокусировке в первую очередь на одной системе письма или алфавите эти наборы символов в противном случае не имели бы символов для общего математического символа π;. Однако с Unicode математики могут свободно использовать символы из любого известного алфавита в мире для обозначения математического набора или математической константы. На сегодняшний день Unicode добавил только конкретную семантическую поддержку для нескольких таких математических констант (например, постоянная Планка, U+210E, и постоянная Эйлера, U+2107, обе из которых Unicode считает символами совместимости). Поэтому Unicode обозначает несколько математических символов, основанных на буквах греческого и еврейского языков, как символы совместимости. К ним относятся:
Хотя эти символы совместимости отличаются от своих символов разложения совместимости только добавлением слова «символ» к их названию, они представляют собой давние различные значения в письменной математике. Однако для всех практических целей они разделяют ту же семантику, что и их эквивалентные по совместимости греческие или еврейские буквы. Их можно считать пограничными семантически различимыми символами, поэтому они не включены в общее количество.
Хотя Unicode не намерен кодировать такие единицы измерения, репертуар включает шесть (6) таких символов, которые не должны использоваться авторами: вместо этого следует использовать разложения символов. [4] [5]
В Unicode также обозначены 22 других буквоподобных символа как символы совместимости. [5]
Кроме того, несколько скриптов используют положение глифов, например, надстрочные и подстрочные индексы, для дифференциации семантики. В этих случаях подстрочные и надстрочные индексы не просто являются расширенным текстом, но и представляют собой отдельный символ в системе письма (всего 130).
Наконец, Unicode определяет римские цифры как совместимый эквивалент латинских букв, которые имеют те же глифы. [ необходима ссылка ]
Римская цифра Одна Тысяча на самом деле имеет третий символ, представляющий третью форму или глиф для той же семантической единицы: Одна Тысяча CD (ↀ U+2180). Из этого глифа можно увидеть, откуда могла возникнуть практика использования латинской M. Как ни странно, хотя Unicode объединяет римские цифры со знаковым значением с очень разными [ нужна цитата ] (хотя и визуально похожими) латинскими буквами, индийские арабские цифры с позиционным значением десятичных цифр повторяются 24 раза (всего 240 кодовых точек для 10 цифр) по всей UCS без какого-либо реляционного или декомпозиционного отображения между ними.
Наличие этих 167 семантически различных, хотя и визуально похожих символов (плюс пограничные 11 символов на основе еврейских и греческих букв и 6 символов единиц измерения) среди разложимых символов усложняет тему символов совместимости. Стандарт Unicode не рекомендует авторам контента использовать символы совместимости. Однако в некоторых специализированных областях эти символы важны и весьма похожи на другие символы, которые не были включены в число символов совместимости. Например, в определенных академических кругах использование римских цифр в отличие от латинских букв, которые имеют те же глифы, ничем не отличалось бы от использования клинописных цифр или древнегреческих цифр. Свертывание римских цифр до символов латинских букв устраняет семантическое различие. Похожая ситуация существует для символов фонетического алфавита, которые используют подстрочные или надстрочные позиционные глифы. В специализированных кругах, которые используют фонетические алфавиты, авторы должны иметь возможность делать это, не прибегая к протоколам расширенного текста. В качестве другого примера символы совместимости ключевого слова «круг» часто используются для описания игры Го . Однако такое использование совместимых персонажей представляет собой исключение, когда у автора есть особая причина использовать нежеланных персонажей.
Несколько блоков символов Unicode включают либо полностью, либо почти полностью все символы совместимости (U+F900–U+FFEF, за исключением несимволов). Блоки совместимости не содержат ни одного семантически различных символов совместимости, за исключением только одного: символа валюты риал (﷼ U+FDFC), поэтому совместимые разложимые символы в блоках совместимости однозначно попадают в набор нерекомендуемых символов. Unicode рекомендует авторам использовать вместо этого эквиваленты разложения совместимости простого текста и дополнять эти символы разметкой расширенного текста. Этот подход гораздо более гибкий и открытый, чем использование конечного набора обведенных или заключенных в кружок буквенно-цифровых символов, чтобы привести только один пример.
Даже в блоках совместимости есть небольшое количество символов, которые сами по себе не являются совместимыми символами и поэтому могут сбивать с толку авторов. Блок «Enclosed CJK Letters and Months» содержит один несовместимый символ: «Korean Standard Symbol» (㉿ U+327F). Этот символ и 12 других символов были включены в блоки по неизвестным причинам. Блок «CJK Compatibility Ideographs» содержит следующие несовместимые унифицированные идеограммы Хань:
Эти тринадцать символов не являются символами совместимости, и их использование никоим образом не препятствуется. Однако U+27EAF 𧺯, как и U+FA23 﨣, ошибочно закодирован в CJK Unified Ideographs Extension B. [6] В любом случае нормализованный текст никогда не должен содержать как U+27EAF 𧺯, так и U+FA23 﨣; эти кодовые точки представляют один и тот же символ, закодированный дважды.
Несколько других символов в этих блоках не имеют сопоставления совместимости, но явно предназначены для поддержки устаревших версий:
Алфавитные формы представления (1)
Арабские формы представления (4)
Формы совместимости CJK (2, которые обе связаны с унифицированным идеографическим обозначением CJK: U+4E36 丶)
Вложенные буквенно-цифровые символы (21 вариант форматированного текста)
Нормализация — это процесс, при котором программное обеспечение, соответствующее стандарту Unicode, сначала выполняет полную совместимую декомпозицию (или композицию) перед выполнением сравнений или сопоставлением текстовых строк.