Este adorable Unicode



Aquí hay una lista actualizada de los "productos" Unicode más maravillosos, así como paquetes y recursos

¡Unicode es asombroso! Antes de su aparición, la comunicación internacional era agotadora: cada uno definía su propio conjunto de caracteres extendidos por separado en la mitad superior de ASCII (las llamadas páginas de códigos). Esto creó conflicto. Solo piense que los alemanes tuvieron que negociar con los coreanos, ¿dónde está la página de códigos? Afortunadamente, apareció Unicode e introdujo un estándar común. Unicode 8.0 cubre más de 120,000 caracteres de más de 129 scripts. Tanto moderno como antiguo, y aún no descifrado. Unicode admite texto de izquierda a derecha y de derecha a izquierda, superpone caracteres e incluye una variedad de símbolos culturales, políticos, religiosos y emojis. Unicode es increíblemente humano, y sus capacidades se subestiman enormemente.

Contenido



Breve introducción


¿Qué caracteres están incluidos en Unicode Standard?


El estándar Unicode define códigos para caracteres en los principales idiomas modernos. Estas son escrituras alfabéticas europeas, escrituras del Medio Oriente de derecha a izquierda y muchas escrituras asiáticas.

El estándar también contiene signos de puntuación, signos diacríticos, símbolos matemáticos, símbolos técnicos, flechas, dingbats, emojis, etc. Proporciona códigos para signos diacríticos que cambian los signos de caracteres, como tildes (~). Se usan en combinación con los básicos para representar caracteres acentuados (por ejemplo, ñ). En general, la versión 9.0 de Unicode proporciona códigos para 128,172 caracteres de alfabetos mundiales, conjuntos de ideogramas y colecciones de caracteres.

Los caracteres más comunes se colocan en los primeros puntos de código de 64K, un área del espacio de código llamado plano multilingüe principal, o BMP para abreviar. Hay otros dieciséis planos adicionales disponibles para codificar otros caracteres, con más de 850,000 puntos de código no utilizados. Pueden ser útiles para agregar nuevos personajes a futuras versiones del estándar.

El estándar Unicode también reserva puntos de código para uso privado. Los proveedores o usuarios finales pueden designarlos en sus propios sistemas para sus personajes o usarlos con fuentes especializadas. El BMP tiene 6400 puntos de código para uso privado y otros 131 068 puntos de código adicionales para uso privado, si 6400 no es suficiente para aplicaciones específicas.

Codificaciones de caracteres Unicode


Los estándares de codificación de caracteres determinan no solo la identidad de cada carácter y su valor numérico o punto de código, sino también cómo se representa este valor en bits.

El estándar Unicode define tres formas de codificación que permiten la transmisión de los mismos datos: un byte, una palabra y una palabra doble (es decir, 8, 16 o 32 bits por unidad de código). Las tres formas codifican el mismo conjunto de caracteres común y pueden convertirse efectivamente entre sí sin pérdida de datos. El Consorcio Unicode respalda completamente el uso de cualquiera de estos formularios de codificación como una forma acordada para implementar el Estándar Unicode.

UTF-8 es popular para HTML y protocolos similares. UTF-8 es una forma de convertir todos los caracteres Unicode a una codificación de longitud de bytes variable. Su ventaja es que los caracteres Unicode que corresponden al conjunto ASCII familiar tienen los mismos valores de bytes que ASCII, y los caracteres Unicode convertidos a UTF-8 se pueden usar con una gran cantidad de software existente sin grandes modificaciones de software.

UTF-16 es popular en muchos entornos donde es necesario equilibrar el acceso eficiente a los personajes con un almacenamiento económico. Es bastante compacto, y todos los caracteres de uso frecuente se colocan en un bloque de código de 16 bits, mientras que todos los demás caracteres están disponibles a través de pares de bloques de código de 16 bits.

UTF-32 es útil cuando la cantidad de memoria no es una preocupación, pero requiere acceso a caracteres en un único código de ancho fijo. Aquí, cada carácter Unicode está codificado en un solo bloque de código de 32 bits.

Las tres formas de codificación requieren no más de 4 bytes (o 32 bits) para cada carácter.

Hablar sobre números


El conjunto de caracteres Unicode se divide en 17 segmentos principales (planos), que se dividen en bloques. En cada plano hay un lugar para 65 536 (2 16 ) puntos de código, lo que crea un total de 1,114,112 puntos de código. Hay dos "aviones de uso privado" (No. 16 y No. 17) que se asignan para su uso a discreción de las empresas / usuarios. Tienen 131.072 puntos de código.

NoTituloAlcance
1)Avión multilingüe principal(de U + 0000 a U + FFFF)
2)Avión multilingüe adicional(de U + 10000 a U + 1FFFF)
3)Plano ideográfico adicional(de U + 20,000 a U + 2FFFF)
4)Plano ideográfico terciario(de U + 30000 a U + 3FFFF)
5)Plano 5 (no utilizado)(de U + 40,000 a U + 4FFFF)
6)Plano 6 (no utilizado)(de U + 50,000 a U + 5FFFF)
7)Plano 7 (no utilizado)(de U + 60,000 a U + 6FFFF)
8)Plano 8 (no utilizado)(de U + 70,000 a U + 7FFFF)
9)Avión 9 (no utilizado)(de U + 80,000 a U + 8FFFF)
10)Plano 10 (no utilizado)(de U + 90,000 a U + 9FFFF)
11)Plano 11 (no utilizado)(de U + A0000 a U + AFFFF)
12)Plano 12 (no utilizado)(de U + B0000 a U + BFFFF)
13)Plano 13 (no utilizado)(de U + C0000 a U + CFFFF)
14)Plano 14 (no utilizado)(de U + D0000 a U + DFFFF)
15)Avión adicional especializado(de U + E0000 a U + EFFFF)
16)Área adicional para uso privado - A(de U + F0000 a U + FFFFF)
17)Área adicional para uso privado - B(de U + 100000 a U + 10FFFF)

El primer plano se llama plano multilingüe principal o BMP. Contiene puntos de código de U + 0000 a U + FFFF, es decir, los caracteres más utilizados. Los dieciséis planos restantes (U + 010000 → U + 10FFFF) se denominan adicionales o astrales.

Pares sustitutos UTF-16


Los símbolos fuera del plano principal, como un tetragrammaton que significa el centro (U + 1D306), se pueden codificar en UTF-16 con solo dos unidades de código de 16 bits: 0xD834 0xDF06. Esto se llama un par sustituto. Tenga en cuenta que un par sustituto representa solo un personaje.

La primera unidad de código de un par sustituto siempre está en el rango de 0xD800 a 0xDBFF y se llama la parte superior del par.

La segunda unidad de código del par sustituto siempre está en el rango de 0xDC00 a 0xDFFF y se llama la parte inferior del par.

Matthias Binens

Par sustituto: una representación de un símbolo abstracto, que consiste en una secuencia de dos unidades de código de 16 bits, donde el primer valor del par es la unidad de código sustituto superior y el segundo es la unidad de código sustituto inferior. Los pares sustitutos se usan solo en UTF-16.

Unicode 8.0 Capítulo 3.8 - Sustitutos

Cálculo de pares sustitutos


El carácter Unicode "Montón de mierda" (U + 1F4A9) en UTF-16 tendrá que codificarse como un par sustituto, es decir, dos sustitutos. Para convertir cualquier punto de código en un par sustituto, use este algoritmo (en JavaScript). Tenga en cuenta que usamos la notación hexadecimal.

var High_Surrogate = function(Code_Point){ return Math.floor((Code_Point - 0x10000) / 0x400) + 0xD800 }; var Low_Surrogate = function(Code_Point){ return (Code_Point - 0x10000) % 0x400 + 0xDC00 }; // Reverses The Conversion var Code_Point = function(High_Surrogate, Low_Surrogate){ return (High_Surrogate - 0xD800) * 0x400 + Low_Surrogate - 0xDC00 + 0x10000; }; 



Composición y descomposición.


Unicode incluye un mecanismo para cambiar la forma de un personaje, que amplía enormemente el conjunto de glifos admitidos. Esto se aplica a los diacríticos combinables. Se insertan después del personaje principal. Se pueden aplicar múltiples marcas diacríticas a la misma marca. Unicode también contiene versiones precompiladas de la mayoría de estas combinaciones para uso normal.

Algunas secuencias de caracteres también se pueden representar como un solo carácter llamado carácter precompuesto, también conocido como carácter compuesto. Por ejemplo, el carácter [ü] puede codificarse como el único punto de código U + 00FC o como el carácter base U + 0075 (u), seguido del carácter no autónomo U + 0308 (¨). El estándar Unicode codifica caracteres compuestos para compatibilidad con estándares establecidos, como Latin 1, que incluye muchos caracteres compuestos, como [ü] y [ñ].

Los caracteres compuestos se pueden expandir para lograr consistencia o análisis. Por ejemplo, cuando se ordena alfabéticamente, el símbolo [ü] se puede descomponer en [u] seguido del símbolo no independiente [¨]. Después de tal descomposición, el algoritmo es más fácil de trabajar con una secuencia de caracteres. Esto facilita la clasificación en idiomas donde los modificadores de caracteres no afectan el orden alfabético. El estándar Unicode establece el orden de descomposición para todos los caracteres compuestos. También define formas de normalización para proporcionar representaciones únicas de personajes.

Mitos Unicode


De las diapositivas de la presentación de Mark Davis "Mitos de Unicode" .

  • Unicode es solo un código de 16 bits . - Algunas personas creen erróneamente que Unicode es solo un código de 16 bits, en el que cada carácter ocupa 16 bits y, por lo tanto, hay 65.536 caracteres posibles. De hecho, esto no es del todo cierto. Este es el mito más común de Unicode, así que si también lo pensaste antes, no te desanimes.
  • Puede tomar cualquier punto de código que no se use para sus necesidades . - No Algún día este lugar será reemplazado por otro símbolo. En su lugar, use planos para uso privado o áreas sin caracteres en cada plano donde no habrá caracteres por estándar.
  • Cada punto de código Unicode representa un carácter . - No Hay muchos puntos sin caracteres (FFFE, FFFF, 1FFFE, etc.) Además, puntos de código sustitutos, puntos de código privados y no utilizados, así como "caracteres" de control / formato (RLM, ZWNJ, etc.)
  • Unicode se queda sin espacio . - Si se llenara linealmente, habría terminado en 2140. Pero el lugar no se llena linealmente. Planes futuros ver aquí .
  • Todos los personajes se corresponden uno a uno . - No Las opciones son:
    • Uno a muchos: (β → SS)
    • Dado el contexto: (... Σ ← → ... ς y al mismo tiempo ... ΣΤ ... ← → ... στ ...)
    • Según la configuración regional: (I ← → ı y al mismo tiempo İ ← → i)

Codificaciones de aplicación Unicode


Tipo de codificaciónEjemplo
Objeto HTML (decimal)
Objeto HTML (hexadecimal)
Código de control de URL% F0% 9F% 96% 96
UTF-8 (hex)0xF0 0x9F 0x96 0x96 (f09f9696)
UTF-8 (binario)11110000: 10011111: 10010110: 10010110
UTF-16 / UTF-16BE (hex)0xD83D 0xDD96 (d83ddd96)
UTF-16LE (hex)0x3DD8 0x96DD (3dd896dd)
UTF-32 / UTF-32BE (hex)0x0001F596 (0001f596)
UTF-32LE (hex)0x96F50100 (96f50100)
Secuencia de escape octal\ 360 \ 237 \ 226 \ 226

Código fuente


Tipo de codificaciónEjemplo
Javascript\ u1F596
Json\ u1F596
C\ u1F596
C ++\ u1F596
Java\ u1F596
Pitón\ u1F596
Perl\ x {1F596}
Rubí\ u {1F596}
CSS\ 01F596

Lista de personajes increíbles.



Compartir un documento puede convertir rápidamente la edición en una batalla de rap escrita, librada por un acuerdo cada vez más confuso de gerentes de U + 202a a U + 202e

Personajes especiales


El Consorcio Unicode ha publicado un diagrama de puntuación general donde puede encontrar más información.

SímboloTituloDescripción
''U + FEFF Espacio sin ruptura de ancho cero (Marca de orden de bytes - BOM)Tiene una propiedad importante de unicidad al cambiar el orden de los bytes. También tiene ancho cero e invisibilidad. En un software inapropiado (como un intérprete PHP), esto lleva a todo tipo de ejemplos de comportamiento divertido.
'￯'Lista de materiales inversa '\ uFFEF'No equivale a un personaje, excepto por el comienzo del texto.
'​''\ u200B' Espacio sin ruptura de ancho ceroUn símbolo sin apariencia y sin efecto, excepto para evitar la formación de ligaduras.
' 'U + 00A0 Espacio sin rupturaHace que los personajes adyacentes se mantengan unidos. Bien conocido como   en HTML
''U + 00AD Guión suaveEn HTML, funciona como un espacio de ancho cero, pero cuando encuentra el final de una línea (y solo en este caso) muestra un guión.
'‍'U + 200D Señal de ancho cero (con unión)Hace que los caracteres vecinos se conecten (por ejemplo, caracteres árabes o emojis compatibles). Se puede usar para emojis combinados secuencialmente.
'⁠'U + 2060 Word ConnectorIgual que U + 00A0, pero completamente invisible. Bueno para @ font-face en Twitter.
' 'U + 1680 personaje espacial OghamMarca un espacio que parece un guión. Ideal para acercar a los programadores a la locura: 1 + 2 === 3.
';'U + 037E Signo de interrogación griegoParece un punto y coma. También es una forma divertida de engañar a los desarrolladores.
'‭'U + 202DCambia la dirección del texto de izquierda a derecha.
'‮'U + 202ECambia la dirección del texto de derecha a izquierda.
'ꓸ'U + A4F8 Lisu tono de letra mya tiDoble por el punto.
'ꓹ'U + A4F9 Lisu tono de letra na poDoble por una coma.
'ꓼ'Tono de letra U + A4FC Lisu mya naDoble para punto y coma.
'ꓽ'U + A4FD Lisu tono de letra mya jeuDoble para el colon.
'︀'Selectores de opciones (de U + FE00 a U + FE0F y de U + E0100 a U + E01EF)Un bloque de 256 caracteres de ancho cero que tiene la propiedad ID_Continue, es decir, se puede usar en nombres de variables (no en la primera letra). Lo que los hace especiales es que el cursor del mouse pasa sobre ellos, porque combinan caracteres, a diferencia de la mayoría de los otros caracteres de ancho cero.
'ᅟ'U + 115F Marcador de posición Hangul ChosonEsencialmente llena el espacio. Representado como un carácter de ancho cero (invisible) a menos que sea explícitamente compatible en la representación. Marcado como ID_Start
'ᅠ'U + 1160 Marcador de posición ChunsonQuizás llena el espacio? Representado como un carácter de ancho cero (invisible) a menos que sea explícitamente compatible en la representación. Marcado como ID_Start
'ㅤ'U + 3164 agregado HangulEn general, llena el espacio. Representado como un carácter de ancho cero (invisible) a menos que sea explícitamente compatible en la representación. Marcado como ID_Start

Espera ... ¿qué acabo de leer?

¡Los identificadores variables pueden incluir espacios!


El marcador de posición Hangul U + 3164 se muestra como un espacio amplio. Si el carácter claramente no se admite en la representación , se muestra como completamente invisible (y no ocupa espacio, es decir, "ancho cero"). Esto significa que nunca verá un personaje de reemplazo de personaje feo ( ).

Todavía no estoy seguro de por qué U + 3164 tiene instrucciones de comportarse de esta manera. Curiosamente, U + 3164 se agregó a Unicode en la versión 1.1 (1993), por lo que los especialistas del Consorcio tuvieron mucho tiempo para pensarlo. De todos modos, aquí hay algunos ejemplos.

 > var ᅟ = 'foo'; undefined > ᅟ 'foo' > var ㅤ= alert; undefined > var foo = 'bar' undefined > if ( foo ===ㅤ`baz` ){} // alert undefined > var varㅤfooㅤ\u{A60C}ㅤπ = 'bar'; undefined > varㅤfooㅤꘌㅤπ 'bar' 

** Nota: ** Probé el renderizado U + 3164 en Ubuntu y OS X con los siguientes parámetros: `node`,` php`, `ruby`,` python3.5`, `scala`,` vim`, `cat` , `chrome` +` github gist '. Atom es el único sistema que falla al mostrar (incorrectamente) campos vacíos. Todavía tengo que verificar el código en Emacs y Sublime. Según tengo entendido, el Consorcio Unicode no reasignará ni cambiará el nombre de los caracteres o puntos de código, pero puede ser persuadido para cambiar las propiedades de los caracteres como ID_Start e ID_Continue.

Modificadores


Zero Width Combiner (ZWJ) es un carácter no imprimible en un conjunto de computadora de algunas fuentes complejas, como el árabe o cualquier fuente india. Cuando se coloca entre dos caracteres que de otro modo no estarían conectados, ZWJ los obliga a imprimir en forma combinada.

El seccionador de ancho cero (ZWNJ) es un carácter no imprimible en conjuntos de escritura basados ​​en computadora con ligaduras. Cuando se coloca entre dos caracteres que de otro modo se unirían en una ligadura, ZWNJ los obliga a imprimir en sus formas final y original, respectivamente. Actúa como un espacio, pero se usa cuando es deseable mantener las palabras cercanas entre sí o combinar una palabra con su morfema.

 > 'a' "a" > 'a\u{0308}' "ä" > 'a\u{20DE}\u{0308}' "a⃞̈" > 'a\u{20DE}\u{0308}\u{20DD}' "a⃞̈⃝" // Modifying Invisible Characters > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}' "‎‎‎‎‎‎‎‎‎‎" > '\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}\u{200E}'.length 10 

Colisiones de transformación en mayúsculas


SímboloPunto de códigoResultado
ß0x00DFSS
ı0x0131I
ſ0x017FS
0xFB00FF
fi0xFB01FI
0xFB02FL
0xFB03FFI
0xFB04FFL
0xFB05ST
0xFB06ST

Colisiones minúsculas de conversión


SímboloPunto de códigoResultado
K0x212Ak

Quirks y resolución de problemas


  • La longitud de la línea generalmente está determinada por el número de puntos de código . Esto significa que los pares sustitutos se considerarán dos caracteres. Se pueden superponer varios signos diacríticos en un símbolo: a + ̈ == ̈a . Esto aumenta la longitud de la cadena, produciendo solo un carácter.
  • Del mismo modo, la inversión de cadenas a menudo se convierte en una tarea no trivial . Nuevamente, los pares sustitutos y los signos diacríticos deben invertirse juntos. ES Reverser ofrece una solución bastante buena.
  • Las comparaciones en mayúsculas y minúsculas no siempre coinciden . Se pueden expresar en tales relaciones:

    • Uno a muchos: (ß → SS)
    • Dado el contexto: (... Σ ← → ... ς y ... ΣΤ ... ← → ... στ ...)
    • Según la configuración regional: (I ← → ı e İ ← → i)

    Una a muchas comparaciones


    La mayoría de los caracteres a continuación expresan sus asignaciones de uno a muchos en mayúsculas y otros en minúsculas. En principio, la lista se puede dividir en dos partes.

    Punto de códigoSímboloTituloCarácter asociadoPuntos de código asociado
    U + 00DFßEscet en minúscula latina (S aguda)s , sU + 0073, U + 0073
    U + 0130İLetra mayúscula latina "I" con un punto arribai , ̇U + 0069, U + 0307
    U + 0149ʼnLetra minúscula latina "n" por el apóstrofe anteriorʼ , nU + 02BC, U + 006E
    U + 01F0ǰLetra minúscula latina jj , ̌U + 006A, U + 030C
    U + 0390ΐIota griega minúscula con diálisis y tonos.ι , ̈ ,U + 03B9, U + 0308, U + 0301
    U + 03B0ΰLetra minúscula griega ipsilon con diálisis y tonos.υ , ̈ ,U + 03C5, U + 0308, U + 0301
    U + 0587ևLigadura minúscula armenia ech yiwnե , ւU + 0565, U + 0582
    U + 1E96Letra h minúscula latina con una línea debajohU + 0068, U + 0331
    U + 1E97Letra latina minúscula t con diéresist , ̈U + 0074, U + 0308
    U + 1E98Letra minúscula latina w con anillo arribaw , ̊U + 0077, U + 030A
    U + 1E99Letra latina minúscula y con anillo arribay , ̊U + 0079, U + 030A
    U + 1E9ALetra latina minúscula a con la mitad derecha del anilloa , ʾU + 0061, U + 02BE
    U + 1E9ELetra mayúscula latina agudas , sU + 0073, U + 0073
    U + 1F50Letra minúscula griega ipsilon con psilυ , ̓U + 03C5, U + 0313
    U + 1F52Letra minúscula griega ipsilon con psili y variaυ , ̓ ,U + 03C5, U + 0313, U + 0300
    U + 1F54Letra minúscula griega ipsilon con psily y oxyυ , ̓ ,U + 03C5, U + 0313, U + 0301
    U + 1F56Letra minúscula griega ipsilon con psily y perisomeυ , ̓ ,U + 03C5, U + 0313, U + 0342
    U + 1F80Letra minúscula griega alfa con psili y ipogemen , ιU + 1F00, U + 03B9
    U + 1F81Letra minúscula griega alfa con dasia y ipogemen , ιU + 1F01, U + 03B9
    U + 1F82Letra minúscula griega alfa con psilia y varia y ipogemen , ιU + 1F02, U + 03B9
    U + 1F83Letra minúscula griega alfa con dasia y varia y ipogemen , ιU + 1F03, U + 03B9
    U + 1F84Letra minúscula griega alfa con psily y oxy y ipogemen , ιU + 1F04, U + 03B9
    U + 1F85Letra minúscula griega alfa con dasia y oxy y ipogemen , ιU + 1F05, U + 03B9
    U + 1F86Letra minúscula griega alfa con psily y perispomenti e ipogemen , ιU + 1F06, U + 03B9
    U + 1F87Letra minúscula griega alfa con dasia y perispomenti e hypogrammen , ιU + 1F07, U + 03B9
    U + 1F88Letra mayúscula griega alfa con psil y programmemen , ιU + 1F00, U + 03B9
    U + 1F89Letra mayúscula griega alfa con dasia y programmemen , ιU + 1F01, U + 03B9
    U + 1F8ALetra mayúscula griega alfa con psilia y varia y programas , ιU + 1F02, U + 03B9
    U + 1F8BLetra mayúscula griega alfa con dasia y varia y prog , ιU + 1F03, U + 03B9
    U + 1F8CLetra mayúscula griega alfa con psily y oxy y prog , ιU + 1F04, U + 03B9
    U + 1F8DLetra mayúscula griega alfa con dasia y oxy y programmemen , ιU + 1F05, U + 03B9
    U + 1F8ELetra mayúscula griega alfa con psily y perispomenti y programmemeny , ιU + 1F06, U + 03B9
    U + 1F8FLetra mayúscula griega alfa con dasia y perispomenti y progs , ιU + 1F07, U + 03B9
    U + 1F90Letra minúscula griega esto con psily y ipogemen , ιU + 1F20, U + 03B9
    U + 1F91Letra minúscula griega a con dasia y ipogemen , ιU + 1F21, U + 03B9
    U + 1F92Letra minúscula griega esto con psilia y varia e ipogemen , ιU + 1F22, U + 03B9
    U + 1F93Letra minúscula griega eta con dasia y varia e ipogemen , ιU + 1F23, U + 03B9
    U + 1F94Letra minúscula griega a con psilia y oksia e ipogemen , ιU + 1F24, U + 03B9
    U + 1F95Letra minúscula griega eta con dasia y oksia e ipogemen , ιU + 1F25, U + 03B9
    U + 1F96Letra minúscula griega esto con psily y perispomenti e ipogemen , ιU + 1F26, U + 03B9
    U + 1F97Letra minúscula griega eta con dasia y perisopmenti e hypogrammen , ιU + 1F27, U + 03B9
    U + 1F98Letra mayúscula griega esto con psila y programas , ιU + 1F20, U + 03B9
    U + 1F99Letra mayúscula griega esto con dasia y programadores , ιU + 1F21, U + 03B9
    U + 1F9ALetra mayúscula griega esto con psilia y varia y prosgrammemeny , ιU + 1F22, U + 03B9
    U + 1F9BLetra mayúscula griega esto con dasia y varia y prosgrammemeny , ιU + 1F23, U + 03B9
    U + 1F9CLetra mayúscula griega con psilia y oxi y programadores , ιU + 1F24, U + 03B9
    U + 1F9DLetra mayúscula griega esto con dasia y oksia y programadores , ιU + 1F25, U + 03B9
    U + 1F9ELetra mayúscula griega esto con psily y perispomenty y prosgrammeny , ιU + 1F26, U + 03B9
    U + 1F9FLetra mayúscula griega esto con dasia y perispomenti y programadores , ιU + 1F27, U + 03B9
    U + 1FA0Letra griega minúscula omega con psili y ipogemen , ιU + 1F60, U + 03B9
    U + 1FA1Letra griega minúscula omega con dasia y ipogemen , ιU + 1F61, U + 03B9
    U + 1FA2Letra griega minúscula omega con psilia y varia e ipogemen , ιU + 1F62, U + 03B9
    U + 1FA3Letra griega minúscula omega con dasia y varia e ipogemen , ιU + 1F63, U + 03B9
    U + 1FA4Letra griega minúscula omega con psily y oxy y ipogemen , ιU + 1F64, U + 03B9
    U + 1FA5Letra griega minúscula omega con dasia y oxi y ipogemen , ιU + 1F65, U + 03B9
    U + 1FA6Letra griega minúscula omega con psily y perispomenti e ipogemen , ιU + 1F66, U + 03B9
    U + 1FA7Letra griega minúscula omega con dasia y perispomenti e hipogrammemen , ιU + 1F67, U + 03B9
    U + 1FA8Letra mayúscula griega omega con psili y programa , ιU + 1F60, U + 03B9
    U + 1FA9Letra mayúscula griega Omega con dasia y programmemen , ιU + 1F61, U + 03B9
    U + 1FAALetra mayúscula griega omega con psilia y varia y prosgrammemeny , ιU + 1F62, U + 03B9
    U + 1FABLetra mayúscula griega Omega con dasia y varia y programmemen , ιU + 1F63, U + 03B9
    U + 1FACLetra mayúscula griega omega con psilia y oxi y progamemen , ιU + 1F64, U + 03B9
    U + 1FADLetra mayúscula griega omega con dasia y oksia y programmemen , ιU + 1F65, U + 03B9
    U + 1FAELetra mayúscula griega omega con psily y perispomenti y prosgrammemeny , ιU + 1F66, U + 03B9
    U + 1FAFLetra mayúscula griega omega con dasia y perispomenti y prosgrammemeny , ιU + 1F67, U + 03B9
    U + 1FB2Letra griega minúscula alfa con varia y ipogemen , ιU + 1F70, U + 03B9
    U + 1FB3Letra minúscula griega alfa con ogogerammeniα , ιU + 03B1, U + 03B9
    U + 1FB4Letra griega minúscula alfa con oxi y ipogemenά , ιU + 03AC, U + 03B9
    U + 1FB6Letra minúscula griega alfa con perispomentiα ,U + 03B1, U + 0342
    U + 1FB7Letra minúscula griega alfa con perispomenti e ipogemenα , ͂ ιU + 03B1, U + 0342, U + 03B9
    U + 1FBCLetra mayúscula griega alfa con progsα , ιU + 03B1, U + 03B9
    U + 1FC2Letra griega minúscula et con varia y ipogemen , ιU + 1F74, U + 03B9
    U + 1FC3Letra minúscula griega a con ipogemenη , ιU + 03B7, U + 03B9
    U + 1FC4Letra griega minúscula eta con oxi y ipogemenή , ιU + 03AE, U + 03B9
    U + 1FC6Letra minúscula griega a con perispomentiη ,U + 03B7, U + 0342
    U + 1FC7Letra minúscula griega a con perispomenti e ipogemenη , ͂ ιU + 03B7, U + 0342, U + 03B9
    U + 1FCCLetra mayúscula griega esto con progη , ιU + 03B7, U + 03B9
    U + 1FD2Iota minúscula griega con diálisis y variaι , ̈ ,U + 03B9, U + 0308, U + 0300
    U + 1FD3Iota minúscula griega con diálisis y oxiι , ̈ ,U + 03B9, U + 0308, U + 0301
    U + 1FD6Iota minúscula griega con perispomentiι ,U + 03B9, U + 0342
    U + 1FD7Iota griega minúscula con diálisis y períodoι , ̈ ,U + 03B9, U + 0308, U + 0342
    U + 1FE2Letra minúscula griega ipsilon con diálisis y varia.υ , ̈ ,U + 03C5, U + 0308, U + 0300
    U + 1FE3Letra minúscula griega ipsilon con diálisis y oxi.υ , ̈ ,U + 03C5, U + 0308, U + 0301
    U + 1FE4Griego minúscula rho con psiliρ , ̓U + 03C1, U + 0313
    U + 1FE6Letra minúscula griega ipsilon con perispomentiυ ,U + 03C5, U + 0342
    U + 1FE7Letra minúscula griega ipsilon con diálisis y períodoυ , ̈ ,U + 03C5, U + 0308, U + 0342
    U + 1FF2Letra griega minúscula omega con varia e ipogemen , ιU + 1F7C, U + 03B9
    U + 1FF3Letra griega minúscula omega con ogogerammeniω , ιU + 03C9, U + 03B9
    U + 1FF4Letra griega minúscula omega con oxia y ipogemenώ , ιU + 03CE, U + 03B9
    U + 1FF6Letra griega minúscula omega con perispomentiω ,U + 03C9, U + 0342
    U + 1FF7Letra griega minúscula omega con perispomenti e ipogemenω , ͂ ιU + 03C9, U + 0342, U + 03B9
    U + 1FFCLetra mayúscula griega Omega con programaω , ιU + 03C9, U + 03B9
    U + FB00Ligadura en minúscula latina Fff fU + 0066, U + 0066
    U + FB01Ligadura en minúscula latina Fif , iU + 0066, U + 0069
    U + FB02Ligadura latina minúscula Flf lU + 0066, U + 006C
    U + FB03Ligadura latina minúscula Ffif , f , iU + 0066, U + 0066, U + 0069
    U + FB04Ligadura en minúscula latina Fflf , f , lU + 0066, U + 0066, U + 006C
    U + FB05Latina ligadura minúscula larga STs , tU + 0073, U + 0074
    U + FB06Ligadura latina minúscula Sts , tU + 0073, U + 0074
    U + FB13Ligadura minúscula armenia Men Nowմ , նU + 0574, U + 0576
    U + FB14Ligadura minúscula armenia Hombres Echմ , եU + 0574, U + 0565
    U + FB15Ligadura minúscula armenia Hombres Iniմ , իU + 0574, U + 056B
    U + FB16Ligadura minúscula armenia Vew Nowվ , նU + 057E, U + 0576
    U + FB17Ligadura minúscula armenia Hombres Xehմ , խU + 0574, U + 056D

    Grandes paquetes y bibliotecas


    • PhantomScript -: ghost :: flashlight: ejecutando JavaScript invisible e ingeniería social
    • ESReverser : manejo de cadenas JavaScript basado en Unicode .
    • mimic - Mal uso de Unicode
    • python-ftfy : intenta crear la representación máxima correcta y completa del texto recibido en Unicode.
    • vim-troll-stopper : protege tu código de los trolls Unicode.

    Emoji




    Unicode (diversity), . .

    , , . — . :

    U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469️‍️‍️‍couple with heart: woman, woman
    U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466

    , .

    8.0 ( 2015 ) - . , ( , FitzpatrickSkinType.pdf). .

    Unicode

    CódigoTitulo
    U+1F3FB-1-2
    U+1F3FC-3
    U+1F3FD-4
    U+1F3FE-5
    U+1F3FF-6

    , \u{1F466}\u{1F3FE} .


    +






    JavaScript (ES6)

    , ID_START , . , ID_CONTINUE , .

     // How convenient! var π = Math.PI; // Sometimes, you just have to use the Bad Parts of JavaScript: var ಠ_ಠ = eval; // Code, YU NO WORK?! var ლ_ಠ益ಠ_ლ = 42; // How about a JavaScript library for functional programming? var λ = function() {}; // Obfuscate boring variable names for great justice var \u006C\u006F\u006C\u0077\u0061\u0074 = 'heh'; // …or just make up random ones var Ꙭൽↈⴱ = 'huh'; // While perfectly valid, this doesn't work in most browsers: var foo\u200Cbar = 42; // This is *not* a bitwise left shift (`<<`): var 〱〱 = 2; // This is, though: 〱〱 << 〱〱; // 8 // Give yourself a discount: var price_9̶9̶_89 = 'cheap'; // Fun with Roman numerals var Ⅳ = 4; var Ⅴ = 5; Ⅳ + Ⅴ; // 9 // Cthulhu was here var Hͫ̆̒̐ͣ̊̄ͯ͗͏̵̗̻̰̠̬͝ͅE̴̷̬͎̱̘͇͍̾ͦ͊͒͊̓̓̐_̫̠̱̩̭̤͈̑̎̋ͮͩ̒͑̾͋͘Ç̳͕̯̭̱̲̣̠̜͋̍O̴̦̗̯̹̼ͭ̐ͨ̊̈͘͠M̶̝̠̭̭̤̻͓͑̓̊ͣͤ̎͟͠E̢̞̮̹͍̞̳̣ͣͪ͐̈T̡̯̳̭̜̠͕͌̈́̽̿ͤ̿̅̑Ḧ̱̱̺̰̳̹̘̰́̏ͪ̂̽͂̀͠ = 'Zalgo'; 

    CSS .

     <!-- place this within the document head --> <meta charset="UTF-8" /> <!-- error message --> <div class="ಠ_ಠ">You do not have access to this page.</div> <!-- success message --> <div class="">Your changes have been saved successfully!</div> 

     .ಠ_ಠ { border: 1px solid #f00; } . { background: lightgreen; } 

    HTML


    HTML- , , .

    , HTML .

     // U+1160 HANGUL JUNGSEONG FILLER transformAllTags('ᅠ'); // An actual HTML element node designed to look like a comment node, using the U+01C3 LATIN LETTER RETROFLEX CLICK // <ǃ-- name="viewport" content="width=device-width"></ǃ--> transformAllTags('ǃ--'); // or even <ᅠ⃝ transformAllTags('\u{1160}\u{20dd}'); // and for a bonus, all existing tag names will have each character ensquared. h⃞t⃞m⃞l⃞ transformAllTags(); function transformAllTags (newName){ // querySelectorAll doesn't actually return an array. Array.from(document.querySelectorAll('*')) .forEach(function(x){ transformTag(x, newName); }); } function wonky(str){ return str.split('').join('\u{20de}') + '\u{20de}'; } function transformTag(tagIdOrElem, tagType){ var elem = (tagIdOrElem instanceof HTMLElement) ? tagIdOrElem : document.getElementById(tagIdOrElem); if(!elem || !(elem instanceof HTMLElement))return; var children = elem.childNodes; var parent = elem.parentNode; var newNode = document.createElement(tagType||wonky(elem.tagName)); for(var a=0;a<elem.attributes.length;a++){ newNode.setAttribute(elem.attributes[a].nodeName, elem.attributes[a].value); } for(var i= 0,clen=children.length;i<clen;i++){ newNode.appendChild(children[0]); //0...always point to the first non-moved element } newNode.style.cssText = elem.style.cssText; parent.replaceChild(newNode,elem); } 

    :

     function testBegin(str){ try{ eval(`document.createElement( '${str}' );`) return true; } catch(e){ return false; } } function testContinue(str){ try{ eval(`document.createElement( 'a${str}' );`) return true; } catch(e){ return false; } } 

    :

     // Test if dashes can start an HTML Tag > testBegin('-') < false > testContinue('-') < true > testBegin('ᅠ-') // Prepend dash with U+1160 HANGUL JUNGSEONG FILLER < true 


    TrueType OpenType UTF-8, 65 535 . 1,1 UTF-8, .








    256 .



    , () (CJK). , , « ».


    . 17- .

    Titulo#
    U+0000U+007F128
    — 1U+0080U+00FF128
    — AU+0100U+017F128
    — BU+0180U+024F208
    U+0250U+02AF96
    U+02B0U+02FF80
    U+0300U+036F112
    U+0370U+03FF135
    U+0400U+04FF256
    U+0500U+052F48
    U+0530U+058F89
    U+0590U+05FF87
    U+0600U+06FF255
    U+0700U+074F77
    U+0750U+077F48
    U+0780U+07BF50
    U+07C0U+07FF59
    U+0800U+083F61
    U+0840U+085F29
    — AU+08A0U+08FF50
    U+0900U+097F128
    U+0980U+09FF93
    U+0A00U+0A7F79
    U+0A80U+0AFF85
    U+0B00U+0B7F90
    U+0B80U+0BFF72
    U+0C00U+0C7F96
    U+0C80U+0CFF87
    U+0D00U+0D7F100
    U+0D80U+0DFF90
    U+0E00U+0E7F87
    U+0E80U+0EFF67
    U+0F00U+0FFF211
    U+1000U+109F160
    U+10A0U+10FF88
    U+1100U+11FF256
    U+1200U+137F358
    U+1380U+139F26
    U+13A0U+13FF92
    U+1400U+167F640
    U+1680U+169F29
    U+16A0U+16FF89
    U+1700U+171F20
    U+1720U+173F23
    U+1740U+175F20
    U+1760U+177F18 años
    U+1780U+17FF114
    U+1800U+18AF156
    U+18B0U+18FF70
    U+1900U+194F68
    U+1950U+197F35
    U+1980U+19DF83
    U+19E0U+19FF32
    U+1A00U+1A1F30
    U+1A20U+1AAF127
    U+1AB0U+1AFF15
    U+1B00U+1B7F121
    U+1B80U+1BBF64
    U+1BC0U+1BFF56
    U+1C00U+1C4F74
    -U+1C50U+1C7F48
    U+1CC0U+1CCF8
    U+1CD0U+1CFF41
    U+1D00U+1D7F128
    U+1D80U+1DBF64
    U+1DFFU+1DC0U+1DFF58
    U+1E00U+1EFF256
    U+1F00U+1FFF233
    U+2000U+206F111
    U+2070U+209F42
    U+20A0U+20CF31
    U+20D0U+20FF33
    U+2100U+214F80
    U+2150U+218F60 60
    U+2190U+21FF112
    U+2200U+22FF256
    U+2300U+23FF251
    U+2400U+243F39
    U+2440U+245F11
    U+2460U+24FF160
    U+2500U+257F128
    U+2580U+259F32
    U+25A0U+25FF96
    U+2600U+26FF256
    DingbatsU+2700U+27BF192
    — AU+27C0U+27EF48
    — AU+27F0U+27FF16
    U+2800U+28FF256
    — BU+2900U+297F128
    — BU+2980U+29FF128
    U+2A00U+2AFF256
    U+2B00U+2BFF206
    U+2C00U+2C5F94
    — CU+2C60U+2C7F32
    U+2C80U+2CFF123
    U+2D00U+2D2F40
    U+2D30U+2D7F59
    U+2D80U+2DDF79
    — AU+2DE0U+2DFF32
    U+2E00U+2E7F67
    U+2E80U+2EFF115
    U+2F00U+2FDF214
    U+2FF0U+2FFF12
    U+3000U+303F64
    U+3040U+309F93
    U+30A0U+30FF96
    U+3100U+312F41
    U+3130U+318F94
    U+3190U+319F16
    U+31A0U+31BF27
    U+31C0U+31EF36
    U+31F0U+31FF16
    U+3200U+32FF254
    U+3300U+33FF256
    — AU+3400U+4DBF6191
    « »U+4DC0U+4DFF64
    U+4E00U+9FFF20941
    U+A000U+A48F1165
    U+A490U+A4CF55
    U+A4D0U+A4FF48
    U+A500U+A63F300
    — BU+A640U+A69F96
    U+A6A0U+A6FF88
    U+A700U+A71F32
    — DU+A720U+A7FF159
    U+A800U+A82F44
    U+A830U+A83F10
    U+A840U+A87F56
    U+A880U+A8DF81
    U+A8E0U+A8FF30
    -U+A900U+A92F48
    U+A930U+A95F37
    — AU+A960U+A97F29
    U+A980U+A9DF91 91
    — BU+A9E0U+A9FF31
    U+AA00U+AA5F83
    — AU+AA60U+AA7F32
    -U+AA80U+AADF72
    U+AAE0U+AAFF23
    — AU+AB00U+AB2F32
    — EU+AB30U+AB6F54
    U+AB70U+ABBF80
    U+ABC0U+ABFF56
    U+AC00U+D7AF2
    — BU+D7B0U+D7FF72
    U+D800U+DB7F2
    U+DB80U+DBFF2
    U+DC00U+DFFF2
    U+E000U+F8FF2
    U+F900U+FAFF472
    U+FB00U+FB4F58
    — AU+FB50U+FDFF643
    U+FE00U+FE0F16
    U+FE10U+FE1F10
    U+FE20U+FE2F16
    U+FE30U+FE4F32
    U+FE50U+FE6F26
    — BU+FE70U+FEFF141
    U+FF00U+FFEF225
    U+FFF0U+FFFF7 7
    U+10000U+1007F88
    U+10080U+100FF123
    U+10100U+1013F57
    U+10140U+1018F77
    U+10190U+101CF13
    U+101D0U+101FF46
    U+10280U+1029F29
    U+102A0U+102DF49
    U+102E0U+102FF28
    U+10300U+1032F36
    U+10330U+1034F27
    U+10350U+1037F43
    U+10380U+1039F31
    U+103A0U+103DF50
    U+10400U+1044F80
    U+10450U+1047F48
    U+10480U+104AF40
    U+10500U+1052F40
    U+10530U+1056F53
    U+10600U+1077F341
    U+10800U+1083F55
    U+10840U+1085F31
    U+10860U+1087F32
    U+10880U+108AF40
    U+108E0U+108FF26
    U+10900U+1091F29
    U+10920U+1093F27
    U+10980U+1099F32
    U+109A0U+109FF90
    U+10A00U+10A5F65
    U+10A60U+10A7F32
    U+10A80U+10A9F32
    U+10AC0U+10AFF51
    U+10B00U+10B3F61
    U+10B40U+10B5F30
    U+10B60U+10B7F27
    U+10B80U+10BAF29
    U+10C00U+10C4F73
    U+10C80U+10CFF108
    U+10E60U+10E7F31
    U+11000U+1107F109
    U+11080U+110CF66
    -U+110D0U+110FF35
    U+11100U+1114F67
    U+11150U+1117F39
    U+11180U+111DF94
    U+111E0U+111FF20
    U+11200U+1124F61
    U+11280U+112AF38
    U+112B0U+112FF69
    U+11300U+1137F85
    U+11480U+114DF82
    U+11580U+115FF92
    U+11600U+1165F79
    U+11680U+116CF66
    U+11700U+1173F57
    -U+118A0U+118FF84
    U+11AC0U+11AFF57
    U+12000U+123FF922
    U+12400U+1247F116
    U+12480U+1254F196
    U+13000U+1342F1071
    U+14400U+1467F583
    U+16800U+16A3F569
    U+16A40U+16A6F43
    U+16AD0U+16AFF36
    U+16B00U+16B8F127
    U+16F00U+16F9F133
    U+1B000U+1B0FF2
    U+1BC00U+1BC9F143
    U+1BCA0U+1BCAF4 4
    U+1D000U+1D0FF246
    U+1D100U+1D1FF231
    U+1D200U+1D24F70
    « »U+1D300U+1D35F87
    U+1D360U+1D37F18 años
    U+1D400U+1D7FF996
    SignWritingU+1D800U+1DAAF672
    U+1E800U+1E8DF213
    U+1EE00U+1EEFF143
    U+1F000U+1F02F44
    U+1F030U+1F09F100
    U+1F0A0U+1F0FF82
    U+1F100U+1F1FF173
    U+1F200U+1F2FF57
    U+1F300U+1F5FF766
    U+1F600U+1F64F80
    U+1F650U+1F67F48
    U+1F680U+1F6FF98
    U+1F700U+1F77F116
    U+1F780U+1F7FF85
    — CU+1F800U+1F8FF148
    U+1F900U+1F9FF15
    — BU+20000U+2A6DF42676
    — CU+2A700U+2B73F60 60
    — DU+2B740U+2B81F27
    — EU+2B820U+2CEAF2
    U+2F800U+2FA1F542
    TagsU+E0000U+E007F97
    U+E0100U+E01EF240
    — AU+F0000U+FFFFF4 4
    — BU+100000U+10FFFF4 4


    :

    • — - .
    • — , .
    • — .
    • — , . .
    • , — , . , .
    • — , . , [Ä] [A] [¨].
    • — .
    • — , , . .
    • — , .
    • — .

    : c codepoints.net .


Source: https://habr.com/ru/post/485148/


All Articles