stringtranslate.com

Texto bidireccional

Un texto bidireccional contiene dos direccionalidades de texto , de derecha a izquierda (RTL) y de izquierda a derecha (LTR). Generalmente implica texto que contiene diferentes tipos de alfabetos , pero también puede hacer referencia al bustrofedón , que es cambiar la dirección del texto en cada fila.

Un ejemplo es el nombre hebreo de derecha a izquierda, Sarah: שרה, escrito sin (ש) a la derecha, resh (ר) en el medio y heh (ה) a la izquierda. Muchos programas informáticos no lograban mostrar esto correctamente, porque estaban diseñados para mostrar texto en una sola dirección.

Algunas de las denominadas escrituras de derecha a izquierda, como la persa y la árabe, son en su mayoría, aunque no exclusivamente, de derecha a izquierda: las expresiones matemáticas, las fechas numéricas y los números con unidades se insertan de izquierda a derecha. Esto también sucede si se inserta en ellas texto de un idioma que se escribe de izquierda a derecha, como el inglés; o viceversa, si se inserta el árabe en una escritura que se escribe de izquierda a derecha, como el inglés.

Soporte de script bidireccional

La compatibilidad con escritura bidireccional es la capacidad de un sistema informático de mostrar correctamente texto bidireccional. El término suele abreviarse como " BiDi " o " bidi ".

Las primeras instalaciones de computadoras fueron diseñadas para admitir un solo sistema de escritura , generalmente para escrituras de izquierda a derecha basadas solo en el alfabeto latino . La adición de nuevos conjuntos de caracteres y codificaciones de caracteres permitió admitir una serie de otras escrituras de izquierda a derecha, pero no admitió fácilmente escrituras de derecha a izquierda como el árabe o el hebreo , y mezclar los dos no era práctico. Las escrituras de derecha a izquierda se introdujeron a través de codificaciones como ISO/IEC 8859-6 e ISO/IEC 8859-8 , almacenando las letras (generalmente) en orden de escritura y lectura. Es posible simplemente invertir el orden de visualización de izquierda a derecha a un orden de visualización de derecha a izquierda, pero al hacer esto se sacrifica la capacidad de mostrar correctamente las escrituras de izquierda a derecha. Con el soporte de escritura bidireccional, es posible mezclar caracteres de diferentes escrituras en la misma página, independientemente de la dirección de escritura.

En particular, el estándar Unicode proporciona las bases para un soporte completo de BiDi, con reglas detalladas sobre cómo deben codificarse y mostrarse las mezclas de escrituras de izquierda a derecha y de derecha a izquierda.

Compatibilidad con Unicode bidi

El estándar Unicode exige que los caracteres se ordenen de forma "lógica", es decir, en la secuencia en la que se pretende que se interpreten, en lugar de "visualmente", en la secuencia en la que aparecen. Esta distinción es relevante para la compatibilidad bidireccional porque en cualquier transición bidireccional, la presentación visual deja de ser la "lógica". Por lo tanto, para ofrecer compatibilidad bidireccional, Unicode prescribe un algoritmo para convertir la secuencia lógica de caracteres en la presentación visual correcta. Para este propósito, el estándar de codificación Unicode divide todos sus caracteres en uno de cuatro tipos: "fuerte", "débil", "neutral" y "formato explícito". [1]

Personajes fuertes

Los caracteres fuertes son aquellos que tienen una dirección definida. Entre los ejemplos de este tipo de caracteres se incluyen la mayoría de los caracteres alfabéticos, los caracteres silábicos, los ideogramas han, los dígitos no europeos o no árabes y los caracteres de puntuación que son específicos de esas escrituras.

Personajes débiles

Los caracteres débiles son aquellos que tienen una dirección vaga. Algunos ejemplos de este tipo de caracteres son los dígitos europeos, los dígitos árabes e índicos orientales, los símbolos aritméticos y los símbolos monetarios.

Personajes neutrales

Los caracteres neutros tienen una dirección indeterminable sin contexto. Algunos ejemplos son los separadores de párrafos, las tabulaciones y la mayoría de los demás caracteres de espacio en blanco. Los símbolos de puntuación que son comunes a muchos alfabetos, como los dos puntos, la coma, el punto y el espacio sin interrupción, también entran en esta categoría.

Formato explícito

Los caracteres de formato explícito, también denominados "caracteres de formato direccional", son secuencias Unicode especiales que indican al algoritmo que modifique su comportamiento predeterminado. Estos caracteres se subdividen en "marcas", "incrustaciones", "aislamientos" y "anulaciones". Sus efectos continúan hasta que aparece un separador de párrafo o un carácter "pop".

Marcas

Si un carácter "débil" va seguido de otro carácter "débil", el algoritmo buscará el primer carácter "fuerte" vecino. A veces esto provoca errores de visualización no intencionados. Estos errores se corrigen o se evitan con caracteres "pseudofuertes". Estos caracteres de control Unicode se denominan marcas . La marca ( U+200E MARCA DE IZQUIERDA A DERECHA (LRM) o U+200F MARCA DE DERECHA A IZQUIERDA (RLM)) se debe insertar en una ubicación para que un carácter débil incluido herede su dirección de escritura.

Por ejemplo, para mostrar correctamente el SIGNO DE MARCA REGISTRADA U+2122 para una marca registrada en inglés (LTR) en un pasaje en árabe (RTL), se inserta una marca LRM después del símbolo de marca registrada si el símbolo no va seguido de texto LTR (por ejemplo, " قرأ Wikipedia™‎ طوال اليوم. "). Si no se agrega la marca LRM, el carácter débil ™ estará junto a un carácter LTR fuerte y un carácter RTL fuerte. Por lo tanto, en un contexto RTL, se considerará RTL y se mostrará en un orden incorrecto (por ejemplo, " قرأ Wikipedia™ طوال اليوم. ").

Incrustaciones

Los caracteres de formato direccional "incrustados" son el método Unicode clásico de formato explícito y, a partir de Unicode 6.3, se desaconsejan en favor de los "aislados". Una "incrustación" indica que un fragmento de texto se debe tratar como direccionalmente distinto. El texto dentro del alcance de los caracteres de formato incrustados no es independiente del texto circundante. Además, los caracteres dentro de una incrustación pueden afectar el orden de los caracteres externos. Unicode 6.3 reconoció que las incrustaciones direccionales suelen tener un efecto demasiado fuerte en su entorno y, por lo tanto, son innecesariamente difíciles de usar.

Aislamientos

Los caracteres de formato direccional "aislados" indican que un fragmento de texto debe tratarse como aislado direccionalmente de su entorno. A partir de Unicode 6.3, estos son los caracteres de formato que se están fomentando en los nuevos documentos, una vez que se sabe que las plataformas de destino los admiten. Estos caracteres de formato se introdujeron después de que se hizo evidente que las incrustaciones direccionales suelen tener un efecto demasiado fuerte en su entorno y, por lo tanto, son innecesariamente difíciles de usar. A diferencia de los caracteres de formato direccional de "incrustación" heredados, los caracteres de "aislado" no tienen ningún efecto en el orden del texto fuera de su ámbito. Los aislamientos se pueden anidar y se pueden colocar dentro de incrustaciones y anulaciones.

Anulaciones

Los caracteres de formato direccional de "anulación" permiten casos especiales, como por ejemplo para números de piezas (por ejemplo, para forzar que un número de pieza compuesto por una mezcla de letras inglesas, dígitos y hebreas se escriba de derecha a izquierda), y se recomienda evitarlos siempre que sea posible. Al igual que sucede con los demás caracteres de formato direccional, los "anuladores" se pueden anidar uno dentro de otro, y en incrustaciones y aislamientos.

Usando unicode para anular

El uso de Unicode U+202D (LTR Override) cambiará la dirección de izquierda a derecha a derecha a izquierda. De manera similar, el uso de U+202E (RTL Override) cambiará la dirección de derecha a izquierda a izquierda a derecha. Consulte el algoritmo bidireccional Unicode.

Estallidos

Los caracteres de formato direccional "pop" finalizan el alcance de la "incrustación", "anulación" o "aislamiento" más reciente.

Corre

En el algoritmo, cada secuencia de caracteres fuertes concatenados se denomina "secuencia". Un carácter "débil" que se encuentre entre dos caracteres "fuertes" con la misma orientación heredará su orientación. Un carácter "débil" que se encuentre entre dos caracteres "fuertes" con una dirección de escritura diferente heredará la dirección de escritura del contexto principal (en un documento LTR, el carácter se convertirá en LTR; en un documento RTL, se convertirá en RTL).

Tabla de posibles tipos de caracteres BiDi

Tipo de carácter bidireccional ( propiedad de carácter Unicode Bidi_Class ) [1]

Seguridad

En la vulnerabilidad de Trojan Source se utilizan caracteres bidireccionales Unicode . [2]

Visual Studio Code destaca los caracteres de control BiDi desde la versión 1.62 lanzada en octubre de 2021. [3]

Visual Studio destaca los caracteres de control BiDi desde la versión 17.0.3 lanzada el 14 de diciembre de 2021. [4]

Guiones que utilizan texto bidireccional

Jeroglíficos egipcios

Los jeroglíficos egipcios se escribían de forma bidireccional, donde los signos que tenían una "cabeza" o "cola" diferenciadas estaban orientados hacia el comienzo de la línea.

Caracteres chinos y otras escrituras CJK

Los caracteres chinos se pueden escribir en cualquier dirección, así como en sentido vertical (de arriba hacia abajo y luego de derecha a izquierda), especialmente en carteles (como placas), pero la orientación de los caracteres individuales no cambia. Esto se puede ver a menudo en los autobuses turísticos de China, donde el nombre de la empresa suele ir de la parte delantera del vehículo a la trasera, es decir, de derecha a izquierda en el lado derecho del autobús y de izquierda a derecha en el lado izquierdo. Los textos en inglés en el lado derecho del vehículo también suelen escribirse en orden inverso. (Vea las imágenes del autobús turístico y del vehículo postal a continuación).

Del mismo modo, otras escrituras CJK formadas por los mismos caracteres cuadrados, como el sistema de escritura japonés y el sistema de escritura coreano , también se pueden escribir en cualquier dirección, aunque horizontalmente de izquierda a derecha, de arriba a abajo y verticalmente de arriba a abajo de derecha a izquierda son las dos formas más comunes.

Bustrofedón

El bustrofedón es un estilo de escritura que se encuentra en las inscripciones griegas antiguas , en el antiguo sabaico (una antigua lengua del sur de Arabia) y en las runas húngaras . Este método de escritura alterna la dirección y, por lo general, invierte los caracteres individuales en cada línea sucesiva.

Tipo de luna

El tipo lunar es una adaptación en relieve del alfabeto latino inventado como alfabeto táctil para ciegos. Inicialmente, el texto cambiaba de dirección (pero no la orientación de los caracteres) al final de las líneas. Unas líneas especiales en relieve conectaban el final de una línea con el comienzo de la siguiente. [5] Alrededor de 1990, cambió a una orientación de izquierda a derecha .

Véase también

Referencias

  1. ^ "UAX #9: Algoritmo bidireccional Unicode". Unicode.org. 2018-05-09 . Consultado el 2018-06-26 .
  2. ^ "Ataques de Trojan Source". trojansource.codes . Consultado el 17 de enero de 2022 .
  3. ^ "Visual Studio Code octubre de 2021". code.visualstudio.com . Consultado el 11 de noviembre de 2021 .
  4. ^ "Notas de la versión 17.0 de Visual Studio 2022". docs.microsoft.com . Consultado el 17 de enero de 2022 .
  5. ^ Tipo de luna para ciegos , Colección de la Biblia Ramseyer, Biblioteca Kathryn A. Martin, Universidad de Minnesota Duluth .

Enlaces externos