Diseñar la aplicación para texto bidireccional

Diseñe la aplicación para proporcionar compatibilidad con texto bidireccional (BiDi) para que pueda combinar el script de derecha a izquierda (RTL) y sistemas de escritura de izquierda a derecha (LTR), que generalmente contienen diferentes tipos de alfabetos.

Los sistemas de escritura de derecha a izquierda, como los que se usan en Oriente Medio, Centro y Sur de Asia, y en África, tienen requisitos de diseño únicos. Estos sistemas de escritura requieren compatibilidad con texto bidireccional (BiDi). La compatibilidad con BiDi es la capacidad de introducir y mostrar el diseño de texto en orden de derecha a izquierda (RTL) o de izquierda a derecha (LTR).

Se incluyen un total de nueve idiomas BiDi con Windows.

  • Dos idiomas totalmente localizados. Árabe y hebreo.
  • Siete paquetes de interfaz de idioma para mercados emergentes. Persa, Urdu, Dari, Curdo Central, Sindhi, Punjabi (Pakistán) y Uyghur.

Este tema contiene la filosofía de diseño de Windows BiDi y casos prácticos que muestran consideraciones de diseño de BiDi.

Elementos de diseño bidi

Cuatro elementos influyen en las decisiones de diseño de BiDi en Windows.

  • Creación de reflejo de la interfaz de usuario (UI). El flujo de la interfaz de usuario (UI) permite presentar contenido de derecha a izquierda en su diseño nativo. El diseño de la interfaz de usuario se siente local para los mercados de BiDi.
  • Coherencia en la experiencia del usuario. El diseño se siente natural en orientación de derecha a izquierda. Los elementos de la interfaz de usuario comparten una dirección de diseño coherente y aparecen cuando el usuario los espera.
  • Optimización táctil. De forma similar a la interfaz de usuario táctil en la interfaz de usuario no reflejada, los elementos son fáciles de alcanzar y son naturales para la interacción táctil.
  • Compatibilidad con texto mixto. La compatibilidad con la direccionalidad de texto permite una gran presentación de texto mixto (texto en inglés en compilaciones de BiDi y viceversa).

Información general sobre el diseño de características

Windows admite los cuatro elementos de diseño biDi. Echemos un vistazo a algunas de las principales características relevantes de Windows (versiones anteriores de) y proporcionemos algún contexto sobre cómo afectan a la aplicación.

Windows ajusta la dirección de la cuadrícula tipográfica para que fluya de derecha a izquierda, lo que significa que el primer icono de la cuadrícula se coloca en la esquina superior derecha y el último icono de la parte inferior izquierda. Esto coincide con el patrón RTL de publicaciones impresas como libros y revistas, donde el patrón de lectura siempre comienza en la esquina superior derecha y avanza a la izquierda.

Menú inicio de BiDi Menú inicio BiDi con accesos

Para conservar un flujo de interfaz de usuario coherente, el contenido de los iconos conserva un diseño de derecha a izquierda, lo que significa que el nombre de la aplicación y el logotipo se colocan en la esquina inferior derecha del icono, independientemente del idioma de la interfaz de usuario de la aplicación.

Icono de BiDi

Icono de BiDi

Icono en inglés

Icono en inglés

Obtención de notificaciones de icono que se leen correctamente

Los iconos tienen compatibilidad con texto mixto. La región de notificación tiene flexibilidad integrada para ajustar la alineación del texto en función del idioma de notificación. Cuando una aplicación envía notificaciones en árabe, hebreo u otro idioma biDi, el texto se alinea a la derecha. Y cuando llegue una notificación en inglés (u otra LTR), se alineará a la izquierda.

Notificaciones de icono

Una experiencia de usuario RTL coherente y fácil de tocar

Cada elemento de la interfaz de usuario de Windows encaja en la orientación RTL. Los accesos y los controles flotantes se han colocado en el borde izquierdo de la pantalla para que no se superpongan a los resultados de búsqueda ni degradan la optimización táctil. Se pueden llegar fácilmente con los pulgares.

Captura de pantalla de BiDi en la que se muestra el tamaño del control flotantede búsqueda Captura de pantalla de BiDi en la que se muestra el tamaño del control flotante de impresión

Captura de pantalla de BiDi en la que se muestra el tamaño del control flotantede configuración Captura de pantalla de BiDi en la que se muestra el cambio de tamaño de las barras de la aplicación

Entrada de texto en cualquier dirección

Windows ofrece un teclado táctil en pantalla que es limpio y sin desorden. En el caso de los idiomas BiDi, hay una tecla de control de dirección de texto para que la dirección de entrada de texto se pueda cambiar según sea necesario.

Teclado táctil para el lenguaje BiDi

Usar cualquier aplicación en cualquier idioma

Instale y use sus aplicaciones favoritas en cualquier idioma. Las aplicaciones aparecen y funcionan como lo harían en versiones que no son de BiDi de Windows. Los elementos de las aplicaciones siempre se colocan en una posición coherente y predecible.

Aplicación en inglés que muestra el contenido de BiDi

Mostrar paréntesis correctamente

Con la introducción del algoritmo de paréntesis de BiDi (BPA), los paréntesis emparejados siempre se muestran correctamente independientemente de las propiedades de alineación de idioma o texto.

Paréntesis incorrectos

Aplicación BiDi con paréntesis incorrectos

Paréntesis correctos

Aplicación BiDi con paréntesis correctos

Tipografía

Windows usa la fuente segoe UI para todos los idiomas biDi. Esta fuente tiene forma y se escala para la interfaz de usuario de Windows.

Captura de pantalla que muestra la fuente segoe UI en la pantalla de inicioCaptura de pantalla que muestra la fuente segoe árabe en la pantalla de inicio

Caso práctico n.º 1: Una aplicación de música BiDi

Información general

Las aplicaciones multimedia hacen un desafío de diseño muy interesante, ya que generalmente se espera que los controles multimedia tengan un diseño de izquierda a derecha similar al de los lenguajes que no son BiDi.

Controles multimedia de izquierda a derecha

Controles multimedia de derecha a izquierda

Establecimiento de la direccionalidad de la interfaz de usuario

Conservar el flujo de interfaz de usuario de derecha a izquierda es importante para un diseño coherente para los mercados de BiDi. Agregar elementos que tienen un flujo de izquierda a derecha dentro de este contexto es difícil, ya que algunos elementos de navegación como el botón Atrás pueden contradecir la orientación direccional del botón Atrás en los controles de audio.

Página de pista de la aplicación de música

Esta aplicación de música conserva una cuadrícula orientada de derecha a izquierda. Esto proporciona a la aplicación una sensación muy natural para los usuarios que ya navegan en esta dirección a través de la interfaz de usuario de Windows. El flujo se conserva asegurándose de que los elementos principales no solo están ordenados de derecha a izquierda, sino que también se alinean correctamente en los encabezados de sección para ayudar a mantener el flujo de la interfaz de usuario.

Página del álbum de la aplicación música

Control de texto

La bio del artista en la captura de pantalla anterior está alineada a la izquierda, mientras que otras piezas de texto relacionadas con el artista, como los nombres de álbum y pista, conservan la alineación derecha. El campo bio es un elemento de texto bastante grande, que lee mal cuando se alinea a la derecha simplemente porque es difícil realizar un seguimiento entre las líneas mientras lee un bloque de texto más amplio. En general, cualquier elemento de texto con más de dos o tres líneas que contengan cinco o más palabras se debe tener en cuenta para excepciones de alineación similares, donde la alineación del bloque de texto es opuesta a la del diseño direccional general de la aplicación.

La manipulación de la alineación entre la aplicación puede ser sencilla, pero a menudo expone algunos de los límites y limitaciones de los motores de representación en términos de colocación de caracteres neutros en cadenas biDi. Por ejemplo, la cadena siguiente puede mostrarse de forma diferente en función de la alineación.

Cadena en inglés (LTR) Cadena hebreo (RTL)
Alineación izquierda Hola mundo. בוקר טוב!
Alineación derecha ! Hola mundo !בוקר טוב

Para asegurarse de que la información del artista se muestra correctamente en la aplicación de música, el equipo de desarrollo separa las propiedades de diseño de texto de la alineación. En otras palabras, la información del artista puede mostrarse como alineada a la derecha en muchos de los casos, pero el ajuste de diseño de cadena se establece en función del procesamiento de fondo personalizado. El procesamiento en segundo plano determina la mejor configuración de diseño direccional en función del contenido de la cadena.

Página del artista de la aplicación música

Por ejemplo, sin el procesamiento de diseño de cadenas personalizado, el nombre del artista "The Contoso Band" aparecería como ". La banda Contoso".

Preprocesamiento de dirección de cadena especializada

Cuando la aplicación se pone en contacto con el servidor para los metadatos multimedia, preprocesa cada cadena antes de mostrarla al usuario. Durante este preprocesamiento, la aplicación también realiza una transformación para que la dirección del texto sea coherente. Para ello, comprueba si hay caracteres neutros en los extremos de la cadena. Además, si la dirección del texto de la cadena es opuesta a la dirección de la aplicación establecida por la configuración de idioma de Windows, anexa (y a veces antepone) marcadores de dirección Unicode. La función de transformación tiene este aspecto.

string NormalizeTextDirection(string data) 
{
    if (data.Length > 0) {
        var lastCharacterDirection = DetectCharacterDirection(data[data.Length - 1]);

        // If the last character has strong directionality (direction is not null), then the text direction for the string is already consistent.
        if (!lastCharacterDirection) {
            // If the last character has no directionality (neutral character, direction is null), then we may need to add a direction marker to
            // ensure that the last character doesn't inherit directionality from the outside context.
            var appTextDirection = GetAppTextDirection(); // checks the <html> element's "dir" attribute.
            var dataTextDirection = DetectStringDirection(data); // Run through the string until a non-neutral character is encountered,
                                                                 // which determines the text direction.

            if (appTextDirection != dataTextDirection) {
                // Add a direction marker only if the data text runs opposite to the directionality of the app as a whole,
                // which would cause the neutral characters at the ends to flip.
                var directionMarkerCharacter =
                    dataTextDirection == TextDirections.RightToLeft ?
                        UnicodeDirectionMarkers.RightToLeftDirectionMarker : // "\u200F"
                        UnicodeDirectionMarkers.LeftToRightDirectionMarker; // "\u200E"

                data += directionMarkerCharacter;

                // Prepend the direction marker if the data text begins with a neutral character.
                var firstCharacterDirection = DetectCharacterDirection(data[0]);
                if (!firstCharacterDirection) {
                    data = directionMarkerCharacter + data;
                }
            }
        }
    }

    return data;
}

Los caracteres Unicode agregados son de ancho cero, por lo que no afectan al espaciado de las cadenas. Este código conlleva una posible penalización de rendimiento, ya que la detección de la dirección de una cadena requiere ejecutarse a través de la cadena hasta que se encuentre un carácter no neutro. Cada carácter que se comprueba para comprobar la neutralidad se compara primero con varios intervalos Unicode, por lo que no es una comprobación trivial.

Caso práctico n.º 2: Una aplicación de correo BiDi

Información general

En términos de los requisitos de diseño de la interfaz de usuario, un cliente de correo es bastante sencillo de diseñar. La aplicación Correo en Windows se refleja de forma predeterminada. Desde una perspectiva de control de texto, la aplicación de correo es necesaria para tener funcionalidades de composición y visualización de texto más sólidas para adaptarse a escenarios de texto mixto.

Establecimiento de la direccionalidad de la interfaz de usuario

El diseño de la interfaz de usuario de la aplicación Correo se refleja. Los tres paneles se han reorientado para que el panel de carpetas se coloque en el borde derecho de la pantalla, seguido del panel de lista de elementos de correo a la izquierda y, a continuación, el panel de composición del correo electrónico.

Aplicación de correo reflejada

Se han reorientado elementos adicionales para que coincidan con el flujo general de la interfaz de usuario y la optimización táctil. Entre ellas se incluyen la barra de aplicaciones y los iconos de redacción, respuesta y eliminación.

Aplicación de correo reflejada con barra de aplicaciones

Control de texto

UI

La alineación del texto en la interfaz de usuario suele estar alineada a la derecha. Esto incluye el panel de carpetas y el panel de elementos. El panel de elementos se limita a dos líneas de texto (Dirección y Título). Esto es importante para conservar la alineación de derecha a izquierda, sin introducir un bloque de texto que sería difícil de leer cuando la dirección del contenido es opuesta al flujo de dirección de la interfaz de usuario.

Edición de texto

La edición de texto requiere la capacidad de redactar en forma de derecha a izquierda y de izquierda a derecha. Además, el diseño de composición debe conservarse mediante un formato , como texto enriquecido, que tiene la capacidad de guardar información direccional.

Aplicación de correo de izquierda a derecha

Aplicación de correo de derecha a izquierda