Cultura

El emoji, el utf8mb4 y 176 dibujos de 12×12 píxeles

El Día del Emoji es hoy porque el calendario 📅 de Apple marca el 17 de julio, que es cuando presentaron iCal en 2002. A partir de ahí: 176 iconos en el MoMA, por qué "😂".length devolvía 2 y por qué el utf8 de MySQL nunca fue UTF-8.

Hoy es el Día Mundial del Emoji. Y la razón por la que es hoy y no cualquier otro día es tan tonta, tan absolutamente arbitraria, que merece un artículo entero.

Mira el emoji de calendario: 📅

En los dispositivos de Apple, ese calendario marca el 17 de julio. Siempre. No es una fecha significativa del calendario mundial ni una efeméride: es el día en que Apple presentó iCal, allá por 2002. Un huevo de pascua que un diseñador metió en un icono de 20×20 píxeles pensando que no lo miraría nadie.

En 2014, Jeremy Burge, fundador de Emojipedia, se fijó. Y dijo: pues ya está, este es el día.

Y así es como el mundo entero celebra el Día del Emoji en la fecha que marca la maqueta de un icono de Apple.

Me encanta. Es tecnología en estado puro: una convención sin autoridad detrás que todo el mundo acaba adoptando porque nadie tenía una idea mejor.

Antes hubo 176 dibujos de 12×12

La historia de verdad empieza en 1999, en Japón.

Shigetaka Kurita trabajaba en NTT DoCoMo, en el equipo de i-mode, un servicio de internet móvil pionero. Tenían un problema: los mensajes eran cortísimos y la gente se malinterpretaba constantemente. «Vale» podía ser un vale entusiasta o un vale resignado, y el matiz se perdía.

Así que Kurita dibujó 176 iconos de 12×12 píxeles. Ciento cuarenta y cuatro píxeles cada uno. Con eso había que representar un corazón, una cara triste, tiempo nublado y un teléfono.

No era arte. Era ingeniería de comunicación bajo restricciones brutales.

Ese set original está hoy en la colección del MoMA de Nueva York. Ciento setenta y seis dibujos hechos en un editor de píxeles por un empleado de una operadora, expuestos en un museo de arte moderno. Es la trayectoria profesional más improbable de la historia del diseño.

Y luego llegó Unicode, y con él los problemas de verdad

Aquí es donde el asunto se pone interesante para quien programa.

Un emoji no es una imagen. Es un carácter. Vive en Unicode, exactamente igual que la letra «a» o el signo «€». Y eso significa que arrastra toda la complejidad del texto, más un poco de la suya propia.

Ejemplos que hacen daño:

Uno. La 😂 no ocupa un carácter en UTF-16. Ocupa dos. Por eso durante años, en JavaScript, "😂".length devolvía 2. No es un bug del navegador: es un surrogate pair, la herencia de cuando se creyó que 65.536 caracteres serían suficientes para toda la humanidad.

Dos. La familia 👨‍👩‍👧‍👦 es en realidad cuatro emojis pegados con un carácter invisible llamado Zero Width Joiner. Cuenta como siete puntos de código. Si tu campo de base de datos tiene un límite de caracteres, esa familia se te lo come entero.

Tres. El clásico español: durante años, meter un emoji en un MySQL con utf8 provocaba un error o truncaba el texto. Porque el utf8 de MySQL nunca fue UTF-8: era un UTF-8 recortado a tres bytes. El de verdad se llama utf8mb4. Millones de formularios rotos por una abreviatura mal elegida hace veinte años.

Cuatro. El emoji que tú envías y el que la otra persona ve no son el mismo dibujo. Unicode define el concepto; cada fabricante lo dibuja. Hubo un caso célebre con la 🔫, que Apple convirtió en pistola de agua verde en 2016 mientras el resto seguía mostrando un arma. Enviabas una cosa y llegaba otra. Con implicaciones que, en algún juzgado, dejaron de tener gracia.

Cinco. Y el que más me gusta: los emojis se ordenan. Tienen un valor numérico. Puedes hacer ORDER BY sobre ellos. El resultado no significa absolutamente nada, pero es determinista.

El emoji que ganó todo

En 2015, el Diccionario Oxford eligió como palabra del año a 😂. No una palabra: un emoji.

Hubo quien lo interpretó como el fin de la civilización. A mí me parece justo lo contrario. Los emojis no empobrecen la escritura: recuperan algo que la escritura nunca tuvo y el habla siempre tuvo, que es el tono. Llevamos cinco mil años escribiendo sin poder indicar si algo va en serio o en broma, y la solución que hemos encontrado es una carita amarilla.

Es exactamente el mismo problema que resolvió Kurita en 1999 con 144 píxeles.

El emoji en el trabajo, que es donde arde

Y ahora la parte polémica, porque este es un blog de oficio.

El emoji en el entorno profesional tiene reglas no escritas y muy reales:

  • El 👍 a secas es ambiguo hasta el crimen. Para media oficina significa «recibido». Para la otra media, «no pienso discutir esto contigo». Y para cualquier persona menor de 25 años, según todas las encuestas del ramo, significa directamente hostilidad.
  • La 🙂 al final de una frase seca es la forma más elegante de amenaza que ha producido el ser humano. «Lo necesito para hoy 🙂».
  • El ✅ en un hilo de incidencia debería ser obligatorio. Es la única forma barata de cerrar un asunto sin escribir «vale» y generar otra notificación.
  • Y el 🔥 en una pull request no es una revisión de código.

En mis proyectos hay una convención que sí recomiendo de verdad: usar emojis como prefijo estable en los mensajes de commit o en los canales de alerta. Un 🚨 para caídas, un 🐛 para bugs, un 📦 para despliegues. No es decoración: es que el ojo humano localiza una forma de colores mucho más rápido que una palabra, y cuando tienes 200 líneas de log en un canal de Slack a las tres de la mañana, esa milésima cuenta.

Lo dicho: ingeniería de comunicación bajo restricciones. Kurita otra vez.

Feliz 17 de julio

Así que hoy, mientras alguien te manda un 👍 que no sabes cómo interpretar, acuérdate de que:

  1. Estás usando un estándar internacional del mismo comité que gestiona el alfabeto cirílico.
  2. Ese carácter puede ocupar entre 1 y 25 puntos de código.
  3. La fecha de hoy sale de la maqueta de un icono de Apple de 2002.
  4. Y todo empezó con 176 dibujos de 12×12 píxeles hechos por un señor en Japón para que la gente no se malinterpretara por SMS.

Que es, mires como lo mires, un problema que seguimos sin resolver.

🎉

Preguntas frecuentes

¿Por qué el Día del Emoji es el 17 de julio?

Porque el emoji de calendario 📅 en los dispositivos de Apple muestra siempre el 17 de julio, la fecha en que Apple presentó iCal en 2002. Jeremy Burge, fundador de Emojipedia, se fijó en ese detalle en 2014 y proclamó ese día como Día Mundial del Emoji.

¿Quién inventó los emojis?

Shigetaka Kurita, mientras trabajaba en el servicio i-mode de la operadora japonesa NTT DoCoMo en 1999. Diseñó un conjunto de 176 iconos de 12×12 píxeles para que los mensajes cortos no se malinterpretaran. Ese conjunto original forma parte hoy de la colección del MoMA de Nueva York.

¿Por qué "😂".length devuelve 2 en JavaScript?

Porque JavaScript representa las cadenas en UTF-16 y los emojis quedan fuera del rango básico de 65.536 caracteres. Se codifican mediante un surrogate pair, es decir, dos unidades de 16 bits. La propiedad length cuenta unidades de código, no caracteres percibidos. Para contar correctamente hay que usar Array.from() o el iterador de la cadena.

¿Por qué fallan los emojis en MySQL?

Porque el juego de caracteres llamado utf8 en MySQL no es UTF-8 completo: solo admite hasta tres bytes por carácter, y los emojis necesitan cuatro. El juego correcto es utf8mb4, con su collation correspondiente. Si la tabla, la columna y la conexión no lo usan, el texto se trunca o se rechaza al guardar un emoji.

¿Se ve el mismo emoji en todos los dispositivos?

No. Unicode define el significado y el nombre del carácter, pero cada fabricante decide cómo dibujarlo. El mismo punto de código puede tener aspecto y matiz distintos en Apple, Google, Microsoft o Samsung. El caso más conocido es el de la pistola, que Apple sustituyó por una pistola de agua verde en 2016 mientras otras plataformas mantenían un arma real.

Otras noticias

Cultura

La camisa hawaiana te regaló el viernes informal

La camisa aloha nació de sastres japoneses usando telas de kimono en Hawái, y en los sesenta la industria textil se inventó el Aloha Friday para vender más. De ahí salió el casual Friday y, en línea recta, tu sudadera. Y ya que estamos: el tono en los equipos técnicos.

Leer más →
Cultura

Los anillos de Sonic son un botón de deshacer

Sonic cumple años y con él la única guerra de patio que importaba. «Genesis does what Nintendon't» sigue siendo una lección de posicionamiento, los anillos son la mejor decisión de diseño de los noventa, y la velocidad era el anuncio, no el juego.

Leer más →

¿Te ha resultado útil o quieres comentar algo?

Hablemos →