Texto bidireccional
Un texto bidireccional contiene dos direcciones de texto, de derecha a izquierda (RTL) y de izquierda a derecha (LTR). Por lo general, se trata de texto que contiene diferentes tipos de alfabetos, pero también puede referirse a boustrophedon, que cambia la dirección del texto en cada fila.
Muchos programas informáticos no muestran correctamente el texto bidireccional. Por ejemplo, esta página está escrita principalmente en inglés LTR, y aquí está el nombre hebreo RTL Sarah: שרה, deletreado sin (ש) a la derecha, resh (ר) en el medio, y heh (ה) a la izquierda.
Algunas de las denominadas escrituras de derecha a izquierda, como la escritura persa (y la árabe), son en su mayoría, pero no exclusivamente, de derecha a izquierda; las expresiones matemáticas, las fechas numéricas y los números que contienen unidades se incrustan de izquierda a derecha. Eso también sucede si, p. El inglés está incrustado en ellos, o viceversa, si el árabe, el persa o el hebreo están incrustados en una escritura de izquierda a derecha.
Compatibilidad con secuencias de comandos bidireccionales
El soporte de secuencias de comandos bidireccionales es la capacidad de un sistema informático para mostrar correctamente texto bidireccional. El término a menudo se abrevia como "BiDi" o "bidi".
Las primeras instalaciones informáticas se diseñaron únicamente para admitir un único sistema de escritura, por lo general para escrituras de izquierda a derecha basadas únicamente en el alfabeto latino. La adición de nuevos conjuntos de caracteres y codificaciones de caracteres permitió admitir una serie de otras secuencias de comandos de izquierda a derecha, pero no admitió fácilmente las secuencias de comandos de derecha a izquierda como el árabe o el hebreo, y mezclar los dos no era práctico. Los scripts 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 cambiar simplemente el orden de visualización de izquierda a derecha a un orden de visualización de derecha a izquierda, pero esto sacrifica la capacidad de mostrar correctamente los scripts de izquierda a derecha. Con la compatibilidad con scripts bidireccionales, es posible mezclar caracteres de diferentes scripts en la misma página, independientemente de la dirección de escritura.
En particular, el estándar Unicode proporciona las bases para una compatibilidad completa con BiDi, con reglas detalladas sobre cómo deben codificarse y mostrarse las combinaciones de secuencias de comandos de izquierda a derecha y de derecha a izquierda.
Compatibilidad bidireccional Unicode
El estándar Unicode exige que los caracteres se ordenen 'lógicamente', es decir, en la secuencia en la que deben interpretarse, a diferencia de 'visualmente', la secuencia en la que aparecen. Esta distinción es relevante para el soporte bidi porque en cualquier transición bidi, la presentación visual deja de ser la presentación 'lógica' una. Por lo tanto, para ofrecer soporte bidi, Unicode prescribe un algoritmo sobre cómo 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'.
Personajes fuertes
Los personajes fuertes son aquellos que tienen una dirección definida. Ejemplos de este tipo de carácter incluyen la mayoría de los caracteres alfabéticos, caracteres silábicos, ideografías Han, dígitos no europeos o no árabes y caracteres de puntuación que son específicos solo de esas escrituras.
Personajes débiles
Los personajes débiles son aquellos con una dirección vaga. Los ejemplos de este tipo de carácter incluyen dígitos europeos, dígitos árabes-índicos orientales, símbolos aritméticos y símbolos de moneda.
Caracteres neutrales
Los caracteres neutros tienen una dirección indeterminable sin contexto. Los ejemplos incluyen separadores de párrafo, tabuladores y la mayoría de los demás caracteres de espacio en blanco. Los símbolos de puntuación que son comunes a muchas escrituras, como los dos puntos, la coma, el punto y el espacio sin interrupción, también se incluyen en esta categoría.
Formato explícito
Los caracteres de formato explícito, también conocidos como "caracteres de formato direccional", son secuencias Unicode especiales que dirigen al algoritmo para 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 "pop" personaje.
Marcas
Si un "débil" carácter es seguido por otro "débil" carácter, el algoritmo buscará en el primer carácter "fuerte" personaje. A veces, esto conduce a errores de visualización involuntarios. Estos errores se corrigen o previenen con "pseudo-strong" caracteres. Dichos caracteres de control Unicode se denominan marcas. La marca (U+200E MARCA DE IZQUIERDA A DERECHA (LRM) o U+200F DERECHA -TO-LEFT MARK (RLM)) debe insertarse en una ubicación para hacer que un carácter débil encerrado herede su dirección de escritura.
Por ejemplo, para mostrar correctamente la línea U+2122 ™ SIGNO DE MARCA COMERCIAL para una marca de nombre en inglés (LTR) en un pasaje en árabe (RTL), un LRM la marca se inserta después del símbolo de marca comercial 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
La "incrustación" los caracteres de formato direccional 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" Señala que una parte del texto debe ser tratada como direccionalmente distinta. El texto dentro del alcance de los caracteres de formato incrustados no es independiente del texto que lo rodea. 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 generalmente tienen un efecto demasiado fuerte en su entorno y, por lo tanto, son innecesariamente difíciles de usar.
Aislamientos
El "aislar" los caracteres de formato direccional 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 recomiendan 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 generalmente tienen un efecto demasiado fuerte en su entorno y, por lo tanto, son innecesariamente difíciles de usar. A diferencia del legado 'incrustación' caracteres de formato direccional, 'aislar' los caracteres no tienen efecto en el orden del texto fuera de su alcance. Los aislamientos se pueden anidar y se pueden colocar dentro de incrustaciones y anulaciones.
Anulaciones
La "anulación" Los caracteres de formato direccional permiten casos especiales, como los números de pieza (p. ej., para forzar que un número de pieza compuesto por una combinación de letras en inglés, dígitos y letras hebreas se escriba de derecha a izquierda), y se recomienda evitarlos siempre que sea posible. Como ocurre con los otros caracteres de formato direccional, "anula" pueden anidarse unos dentro de otros, y en empotramientos y aislamientos.
Estallidos
El "pop" los caracteres de formato direccional finalizan el alcance de la "incrustación", "anulación" o "aislamiento" más reciente.
Corridas
En el algoritmo, cada secuencia de caracteres fuertes concatenados se denomina "ejecutar". Un "débil" carácter que se encuentra entre dos "fuertes" los caracteres con la misma orientación heredarán su orientación. Un "débil" carácter que se encuentra entre dos "fuertes" los caracteres con una dirección de escritura diferente heredarán 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 | Descripción | Fuerza | Orientación | Alcance general | Bidi_Control character |
---|---|---|---|---|---|
L | Izquierda a derecha | Fuerte | L-to-R | La mayoría de caracteres alfabéticos y silábicos, caracteres chinos, dígitos no europeos o no árabes, carácter LRM,... | U+200E LEFT-TO-RIGHT MARK (LRM) |
R | Derecho a izquierda | Fuerte | R-to-L | Adlam, Hebreo, Mandaic, Mende Kikakui, N'Ko, Samaritan, antiguos scripts como Kharoshthi y Nabataean, RLM carácter,... | MARCO DE DERECHO A PROYECTO (RLM) |
AL | Carta árabe | Fuerte | R-to-L | Alfabetos árabe, hanifi Rohingya, sogdiano, siriaco y Thaana, y la mayoría de las puntuaciones específicas para esos scripts,... | U+061C ARABIC LETTER MARK (ALM) |
EN | Número europeo | Weak | dígitos europeos, dígitos del este árabe-indico, números de... | ||
ES | European Separator | Weak | más señal, menos señal,... | ||
ET | European Number Terminator | Weak | Signo de grado, símbolos de moneda,... | ||
ANTES | Número árabe | Weak | dígitos árabe-indicos, decimales árabes y miles de separadores, dígitos rumi, dígitos... | ||
CS | Separador de Número Común | Weak | colon, coma, parada completa, espacio sin ruptura,... | ||
NSM | Marca no ritmo | Weak | Carácteres en General Categorías Marcar, no ritmo, y Marcos, encerrado (Mn, Me) | ||
BN | Boundary Neutral | Weak | ignorantes predeterminados, no caracteres, caracteres de control distintos a aquellos explícitamente dados otros tipos | ||
B | Párrafo Separador | Neutral | separador del párrafo, Funciones de Newline apropiadas, determinación del párrafo del protocolo de alto nivel | ||
S | Separador de segmentos | Neutral | Tabs | ||
WS | Whitespace | Neutral | espacio, espacio, separador de línea, alimento, General Punctuation bloque espacios (smaller set than the Unicode whitespace list) | ||
ON | Otros neutros | Neutral | Todos los demás personajes, incluyendo objeto de sustitución de caracteres | ||
LRE | Embedding de izquierda a derecha | Explicit | L-to-R | LRE carácter sólo | U+202A LEFT-TO-RIGHT EMBEDDING (LRE) |
LRO | Anulación izquierda a derecha | Explicit | L-to-R | LRO carácter sólo | U+202D LEFT-TO-RIGHT OVERRIDE (LRO) |
RLE | Embedding derecho a izquierda | Explicit | R-to-L | Sólo carácter RLE | U+202B EMBEDDING (RLE) |
RLO | Anulación de derecha a izquierda | Explicit | R-to-L | Sólo carácter RLO | U+202E Right-to-LEFT OVERRIDE (RLO) |
Formato Pop Directional | Explicit | caracteres PDF solamente | U+202C POP DIRECTIONAL FORMATTING (PDF) | ||
LRI | Isolado de izquierda a derecha | Explicit | L-to-R | LRI carácter sólo | U+2066 LEFT-TO-RIGHT ISOLATE (LRI) |
RLI | Isolado derecho a izquierda | Explicit | R-to-L | Sólo carácter RLI | U+2067 Right-to-LEFT ISOLATE (RLI) |
FSI | Primero fuerte aislamiento | Explicit | caracteres FSI solamente | U+2068 FIRST STRONG ISOLATE (FSI) | |
PDI | Pop Directional Isolate | Explicit | Personaje PDI únicamente | U+2069 POP DIRECTIONAL ISOLATE (PDI) | |
Notas
|
Seguridad
Los caracteres bidireccionales Unicode se utilizan en la vulnerabilidad de origen troyano.
Visual Studio Code destaca los caracteres de control BiDi desde la versión 1.62 lanzada en octubre de 2021.
Visual Studio destaca los caracteres de control BiDi desde la versión 17.0.3 lanzada el 14 de diciembre de 2021.
Scripts que usan texto bidireccional
Jeroglíficos egipcios
Los jeroglíficos egipcios se escribían bidireccionalmente, donde los signos que tenían una "cabeza" o "cola" se enfrentó al comienzo de la línea.
Caracteres chinos y otras escrituras CJK
Los caracteres chinos se pueden escribir en cualquier dirección y también verticalmente (de arriba a abajo y luego de derecha a izquierda), especialmente en letreros (como placas), pero la orientación de los caracteres individuales no cambia. Esto se puede ver a menudo en los autobuses turísticos en China, donde el nombre de la empresa suele ir desde la parte delantera del vehículo hasta la parte trasera, es decir, de derecha a izquierda en el lado derecho del autobús y de izquierda a derecha en el lado izquierdo. lado del autobús. 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 el vehículo postal a continuación).
Del mismo modo, otras escrituras CJK compuestas 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 de izquierda a derecha, de arriba a abajo y de derecha -a-izquierda son los más comunes.
Bostrofedón
Boustrophedon es un estilo de escritura que se encuentra en antiguas inscripciones griegas y en 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 de luna es una adaptación en relieve del alfabeto latino inventado como un 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. Líneas especiales en relieve conectaban el final de una línea y el comienzo de la siguiente. Alrededor de 1990, cambió a una orientación de izquierda a derecha.
Contenido relacionado
Bokmal
Camunda
Iluminación global