¿Cómo es que Snapchat tiene emojis de gran tamaño? Qué partes del SDK de iOS han utilizado para conseguirlo?

En iOS, puedes mostrar un Emoji utilizando un carácter Unicode. Unicode es simplemente una forma acordada de representar las letras, números y símbolos que podemos leer en los ordenadores. Por ejemplo, puedo mostrar un muñeco de nieve aquí, ya que el estándar Unicode incluye una definición para un carácter de muñeco de nieve: ☃. Estos símbolos pueden agrandarse simplemente cambiando el tamaño de las fuentes, ya que son como cualquier otro carácter. Ahora mismo, el estándar Unicode incluye más de 100.000 caracteres diferentes, la mayoría de los cuales son increíbles.

¿Y cómo funciona Unicode? Hay un número limitado de botones en el teclado, así que vamos a asignar un número a cada carácter Unicode. Cuando su ordenador encuentra el número 65 codificado con Unicode, por ejemplo, podría mostrar la letra "A". Del mismo modo, hay algún número que su ordenador asignará a ♥, que es un bonito corazón. El estándar Unicode, por lo tanto, es sólo una lista gigante que asigna estos números a los caracteres que se pueden mostrar.

Es importante que el software que se ejecuta en todos sus diferentes ordenadores y dispositivos esté de acuerdo con el mismo estándar, o de lo contrario su iPhone podría asignar el número 12345 a este corazón ❦ mientras que su portátil podría asignar el número 12345 a este corazón: ❤. Aun así, puede haber algunas variaciones en la forma en que el software de tu ordenador decida mostrar un determinado carácter Unicode, por lo que el muñeco de nieve en tu ordenador de sobremesa puede tener un aspecto ligeramente diferente al de tu iPhone.

Bien, hablemos de código. En Objective-C, puedo crear un NSString que contenga caracteres Unicode. Digamos que hay un UILabel en mi aplicación, y quiero mostrar un emoji allí. I can do something like this:

  1. self.label.text = [NSString stringWithFormat:@"%C", 0xe04f]; 
  2. self.label.font = [UIFont systemFontOfSize:64.0]; 

The first line sets the contents of the label to be the character that's encoded as 0xe0f4 (aka the kitty Emoji), which is simply the number 57588 expressed in hexadecimal. La segunda línea hace que la fuente sea tan grande como yo quiera, lo que significa que puedo crear un Emoji arbitrariamente grande. Para obtener ese número, simplemente busqué en Google listas como Emoji unicode characters for use on the web, que mapea las codificaciones a los símbolos a los que se decodificarán.

Dicho esto, cualquier aplicación también puede simplemente incluir un montón de imágenes en lugar de utilizar caracteres Unicode para mostrar equivalentes Emoji gigantes.