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, Trusted Translations, Inc.

s_gotoW3cHome Internacionalización
 

Pérdida de espacio bidi

Audiencia de destino: usuarios, codificadores XHTML/HTML (usando editores o lenguaje de script), desarrolladores script (PHP, JSP, etc.), codificadores CSS, desarrolladores schema (DTDs, XML Schema, RelaxNG, etc.), desarrolladores XSLT, jefes de proyectos web y cualquier persona nueva en cuanto a internacionalización y que necesite orientación en temas a considerar y maneras de familirizarse con el material del sitio.

Pregunta

¿Por qué mi navegador hace colapsar los espacios entre el texto en latín y árabe/hebreo?

Información preliminar

Quizás los espacios entre el texto en latín y árabe/hebreo parezcan colapsar si el texto está seguido de espacio en blanco dentro de un elemento en línea que incluye un atributo dir.

Por ejemplo, en dicho navegadores el código:

<p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

Produciría un resultado que se vería como el siguiente, donde la flecha indica la ubicación del espacio perdido:

Imagen del resultado, que no muestra ningún espacio a la izquierda del texto en latín.

Observe que el efecto también se produce cuando el texto de derecha a izquierda es incrustado en un pasaje de izquierda a derecha.

Respuesta

Si la sección anterior describe el aspecto de su código, la solución es eliminar todos los espacios antes de la etiqueta final del elemento en línea o eliminar el atributo dir (si corresponde).

Por ejemplo, la eliminación del espacio entre (W3C) y </span>:

<p dir="rtl"> العالمية <span dir="ltr">(W3C)</span> تخلق قواعد </p>

produciría un resultado que se vería de la siguiente manera:

Imagen del resultado, que muestra espacios a ambos lados del texto en latín.

Observe también que, en este ejemplo, el atributo dir="ltr" en el elemento <span> alrededor del texto (W3C) en realidad no se necesita para generar el orden correcto. El hecho de descartar el atributo o el elemento span entero también puede ser una solución al problema.

¿Cómo lo veo?

Las cajas que aparecen a continuación muestran ejemplos de códigos seguidos de una implementación de esos códigos en esta página, a fin de que usted pueda evaluar el comportamiento del agente de usuario actual.

Código: <p dir="rtl"> العالمية <span dir="ltr">(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Código: <p dir="rtl"> العالمية <span dir="ltr">(W3C)</span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Código: <p dir="rtl"> العالمية <span>(W3C) </span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Código: <p dir="rtl"> العالمية <span>(W3C)</span> تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

Código: <p dir="rtl"> العالمية (W3C) تخلق قواعد </p>

العالمية (W3C) تخلق قواعد

A propósito

Sólo lea esta sección si desea obtener detalles morbosos acerca de por qué sucedió esto.

El comportamiento esperado al visualizarse el texto no se describe en detalle en las especificaciones de XHTML/HTML, pero se describe en especificaciones recientes de CSS. Aunque los ejemplos en esta página no incluyen CSS, se aplican los mismos principios. Lo siguiente se extrajo del Documento de trabajo CSS 2.1:

  1. Si el 'white-space' (espacio en blanco) se configura en 'normal', 'nowrap' o 'pre-line',
    1. cada tabulador (U+0009) se convierte en un espacio (U+0020)
    2. cualquier espacio (U+0020) detrás de otro espacio (U+0020) —incluso un espacio antes del elemento en línea, si ese espacio también tiene 'white-space' configurado en 'normal', 'nowrap' o 'pre-line'— se elimina.

Si se presenta un escenario como el siguiente (donde los colores representan espacios, U+0020, para una fácil identificación):

<ltr>A <rtl> B </rtl> C</ltr>

la especificación dice que el espacio después de A se mantiene, el espacio antes de B se elimina, el espacio después de B se mantiene, el espacio antes de C se elimina. Luego esto se representa de acuerdo con el algoritmo bidireccional Unicode, y el resultado final es:

A  BC

Observe que hay dos espacios entre A y B. Los niveles de incrustación se pueden expresar de la siguiente manera:

11221

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, Trusted Translations, Inc..

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

Traducido del inglés con fecha 2003-11-06. Traducción modificada por última vez el 2009-03-05 10:31 GMT.

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