La importancia de los encabezados para la accesibilidad web y móvil

Cuando navegamos por una interfaz web o una aplicación móvil, probablemente no somos conscientes de la importancia que tienen los encabezados. Para la mayoría de los usuarios estas marcas semánticas sólo se aprecian por un cambio de tamaño del texto o por un resaltado de su aspecto visual pero para personas con discapacidad visual o cognitiva resultan imprescindibles para comprender mejor la interfaz que están navegando.

¿Qué son los encabezados?

Los encabezados son elementos que organizan y estructuran el contenido de una página o pantalla. En HTML, estos se definen mediante marcas semánticas o etiquetas como <h1>, <h2>, <h3>, y así sucesivamente hasta <h6>. En interfaces móviles, los encabezados suelen representarse como texto destacado o títulos que dividen secciones de contenido y utilizan atributos de la API de accesibilidad para que esos bloques de texto sean identificados como encabezados semánticos.

Para los usuarios sin discapacidad visual, los encabezados facilitan una comprensión visual rápida del contenido y su jerarquía. en cambio, para los usuarios que dependen de tecnologías de asistencia como lectores de pantalla, los encabezados son mucho más que un simple formato: son un mapa estructural que permite moverse rápidamente por la página o la app.

Por ejemplo, una persona ciega que usa un lector de pantalla puede saltar entre los encabezados para encontrar secciones específicas sin tener que escuchar todo el contenido desde el principio. Esto es especialmente útil en páginas con mucho texto o pantallas móviles con varias secciones de información.
Para las personas con discapacidad cognitiva esta estructura de encabezados les permite asimilar y comprender cómo se ha estructurado la información y los elementos de navegación en la interfaz.

Encabezados en WCAG

Las Pautas de Accesibilidad para el Contenido Web (WCAG) incluyen un criterio específico que aborda la correcta implementación de los encabezados. Este criterio está relacionado con el principio de Perceptible y se resume así:

Criterio 2.4.10 – Encabezados de sección (Section Headings)

Este criterio establece que, si el contenido está dividido en secciones, cada una debe contar con un encabezado descriptivo que refleje su propósito o tema. Esto no solo mejora la navegación, sino también la comprensión del contenido. Puedes leer más detalles sobre el criterio 2.4.10 en la página oficial del W3C.

Para cumplir con este criterio debemos asegurarnos de:
• Usar encabezados de forma jerárquica y lógica (por ejemplo, <h1> para el título principal, <h2> para subtítulos, etc.).
• Los encabezados deben ser descriptivos. Un encabezado como “Servicios” es claro, pero uno como “Más información” es ambiguo.
• Evitar saltos innecesarios en los niveles de encabezado (por ejemplo, pasar de un <h1> directamente a un <h3> sin un <h2> intermedio).

Buenas prácticas

A la hora de estructurar los contenidos de una interfaz web o de una pantalla de una aplicación es aconsejable seguir los siguientes puntos:
1. Respetar una estructura jerárquica

El encabezado principal de la página o pantalla debe ser un <h1>. A partir de ahí, usa <h2> para las subsecciones principales, <h3> para las subsecciones de estas, y así sucesivamente. Esto crea un flujo lógico que las tecnologías de asistencia pueden interpretar fácilmente.

Ejemplo en HTML:

<h1>Recetas saludables</h1>
<h2>Desayunos</h2>
<h3>Zumos y batidos saludables</h3>
<h3>Tostadas con aguacate</h3>
<h2>Cenas</h2>
<h3>Ensaladas ligeras</h3>
<h3>Sopas nutritivas</h3>

2. Prohibido usar encabezados para aplicar un estilo visual a un texto

Es común usar etiquetas de encabezado simplemente porque hacen el texto más grande o más llamativo. Esto es un error, ya que confunde a los usuarios de lectores de pantalla. Si es necesario aplicar un estilo concreto a un texto grande sin que sea un encabezado, es aconsejable usar estilos CSS en lugar de etiquetas como <h1>.

3. Los encabezados deben ser claros y concisos

Un buen encabezado es breve y refleja con precisión el contenido de su sección. Por ejemplo, “Configuración avanzada” es mejor que “Detalles sobre las configuraciones avanzadas”.

Cómo comprobar la accesibilidad de los encabezados

Muchas herramientas automatizadas para la detección de barreras de accesibilidad identifican la mayoría de problemas relacionados con el criterio WCAG 2.4.10. Tanto Wave como Lighthouse o Axe pueden detectar si falta algún encabezado o si se han utilizado de manera incorrecta.
En cualquier caso es muy recomendable realizar una verificación manual utilizando un lector de pantallas como NVDA, VoiceOver, TalkBack o JAWS. Todos estos lectores de pantalla incorporan funciones para navegar por encabezados o mostrar una lista con los encabezados detectados.

Escribir fracciones con MathML

Una fracción es una forma de representar una parte de un entero o una división entre dos números enteros. La escritura de fracciones resulta una de las mayores barreras de accesibilidad debido a que las fracciones ocupan una disposición en vertical en la que el numerador, el denominador y la barra de fracción se distribuyen en 3 líneas de lectura. Con MathML se nos ofrece una forma de codificar una fracción y que resulte accesible a la hora de leer matemáticas con fracciones utilizando productos de apoyo.

Para representar fracciones en MathML, se utiliza la etiqueta <mfrac>, que crea una fracción con un numerador y un denominador.

La estructura de una fracción en MathML es la siguiente:

<math>
<mfrac>
<mi>a</mi> <!-- Numerador -->
<mi>b</mi> <!-- Denominador -->
</mfrac>
</math>

Por ejemplo para escribir una fracción cuyo numerador sea el número 12 y el denominador el número 3 se utilizaría el siguiente código MathML:

<math>
<mfrac>
<mi>12</mi>
<mi>3</mi>
</mfrac>
</math>

Y se leería de la siguiente forma:

12 3

Dependiendo de la configuración del producto de apoyo el usuario podrá leer la fracción de la forma más óptima a sus necesidades de accesibilidad.

Cómo mostrar la pantalla de tu teléfono Android en tu Mac

En un artículo anterior aprendimos a mostrar la pantalla de nuestro iPhone en el mac.

Esta misma necesidad nos puede surgir pero con un teléfono Android. El programa Quicktime no detecta a los teléfonos y dispositivos Android como fuentes de video por lo que necesitaremos otra aplicación como puede ser scrcpy.

¿Qué es scrcpy?

El paquete scrcpy es una herramienta que permite reflejar y controlar dispositivos Android desde un ordenador. Es ideal para realizar demostraciones en tiempo real, capturar la pantalla para tutoriales o pruebas, y mejorar la productividad cuando necesitas interactuar con tu dispositivo móvil sin tener que tocarlo. Además, es una solución ligera, sin necesidad de instalar aplicaciones en el teléfono, ya que utiliza ADB (Android Debug Bridge) para conectarse a tu dispositivo.

Su instalación es sencilla ya que se distribuye como un paquete de Homebrew.

Para instalar scrcpy simplemente deberemos ejecutar este comando de brew en la Terminal de MacOS:

brew install scrcpy

Una vez instalado para poder utilizarlo deberemos activar el modo de depuración por USB en nuestro teléfono Android. Esta opción está disponible dentro del menú de opciones para desarrolladores del teléfono.

Una vez activado este modo de depuración es necesario conectar el teléfono Android al Mac utilizando un cable USB. El teléfono preguntará si confías en el ordenador al que se ha conectado. Debemos responder que sí.

En la Terminal de Mac ejecutaremos el comando:

scrcpy

Aparecerá una nueva ventana con el contenido de nuestro teléfono y, además, si el teléfono está ejecutando una versión de Android moderna, también podremos escuchar el sonido del teléfono en nuestro Mac. De esta forma podremos compartir el contenido visual y auditivo de nuestro teléfono Android en videoconferencias y reuniones compartiendo la pantalla de nuestro Mac.

Puedes consultar más opciones y comandos de scrcpy en la página oficial del proyecto scrcpy.

Crear aventuras conversacionales con Inform7

Las aventuras conversacionales, también conocidas como juegos de texto interactivo, son un género de videojuegos que se originó en los primeros días de la informática. En estos juegos, los jugadores interactúan con un mundo virtual utilizando comandos escritos en lenguaje natural, lo que les permite explorar entornos, resolver acertijos y avanzar en la narrativa. Uno de los motores más populares para crear este tipo de experiencias es Inform, y en su versión más reciente, Inform7, se ha consolidado como una herramienta poderosa y accesible para desarrolladores, escritores y entusiastas del diseño de juegos narrativos.

Historia de Inform

El origen de Inform se remonta a principios de los años 90, cuando Graham Nelson creó el primer compilador de Inform como una herramienta para escribir juegos compatibles con el formato Z-machine, el mismo que fue usado para juegos clásicos de la compañía Infocom, como Zork. Este formato fue un estándar para las aventuras conversacionales, permitiendo que los juegos se ejecutaran en una amplia variedad de plataformas.

En 2006, Nelson lanzó Inform7, una nueva versión del motor, diseñada desde cero para hacer la creación de aventuras conversacionales más intuitiva y accesible. Mientras que las versiones anteriores requerían un conocimiento profundo de programación, Inform7 utiliza un lenguaje de diseño de juegos casi natural, lo que permite que los creadores describan mundos y reglas en inglés, similar a la forma en que escribirían una novela.

Características principales de Inform7

Inform7 se distingue por su enfoque basado en el lenguaje natural, lo que facilita la creación de mundos interactivos con reglas definidas sin necesidad de una programación complicada. Algunas de las características más destacadas de la herramienta son:

• Lenguaje natural: Los juegos se escriben en una sintaxis que se asemeja mucho al inglés común. Esto permite que los desarrolladores, incluso aquellos sin experiencia en programación, puedan diseñar escenarios, personajes y eventos de una manera intuitiva. Por ejemplo, una instrucción como «The kitchen is a room. The player is in the kitchen.» es perfectamente válida y crea un espaio jugable en el que el jugador puede interactuar.
• Un potente sistema de reglas: A pesar de su apariencia sencilla, Inform7 esconde un potente sistema de reglas y lógica que permite la creación de interacciones complejas. Se pueden definir comportamientos para objetos y personajes, establecer condiciones y consecuencias, y gestionar interacciones dinámicas entre elementos del juego.

• Soporte multiplataforma: Los juegos creados con Inform7 se exportan en formatos como Glulx o Z-machine, lo que permite que se ejecuten en una variedad de intérpretes y plataformas, desde ordenadores de escritorio hasta dispositivos móviles.

• Facilidad para la narrativa: Con un fuerte enfoque en la narrativa, Inform7 es ideal para escritores que desean explorar la creación de historias interactivas, permitiéndoles centrarse en la trama y los personajes en lugar de en los detalles técnicos de la programación.

Soporte para aventuras en español

Aunque Inform7 está diseñado principalmente para trabajar con el idioma inglés, existen extensiones para incluir soporte para la creación de aventuras conversacionales en español y otros idiomas. Esto ha sido posible gracias a la comunidad de desarrolladores y traductores que han trabajado en extensiones y adaptaciones que permiten que el motor entienda y genere texto en español.

La comunidad que se ha formado alrededor de Inform ha contribuido a expandir el uso de la plataforma en múltiples lenguas, enriqueciendo el panorama de aventuras conversacionales a nivel global.

¿Cómo jugar a una aventura creada con Inform7?

Para poder jugar a una aventura conversacional creada con Inform7 necesitamos un intérprete compatible con Inform como pueden ser Glulx o Frotz.

Estos intérpretes suelen utilizar la consola del sistema o la Terminal para mostrar el texto de las aventuras aunque hay versiones de GGlulx y Frotz para Windows, iPhone, Android o página Web.

Instalación del entorno de desarrollo

Actualmente Inform7 se distribuye como un IDE o entorno de desarrollo. Esta aplicación permite la creación y depuración de una aventura conversacional incluyendo la posibilidad de utilizar extensiones creadas por otros creadores o crear nuestras propias extensiones. Gracias a las extensiones Inform7 puede crecer para mostrar gráficos, reproducir sonidos o incluir otros idiomas como el español.

Puedes obtener la última versión de Inform7 desde la página del proyecto Inform7. La versión actual es la 10.1.2. Se distribuyen versiones de Inform7 para Mac, Inform7 para Windows e Inform7 para distintas versiones de Linux.

El IDE viene por defecto con soporte para idioma inglés. es necesario obtener las extensiones de Inform7 para español. En el momento de escribir este artículo la versión actual es la extensión para español R10.1.

Dentro del fichero comprimido en zip para las extensiones en español se incluye un fichero readme con instrucciones para instalar las extensiones de forma local.

Un simple ejemplo

Veamos un simple ejemplo de aventura en Inform7 utilizando las extensiones en español.

Abre el IDE de Inform7 y crea un proyecto de nueva aventura llamado Un simple ejemplo.

Cuando creas el proyecto en la ruta donde se guarda el proyecto encontrarás una carpeta llamada Un simple ejemplo.materials y el fichero Un simple ejemplo.inform.

Dentro de la carpeta Un simple ejemplo.materials debes copiar las carpetas Extensions e Inter que estaban dentro del zip de las extensiones de Inform para español. Con esto ya tenemos nuestro proyecto preparado para codificar la aventura.

En la zona de código del proyecto encontramos este código inicial:

"Un simple ejemplo" by Jonathan Chacón Barbero

Example Location is a room.

Borra ese código y escribe el siguiente en su lugar:

"Un simple ejemplo" by Jonathan Chacón Barbero (in spanish)

La sala is a room.
The description is "Estás en una sala donde no hay nada pero existe el potencial para que exista todo. Tu imaginación es el poder creador de la realidad que te rodea.".

Analizando el código

Analizando el código de este primer ejemplo encontramos lo siguiente:

• La primera línea es donde se declara el título y autor de la aventura. Además indicamos que utilizaremos la extensión para español de Inform7.

• Creamos el elemento La sala indicando que es una habitación.

• Indicamos que su descripción es un texto que describirá la sala cuando nuestro personaje esté en ella.

Si pulsamos el botón de Go para probar nuestra aventura nuestro personaje jugador aparecerá en la habitación y podremos realizar acciones como saltar, cantar o más cosas que se nos ocurran. Pero nuestra sala está vacía. Añadir un objeto a nuestra sala es tan sencillo como escribir el siguiente texto en el código de nuestra aventura:
El grano de arena is in la sala.
The description is «Un grano de arena que puede ser el comienzo de todo.».

Con esto hemos añadido un grano de arena a nuestra sala. Volvemos a usar la opción Go y podremos probar la aventura. Podemos coger el grano y aparecerá en nuestro inventario y podemos soltarlo para que aparezca de nuevo en la sala.

Compartiendo nuestra creación

Una vez terminada nuestra aventura podemos crear el fichero para que sea compartido con otras personas para que puedan jugar a la aventura de texto que hemos creado. Para ello debemos buscar en el menú Release la opción Release … que creará el fichero Un simple ejemplo.gblorb dentro de la carpeta Un simple ejemplo.materials/Release. Ese fichero gblorb es el que debemos compartir para que otras personas puedan jugar a nuestra aventura. El fichero se crea utilizando el formato Interactive fiction file format que es compatible con intérpretes como Glulxe o Frotz.

Ahora sólo queda ampliar la sala para crear un mundo más extenso donde nuestra imaginación y nuestra paciencia para aprender Inform7 serán el límite de nuestra aventura.