La tecla de acceso 'n' lleva a la navegación de la página. Ir al inicio del contenido.

Este documento es una traducción. En caso de discrepancias o errores, la única versión normativa es el último original en inglés. Los derechos de autor originales corresponden al W3C, como puede verse al final de la página.

Traductor: Spanish Translation Team, Spanish Translation US.

s_gotoW3cHome Internacionalización
 

Caracteres de control Unicode en contraposición a las etiquetas para compatibilidad bidi

Audiencia de destino: Codificadores XHTML/HTML (que usan editores o lenguaje de script), desarrolladores de script (PHP, JSP, etc.), desarrolladores de esquemas (DTD, XML Schema, RelaxNG, etc.), jefes de proyectos web y cualquier persona que se pregunte si debería emplear caracteres de control Unicode en el lenguaje de etiquetas para lograr un flujo correcto del texto en los sistemas de escritura de derecha a izquierda.

Pregunta

Para aplicar el formato correcto a texto bidi en contenido (X)HTML o XML, ¿debería emplear códigos de control Unicode o etiquetas?

Información preliminar

El algoritmo bidireccional Unicode determina la direccionalidad del texto sobre la base de las propiedades direccionales de cada carácter. Ocasionalmente, el algoritmo necesita un poco de ayuda para determinar el flujo de los objetos en el texto que combina caracteres arábigos o hebreos con los de otros sistemas de escritura. En otros casos, es conveniente anular completamente el efecto del algoritmo bidireccional. Por ejemplo:

Mostramos ejemplos con texto en sistemas de escritura reales de derecha a izquierda y como una versión visualmente ordenada, únicamente de ASCII e inmediatamente después, que muestra el texto en inglés en minúscula y en hebreo o árabe, en mayúscula. El orden y la posición de los caracteres refleja el del original.

Esta oración de ejemplo muestra lo que se obtiene si confiamos únicamente en el algoritmo bidireccional. Esto es incorrecto. Dado que la cita entera está escrita en hebreo, el texto "W3C" y la coma deberían aparecer a la izquierda (es decir, después) del texto en hebreo.

El título dice "פעילות הבינאום, W3C" en hebreo.

Versión ASCII:
el título dice "YTIVITCA NOITAZILANOITANRETNI, w3c" en hebreo.

El resultado correcto, cuando se muestre, debería verse así:

El título dice "פעילות הבינאום, W3C" en hebreo.

Versión ASCII:
el título dice "w3c ,YTIVITCA NOITAZILANOITANRETNI" en hebreo.

Unicode proporciona códigos de formato invisibles y especiales para continuar o anular el resultado del algoritmo bidireccional en texto plano. Incluye lo siguiente:

Estos caracteres se utilizan en pares. Uno de los primeros cuatro caracteres mencionados anteriormente se utiliza primero e indica el comienzo de una extensión de texto; el último carácter (PDF) en cada caso pone fin a dicha extensión. El siguiente ejemplo ilustra cómo estos caracteres de control podrían utilizarse en texto plano:

A continuación se muestra el orden de los caracteres en la memoria y agrega dos caracteres de control representados aquí como superíndices: U+202B, INTEGRACIÓN DE DERECHA A IZQUIERDA (RLE) y U+202C, FORMATO DIRECCIONAL POP (PDF).

El título dice "RLEפעילות הבינאום, W3CPDF" en hebreo.

Versión ASCII:
el título dice "RLEINTERNATIONALIZATION ACTIVITY, w3cPDF" en hebreo.

Esto genera el resultado correcto (vea arriba) al visualizarlo.

El estándar HTML4 introdujo etiquetas a fin de producir exactamente los mismos efectos que los de los caracteres Unicode.

Si utilizamos XHTML, el ejemplo anterior se codificaría de esta manera:

El título dice "<span dir="rtl">
פעילות הבינאום, W3C</span>" en hebreo.

Versión ASCII:
el título dice "<span dir="rtl">
W3C ,YTIVITCA NOITAZILANOITANRETNI</span>" en hebreo.

Este ejemplo de texto fuente presupone un editor sofisticado que resuelve la direccionalidad del texto fuente correctamente. De esta manera, se garantiza que usted comprenda los conceptos que se describen. Muchos editores no son tan sofisticados todavía.

W3C recomienda que los lenguajes de etiquetas basados en XML también proporcionen etiquetas dedicadas a organizar la dirección. (Consulte las etiquetas propuestas por la recomendación internacional sobre conjunto de etiquetas).

La pregunta es si usted debería emplear las etiquetas o los caracteres de control Unicode.

Respuesta

En (X)HTML y XML, no utilice los pares de caracteres Unicode de código de formato bidi cuando haya etiquetado equivalente disponible.

Razones

Cuando se utilizan caracteres de control en contenido que fluye sin restricciones, siempre existe la probabilidad de extensiones superpuestas o inconclusas, especialmente porque los caracteres en sí no tienen una forma visible. Si se utilizan atributos, esto no representa un problema en el caso de etiquetas bien formadas.

También es mucho más sencillo manejar la herencia y los efectos de los separadores de párrafos con etiquetas. Si se utilizan los controles Unicode, lograr el mismo resultado requerirá mucho más trabajo. También es difícil saber cómo lograr efectos como la reversión de las columnas de las tablas y la alineación del texto a la derecha tan sólo con códigos de control Unicode.

La especificación HTML 4 particularmente advierte contra la combinación de las dos técnicas dada la mayor probabilidad de anidamiento inadecuado. Además, recomienda el uso de etiquetas porque "ofrecen una mejor garantía de integridad estructural del documento y mitigan algunos problemas al editar texto HTML bidireccional con un editor de texto simple". No prohíbe el uso de códigos de formato bidi Unicode.

El Informe Técnico de Unicode n.° 20, junto con la Nota del W3C, Unicode en XML y otros lenguajes de etiquetas, ahonda en el tema. Recomienda explícitamente que sólo se utilicen etiquetas. También sugiere que los códigos de formato bidi Unicode se deberían ignorar si se detectan en el contexto de un explorador y se deberían reemplazar por las etiquetas adecuadas cuando se los reciba en un contexto de edición.

Correspondencias

La siguiente tabla (adaptada de Unicode en XML y otros lenguajes de etiquetas) proporciona las etiquetas adecuadas para reemplazar cada código.

Carácter Código Etiquetado equivalente Comentario
LRE U+202A dir = "ltr" atributo en un elemento de bloque o en línea
RLE U+202B dir = "rtl" atributo en un elemento de bloque o en línea
RLO U+202E <bdo dir = "rtl">  
LRO U+202D <bdo dir = "ltr">  
PDF U+202C nada cuando se utiliza para darle fin a la RLE o LRE (el cierre lo da la etiqueta final del elemento que incluye el atributo dir)
</bdo> cuando se utiliza para darle fin a la RLO o LRO

Casos problemáticos

Es posible que haya lugares en un archivo HTML o XML donde no se pueda utilizar etiquetas, por lo tanto, es apropiado el uso de caracteres Unicode de código de formato.

No es posible aplicar etiquetas direccionales a valores de atributos, por lo que todo texto en atributos necesitará utilizar caracteres Unicode para controlar la dirección. No obstante, W3C recomienda que los desarrolladores de esquemas XML eviten generar situaciones donde los autores de contenido utilicen texto en idioma natural en valores de atributos. Sin embargo, es posible que haya etiquetas preexistentes, como atributos alt en HTML, donde esto es inevitable.

Otras situaciones donde los caracteres de control podrían proporcionar el único recurso son elementos que sólo permiten contenido de caracteres o que omiten la compatibilidad con atributos direccionales. Un ejemplo es el elemento título en HTML. Una vez más, dichas situaciones deberían evitarse en nuevos formatos XML. (Restringen no sólo la aplicación de texto direccional, sino también la aplicación del idioma y otros metadatos).

Caracteres RLM y LRM

Otros dos caracteres de control direccional invisibles pero no integrados proporcionados por Unicode generalmente no tienen etiquetas equivalentes y deberían utilizarse en forma literal o de caracteres. Observe que son menos problemáticos porque se los utiliza individualmente, no en pares para delimitar las extensiones de texto como los otros caracteres de control que hemos mencionado.

A propósito

El documento Unicode en XML y otros lenguajes de etiquetas brinda orientación sobre el uso de una amplia gama de caracteres Unicode en contraposición a las etiquetas, no sólo estos controles bidi.

En el caso del XML tendría que generar sus propias etiquetas bidi en el DTD o esquema y aplicar la direccionalidad con CSS.

Dinos qué piensas (en Inglés).

Suscripción a feed RSS.

Nuevos recursos

Noticias de la página de inicio

Twitter (Noticias de la página de inicio)

‎@webi18n

Lecturas complementarias

De: Richard Ishida, W3C. Traductor: Spanish Translation Team, Spanish Translation US..

XHTML 1.0 válido
CSS válido
Codificado en UTF-8

Traducido del inglés con fecha 2007-11-22. Traducción modificada por última vez el 2011-07-18 19:25 GMT.

Para ver el historial de cambios del documento, busque qa-bidi-controls en la bitácora de internacionalización.