En Unicode y UCS , un carácter de compatibilidad es un carácter que se codifica únicamente para mantener la convertibilidad de ida y vuelta con otros estándares, a menudo más antiguos. [1] Como dice el glosario Unicode:
Un carácter que no habría sido codificado si no fuera por la compatibilidad y la convertibilidad de ida y vuelta con otros estándares [2]
Aunque la compatibilidad se utiliza en los nombres, no se marca como una propiedad. Sin embargo, la definición es más complicada de lo que revela el glosario. Una de las propiedades que el consorcio Unicode otorga a los caracteres es la descomposición de los caracteres o descomposición de compatibilidad . Más de cinco mil caracteres tienen una descomposición de compatibilidad que asigna ese carácter de compatibilidad a uno o más caracteres UCS. Al establecer la propiedad de descomposición de un carácter, Unicode establece ese carácter como un carácter de compatibilidad. Las razones para estas designaciones de compatibilidad son variadas y se analizan con más detalle a continuación. El término descomposición a veces confunde porque la descomposición de un carácter puede, en algunos casos, ser un singleton. En estos casos, la descomposición de un carácter es simplemente otro carácter aproximadamente (pero no canónicamente) equivalente .
La propiedad de descomposición de compatibilidad para los 5.402 caracteres de compatibilidad Unicode [ ¿cuándo? ] incluye una palabra clave que divide los caracteres de compatibilidad en 17 grupos lógicos. Los caracteres con una descomposición de compatibilidad pero sin una palabra clave se denominan caracteres descomponibles canónicos y no son caracteres de compatibilidad. Las palabras clave para caracteres descomponibles por compatibilidad incluyen: <initial>, <medial>, <final>, <isolado>, <ancho>, <estrecho>, <pequeño>, <cuadrado>, <vertical>, <círculo>, <sinBreak>, <fracción>, <sub>, <super> y <compat>. Estas palabras clave proporcionan alguna indicación de la relación entre el carácter de compatibilidad y su secuencia de caracteres de descomposición por compatibilidad. Los caracteres de compatibilidad se dividen en tres categorías básicas:
Dado que estos caracteres semánticamente distintos pueden mostrarse con glifos similares a los glifos de otros caracteres, el software de procesamiento de texto debe intentar solucionar la posible confusión para el beneficio de los usuarios finales. Al comparar y cotejar (ordenar) cadenas de texto, las diferentes formas y variantes de texto enriquecido de los caracteres no deben alterar los resultados del procesamiento de texto. Por ejemplo, los usuarios de software pueden confundirse al realizar una búsqueda en una página de una letra latina mayúscula "I" y su aplicación de software no puede encontrar el número romano visualmente similar "Ⅰ".
Algunos caracteres de compatibilidad son completamente prescindibles para el software de procesamiento y visualización de texto que cumple con el estándar Unicode. Entre ellos se incluyen:
El UCS, las propiedades de caracteres Unicode y los algoritmos Unicode proporcionan a las implementaciones de software todo lo necesario para mostrar correctamente estos caracteres a partir de sus equivalentes de descomposición. Por lo tanto, estos caracteres de compatibilidad descomponibles se vuelven redundantes e innecesarios. Su existencia en el conjunto de caracteres requiere un procesamiento de texto adicional para garantizar que el texto se compare y recopile correctamente (consulte Normalización Unicode ). Además, estos caracteres de compatibilidad no proporcionan una semántica adicional o distinta. Tampoco proporcionan una representación visualmente distinta siempre que el diseño del texto y las fuentes sean conformes con Unicode. Además, ninguno de estos caracteres es necesario para la convertibilidad de ida y vuelta a otros conjuntos de caracteres, ya que la transliteración puede asignar fácilmente caracteres descompuestos a contrapartes precompuestas en otro conjunto de caracteres. De manera similar, las formas contextuales, como una letra árabe final, se pueden asignar en función de su posición dentro de una palabra al carácter de forma del conjunto de caracteres heredado adecuado.
Para poder prescindir de estos caracteres de compatibilidad, el software de texto debe cumplir varios protocolos Unicode. El software debe ser capaz de:
En total, estos caracteres de compatibilidad incluidos para implementaciones Unicode incompletas suman 3779 de los 5402 caracteres de compatibilidad designados. Entre ellos se incluyen todos los caracteres de compatibilidad marcados con las palabras clave <initial>, <medial>, <final>, <isolado>, <fraction>, <wide>, <narrow>, <small>, <vertical>, <square>. También incluye casi todos los caracteres de compatibilidad canónicos y la mayoría de los caracteres de compatibilidad de la palabra clave <compat> (las excepciones incluyen los caracteres de la palabra clave <compat> para alfanuméricos encerrados, ideogramas encerrados y los que se analizan en § Caracteres semánticamente distintos).
Muchos otros caracteres de compatibilidad constituyen lo que Unicode considera texto enriquecido y, por lo tanto, quedan fuera de los objetivos de Unicode y UCS. En cierto sentido, incluso los caracteres de compatibilidad analizados en la sección anterior (aquellos que ayudan al software heredado a mostrar ligaduras y texto vertical) constituyen una forma de texto enriquecido, ya que los protocolos de texto enriquecido determinan si el texto se muestra de una forma u otra. Sin embargo, la elección de mostrar el texto con o sin ligaduras o en vertical u horizontal son textos enriquecidos no semánticos. Son simplemente diferencias de estilo. Esto contrasta con otros textos enriquecidos, como cursivas, superíndices y subíndices, o marcadores de lista, donde el estilo del texto enriquecido implica cierta semántica junto con él.
Para comparar, cotejar, manejar y almacenar texto simple, las variantes de texto enriquecido son semánticamente redundantes. Por ejemplo, usar un carácter superíndice para el número 4 probablemente no se pueda distinguir de usar el carácter estándar para un número 4 y luego usar protocolos de texto enriquecido para convertirlo en superíndice. Por lo tanto, estos caracteres de texto enriquecido alternativos crean ambigüedad porque parecen visualmente iguales a sus caracteres homólogos de texto simple con formato de texto enriquecido aplicado. Estos caracteres de compatibilidad de texto enriquecido incluyen:
En el caso de todos estos caracteres de compatibilidad de texto enriquecido, la visualización de los glifos suele ser distinta de la de sus caracteres de descomposición de compatibilidad (relacionados). Sin embargo, estos se consideran caracteres de compatibilidad y el consorcio Unicode desaconseja su uso porque no son caracteres de texto simple, que es lo que Unicode busca admitir con su UCS y protocolos asociados. El texto enriquecido debe manejarse mediante protocolos que no sean Unicode, como HTML, CSS, RTF y otros protocolos similares.
Los caracteres de compatibilidad de texto enriquecido comprenden 1.451 [ cita requerida ] de los 5.402 caracteres de compatibilidad. Estos incluyen todos los caracteres de compatibilidad marcados con las palabras clave <circle> y <font> (excepto tres enumerados en la lista de semánticamente distintos a continuación); 11 variantes de espacios de <compat> y caracteres canónicos; y algunas de las palabras clave <superscript> y <subscript> del bloque "Superíndices y subíndices".
Muchos caracteres de compatibilidad son caracteres semánticamente distintos, aunque pueden compartir glifos representativos con otros caracteres. Algunos de estos caracteres pueden haber sido incluidos porque la mayoría de los otros conjuntos de caracteres se centraban en una escritura o sistema de escritura. Así, por ejemplo, la ISO y otros conjuntos de caracteres latinos probablemente incluyeron un carácter para π (pi) ya que, al centrarse principalmente en un sistema de escritura o escritura, esos conjuntos de caracteres no habrían tenido caracteres para el símbolo matemático común π;. Sin embargo, con Unicode, los matemáticos tienen la libertad de utilizar caracteres de cualquier escritura conocida en el mundo para sustituir a un conjunto matemático o una constante matemática. Hasta la fecha, Unicode solo ha añadido soporte semántico específico para unas pocas constantes matemáticas de este tipo (por ejemplo, la constante de Planck, U+210E, y la constante de Euler, U+2107, ambas consideradas por Unicode como caracteres de compatibilidad). Por lo tanto, Unicode designa varios símbolos matemáticos basados en letras del griego y el hebreo como caracteres de compatibilidad. Estos incluyen:
Si bien estos caracteres de compatibilidad se distinguen de sus caracteres de descomposición de compatibilidad solo por la adición de la palabra "símbolo" a su nombre, representan significados distintos de larga data en las matemáticas escritas. Sin embargo, para todos los efectos prácticos, comparten la misma semántica que su equivalente de compatibilidad, la letra griega o hebrea. Estos pueden considerarse caracteres semánticamente distinguibles en el límite, por lo que no se incluyen en el total.
Aunque no es la intención de Unicode codificar dichas unidades de medida, el repertorio incluye seis (6) símbolos que los autores no deberían utilizar: en su lugar deberían utilizarse las descomposiciones de los caracteres. [4] [5]
Unicode también designa otros 22 símbolos similares a letras como caracteres de compatibilidad. [5]
Además, varias escrituras utilizan la posición de los glifos, como los superíndices y subíndices, para diferenciar la semántica. En estos casos, los subíndices y superíndices no son simplemente texto enriquecido, sino que constituyen un carácter distintivo en el sistema de escritura (130 en total).
Finalmente, Unicode designa los números romanos como equivalencia de compatibilidad con las letras latinas que comparten los mismos glifos. [ cita requerida ]
El número romano Mil en realidad tiene un tercer carácter que representa una tercera forma o glifo para la misma unidad semántica: Mil CD (ↀ U+2180). A partir de este glifo, se puede ver de dónde puede haber surgido la práctica de usar una M latina. Curiosamente, aunque Unicode unifica los números romanos con valor de signo con las letras latinas muy diferentes [ cita requerida ] (aunque visualmente similares), los números decimales con valor de lugar (posicionales) del índico árabe se repiten 24 veces (un total de 240 puntos de código para 10 números) en todo el UCS sin ningún mapeo relacional o de descomposición entre ellos.
La presencia de estos 167 caracteres semánticamente distintos aunque visualmente similares (más los 11 símbolos basados en letras hebreas y griegas y los 6 símbolos de unidades de medida) entre los caracteres descomponibles complica el tema de los caracteres de compatibilidad. El estándar Unicode desalienta el uso de caracteres de compatibilidad por parte de los autores de contenido. Sin embargo, en ciertas áreas especializadas, estos caracteres son importantes y bastante similares a otros caracteres que no se han incluido entre los caracteres de compatibilidad. Por ejemplo, en ciertos círculos académicos, el uso de números romanos como distintos de las letras latinas que comparten los mismos glifos no sería diferente del uso de números cuneiformes o números griegos antiguos. La fusión de los caracteres de números romanos con caracteres de letras latinas elimina una distinción semántica. Una situación similar existe para los caracteres del alfabeto fonético que utilizan glifos posicionados en subíndice o superíndice. En los círculos especializados que utilizan alfabetos fonéticos, los autores deberían poder hacerlo sin recurrir a protocolos de texto enriquecido. Como otro ejemplo, los caracteres de compatibilidad de la palabra clave 'círculo' se utilizan a menudo para describir el juego Go . Sin embargo, estos usos de los caracteres de compatibilidad constituyen excepciones en las que el autor tiene una razón especial para utilizar caracteres que de otro modo se desaconsejarían.
Varios bloques de caracteres Unicode incluyen todos o casi todos los caracteres de compatibilidad (U+F900–U+FFEF, excepto los caracteres no característicos). Los bloques de compatibilidad no contienen ninguno de los caracteres de compatibilidad semánticamente distintos, con una sola excepción: el símbolo de la moneda rial (﷼ U+FDFC), por lo que los caracteres descomponibles por compatibilidad en los bloques de compatibilidad caen inequívocamente en el conjunto de caracteres desaconsejados. Unicode recomienda a los autores que utilicen los equivalentes de descomposición por compatibilidad de texto simple y complementen esos caracteres con marcado de texto enriquecido. Este enfoque es mucho más flexible y abierto que utilizar el conjunto finito de caracteres alfanuméricos encerrados en un círculo o entre paréntesis, por dar solo un ejemplo.
Hay una pequeña cantidad de caracteres, incluso dentro de los bloques de compatibilidad, que en sí mismos no son caracteres de compatibilidad y, por lo tanto, pueden confundir a los autores. El bloque "Letras y meses CJK incluidos" contiene un solo carácter no compatible: el "Símbolo estándar coreano" (㉿ U+327F). Ese símbolo y otros 12 caracteres se han incluido en los bloques por razones desconocidas. El bloque "Ideogramas de compatibilidad CJK" contiene estos ideogramas Han unificados no compatibles:
Estos trece caracteres no son caracteres de compatibilidad y su uso no se desaconseja de ninguna manera. Sin embargo, U+27EAF 𧺯, al igual que U+FA23 﨣, está codificado por error en la Extensión B de Ideogramas Unificados del CJK. [6] En cualquier caso, un texto normalizado nunca debe contener tanto U+27EAF 𧺯 como U+FA23 﨣; estos puntos de código representan el mismo carácter, codificado dos veces.
Varios otros caracteres en estos bloques no tienen mapeo de compatibilidad pero están claramente destinados a soporte heredado:
Formas de presentación alfabéticas (1)
Formularios de presentación en árabe (4)
Formas de compatibilidad del CJK (2 que están relacionadas con el ideograma unificado del CJK: U+4E36 丶)
Alfanuméricos adjuntos (21 variantes de texto enriquecido)
La normalización es el proceso mediante el cual el software compatible con Unicode primero realiza una descomposición (o composición) de compatibilidad completa antes de hacer comparaciones o cotejar cadenas de texto.