Unicode es unestándar de codificación decaracteres diseñado para facilitar el tratamiento informático, transmisión y visualización de textos de numerososidiomas y disciplinas técnicas, además de textos clásicos delenguas muertas. El término Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad, y unicidad.[1]
Unicode define cada carácter o símbolo mediante un nombre e identificador numérico, elpunto de código (code point). Además incluye otras informaciones para el uso correcto de cada carácter, como sistema de escritura, categoría, direccionalidad, mayúsculas y otros atributos. Unicode trata los caracteres alfabéticos, ideográficos y símbolos de forma equivalente, lo que significa que se pueden mezclar en un mismo texto sin utilizar marcas ni caracteres de control.[2]
La creación de Unicode ha sido un proyecto de gran relevancia con el objetivo de reemplazar los esquemas decodificación de caracteres existentes, los cuales presentaban limitaciones significativas en tamaño y compatibilidad con entornos plurilingües. Unicode se ha convertido en el esquema de codificación de caracteres más completo y extenso, siendo el dominante en lainternacionalización y adaptación local delsoftware informático. Este estándar ha sido ampliamente adoptado en diversas tecnologías recientes, comoXML,Java ysistemas operativos modernos.
La descripción exhaustiva del estándar y las tablas de caracteres están disponibles en el sitio web oficial de Unicode. Cada vez que se finaliza una nueva versión principal, se pública una referencia completa en formato de libro, también está disponible en su versión digital de manera gratuita. Las revisiones y adiciones se publican de manera independiente.
Unicode engloba todos los caracteres de uso común en la actualidad. La versión 15.0, por ejemplo, cuenta con 149.186 caracteres provenientes de diversos alfabetos, sistemas ideográficos y colecciones de símbolos, como aquellos utilizados en matemáticas, tecnología, música e iconografía. Esta cifra continúa aumentando en cada nueva versión.[5]
Unicode abarca una amplia gama de sistemas de escritura modernos, como elalfabeto latino, así como escrituras históricas extintas, utilizadas con fines académicos, tales como elcuneiforme y elrúnico. Además de los caracteres alfabéticos, Unicode también incluye una variedad de caracteres no alfabéticos, como símbolos musicales y matemáticos, fichas de juegos como el dominó, flechas, iconos, etc.
Además, Unicode incluye lossignos diacríticos como caracteres individuales que pueden combinarse con otros caracteres, también ofrece versiones predefinidas de la mayoría de las letras con símbolos diacríticos utilizados en la actualidad, como las vocales acentuadas del español.
Unicode es un estándar en constante evolución, y se agregan nuevos caracteres de forma continua. Sin embargo, también se descartan ciertos alfabetos propuestos por diversas razones, como es el caso del alfabetoklingon.[6]
Unicode está sincronizado con el estándar ISO/IEC conocido comoUCS o Juego de Caracteres Universal. Desde un punto de vista técnico, Unicode incluye o es compatible con codificaciones previas como ASCII7 eISO 8859-1, así como con estándares nacionales como ANSI Z39.64, KS X 1001, JIS X 0208, JIS X 0212, JIS X 0213, GB 2312, GB 18030, HKSCS y CNS 11643, codificaciones particulares de fabricantes de software como Apple, Adobe, Microsoft, IBM, etc. Además, Unicode reserva espacio para que los fabricantes de software puedan crear extensiones para su propio uso.[7]
El elemento básico del estándar Unicode es elcarácter. Se considera un carácter al elemento más pequeño de un sistema de escritura con significado. El estándar Unicode codifica los caracteres esenciales ―grafemas― definiéndolos de forma abstracta y deja la representación visual (tamaño, dimensión, fuente, estilo) al software que lo trate, comoprocesadores de texto ynavegadores web. Se incluyen letras, signos diacríticos, caracteres de puntuación, ideogramas, caracteres silábicos, caracteres de control y otros símbolos. Los caracteres se agrupan en alfabetos o sistemas de escritura. Se considera que son diferentes los caracteres de alfabetos distintos, aunque compartan forma y significación.
Los caracteres se identifican mediante unnúmero o punto de código y su nombre o descripción. Cuando se ha asignado un código a un carácter, se dice que dicho carácter está codificado. El espacio para códigos tiene 1.114.112 posiciones posibles (0x10FFFF). Los puntos de código se representan utilizando notación hexadecimal agregando el prefijo U+. El valor hexadecimal se completa con ceros hasta 4 dígitos hexadecimales cuando es necesario; si es de longitud mayor que 4 dígitos no se agregan ceros.
Distintas versiones del carácterangstrom (versión preferida), como carácter con signo diacrítico y como símbolo con forma de letra.
Los bloques del espacio de códigos contienen puntos con la siguiente información:[8]
Caracteres gráficos: letras, signos diacríticos, cifras, caracteres de puntuación, símbolos y espacios.
Caracteres de formato: caracteres invisibles que afectan al proceso del texto próximo. Ejemplos: U+2028salto de línea, U+2029salto de párrafo, U+00A0espacio duro, etc.
Códigos de control: 65 códigos definidos por compatibilidad con ISO/IEC 2022. Son los caracteres entre los rangos [U+0000,U+001F], U+007F y [U+0080..U+009F]. Interpretarlos es responsabilidad de protocolos superiores.
Caracteres privados: reservados para el uso fuera del estándar por fabricantes de software.
Caracteres reservados: códigos reservados para su uso por Unicode. Son posiciones no asignadas.
Suplentes inferiores y superiores: Unicode reserva los puntos de código de U+D800 a U+DFFF para su uso como códigos subrogados enUTF-16, en la representación de caracteres suplementarios.
No caracteres: son códigos reservados permanentemente para uso interno por Unicode. Los dos últimos puntos de cada plano U+FFFE y U+FFFF.
Composición del carácter "ñ". La primera es un carácter independiente, la segunda unan más una virgulilla (en inglés conocida comotilde) combinable.
Unicode incluye un mecanismo para formar caracteres y así extender el repertorio de compatibilidad con los símbolos existentes. Un carácter base se complementa con marcas: signos diacríticos, de puntuación y marcos. El tipo de cada carácter y sus atributos definen el papel que pueden jugar en una combinación. Por este motivo, puede haber varias opciones que representen el mismo carácter. Para facilitar la compatibilidad con codificaciones anteriores, se proporcionan caracteres precompuestos; en la definición de dichos caracteres se hace constar qué caracteres intervienen en la composición.
Un grupo de caracteres consecutivos, independientemente de su tipo, forma una secuencia. En caso de que varias secuencias representen el mismo conjunto de caracteres esenciales, el estándar no define una de ellas como 'correcta', sino que las considera equivalentes. Para poder identificar dichas equivalencias, Unicode define los mecanismos deequivalencia canónica y deequivalencia de compatibilidad basados en la obtención de formas normalizadas de las cadenas a comparar.
En el estándar Unicode, los ideogramas de Asia oriental (popularmente llamados «caracteres chinos») se denominan «ideogramas han». Estos ideogramas se desarrollaron en China y fueron adaptados por culturas próximas para su propio uso.[9][10]Japón,Corea yVietnam desarrollaron sus propios sistemas alfabéticos o silábicos para usar en combinación con los símbolos chinos:hiragana ykatakana (en Japón),hangul (en Corea) yyi (en Vietnam). La evolución natural de los sistemas de escritura y los distintos momentos de entrada de los caracteres en las distintas culturas han marcado diferencias en los ideogramas utilizados. Unicode considera las distintas versiones de los ideogramas como variantes de un mismo carácter abstracto, es decir, como resultado de la aplicación de untipo de letra diferente en cada caso y considera las variantes nacionales como pertenecientes a un mismo sistema de escritura. La versión original del estándar se desarrolló a partir de los estándares industriales existentes en los países afectados.
La base de datos de caracteres CJK se denominaUnihan y contiene, además, información auxiliar sobre significado, conversiones, datos necesarios para utilizarlos en los diferentes lenguajes que los utilizan. A continuación se muestran los bloques que describen este repertorio. IRG define los caracteres de los siete grupos unificados; los dos grupos siguientes contienen caracteres para compatibilidad con estándares anteriores.
Bloque
Plano
Rango
Caracteres
Comentarios
Ideogramas unificados CJK
0 BMP
4E00–9FFF
20,992
Ideogramas de uso común.
Ideogramas unificados CJK - Extensión A
0 BMP
3400–4DBF
6,592
Ideogramas de uso poco habitual.
Ideogramas unificados CJK - Extensión B
2 SIP
20000–2A6DF
42,720
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión C
2 SIP
2A700–2B73F
4,154
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión D
2 SIP
2B740–2B81F
222
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión E
2 SIP
2B820–2CEAF
5,762
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión F
2 SIP
2CEB0–2EBEF
7,473
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión G
3 TIP
30000–3134F
4,939
Ideogramas de uso poco habitual e históricos.
Ideogramas unificados CJK - Extensión H
3 TIP
31350–323AF
4,192
Ideogramas de uso poco habitual e históricos.
Suplemento de radicales CJK
0 BMP
2E80–2EFF
115
Variantes y componentes de los radicales Kangxi.
Radicales Kangxi
0 BMP
2F00–2FDF
214
Radicales Kangxi.
Caracteres de descripción ideográfica
0 BMP
2FF0–2FFF
12
Composición de ideogramas.
Símbolos y puntuación CJK
0 BMP
3000–303F
64
Caracteres CJK especiales y signos de puntuación CJK.
Trazos CJK
0 BMP
31C0–31EF
36
Trazos mínimos de los ideogramas.
Compatibilidad CJK
0 BMP
3300–33FF
256
Caracteres CJK especiales.
Ideogramas de compatibilidad CJK
0 BMP
F900–FAFF
472
Duplicados, variantes unificables y caracteres corporativos.
Se admite que nunca se podrá finalizar la tarea de incluir ideogramas en el estándar debido, principalmente, a que la creación de nuevos ideogramas continúa. A fin de suplir eventuales carencias, Unicode ofrece un mecanismo que permite la representación de los símbolos que faltan denominado «secuencias de descripción ideográfica». Se basa en que en la práctica, la totalidad de los ideogramas se puede descomponer en piezas más pequeñas que, a su vez, son ideogramas. Aunque sea posible la representación de un símbolo mediante una secuencia, el estándar específica que siempre que exista una versión codificada su uso debe ser preferente. No hay un método para la «descomposición canónica» de ideogramas ni algoritmos de equivalencia por lo que las operaciones sobre el texto, como búsqueda u ordenación, pueden fallar.
Unicode define12 caracteres de control para la descripción de ideogramas representando distintas posibilidades de combinación espacial de otros caracteres han.
El conjunto de caracteres codificados por Unicode, es la UCD (unicode character database: base de datos de caracteres Unicode). Además de nombre ypunto de código, incluye más información: alfabeto al que pertenece, nombre, clasificación, mayúsculas, orientación y otras formas de uso, variantes estandarizadas, reglas de combinación, etc.
Formalmente la base de datos se divide enplanos y estos a su vez enáreas ybloques. Con excepciones, los caracteres codificados se agrupan en el espacio de códigos siguiendo categorías como alfabeto o sistema de escritura, de forma que caracteres relacionados se encuentren cerca en las tablas de codificación.
Por conveniencia se ha dividido el espacio de códigos en grandes grupos denominadosplanos. Cada plano contiene un máximo de 65 536 caracteres. Dado un punto de código expresado en hexadecimal, los 4 últimos dígitos determinan la posición del carácter en el plano.
Plano básico multilingüe: BMP o plano 0. Contiene la mayor parte de los alfabetos modernos, incluidos los caracteres más comunes del sistema CJK, otros caracteres históricos o poco habituales y 64 reservadas para uso privado.
Plano suplementario multilingüe: SMP o plano 1. Alfabetos históricos de menor uso y sistemas de uso técnico u otros usos.
Plano suplementario ideográfico: SIP o plano 2. Contiene los caracteres del sistema CJK que no se incluyen en el plano 0. La mayoría son caracteres muy raros o de interés histórico.
Plano de propósito especial: SSP o plano 14. Área para caracteres de control que no se han introducido en el plano 0.
Planos de uso privado: planos 15 y 16. Reservados para uso privado por fabricantes de software.
Los distintos planos se dividen en áreas de direccionamiento en función de los tipos generales que incluyen. Esta división es convencional, no reglada y puede variar con el tiempo. Las áreas se dividen, a su vez, en bloques. Los bloques están definidos normativamente y son rangos consecutivos del espacio de códigos. Los bloques se utilizan para formar las tablas impresas de caracteres pero no deben tomarse como definiciones de grupos significativos de caracteres.
Los puntos de código de Unicode se identifican por un número entero. Según su arquitectura, un ordenador utilizará unidades de 8, 16 o 32 bits para representar dichos enteros. Lasformas de codificación de Unicode reglamentan la forma en que los puntos de código se transformarán en unidades tratables por el computador.
Unicode define tres formas de codificación bajo el nombreUTF (Unicode transformation format: formato de transformación Unicode):[11]
UTF-8: codificación orientada a byte con símbolos de longitud variable.
UTF-16: codificación de 16 bits de longitud variable optimizada para la representación del plano básico multilingüe (BMP).
UTF-32: codificación de 32 bits de longitud fija, y la más sencilla de las tres.
Lasformas de codificación se limitan a describir el modo en que se representan los puntos de código en formato inteligible por la máquina. A partir de las 3 formas identificadas se definen 7 esquemas de codificación.
Losesquemas de codificación tratan de la forma en que se serializa la información codificada.[11] La seguridad en los intercambios de información entre sistemas heterogéneos requiere la implementación de sistemas que permitan determinar el orden correcto de los bits y bytes y garantizar que la reconstrucción de la información es correcta. Una diferencia fundamental entreprocesadores es el orden de disposición de los bytes en palabras de 16 y 32 bits, lo que se denominaendianness. Los esquemas de codificación deben garantizar que los extremos de una comunicación saben cómo interpretar la información recibida. A partir de las 3 formas de codificación se definen 7 esquemas. A pesar de que comparten nombres, no debe confundirse esquemas y formas de codificación.
Unicode define una marca especial, lamarca de orden de bytes (BOM,Byte Order Mark), al inicio de un fichero o una comunicación para hacer explícita la ordenación de bytes. Cuando un protocolo superior específica el orden de bytes, la marca no es necesaria y puede omitirse dando lugar a los esquemas de la lista anterior con sufijoBE oLE. En los esquemas UTF-16 y UTF-32, que admiten BOM, si este no se especifica se asume que la ordenación de bytes esbig-endian.
La unidad de codificación en UTF-8 es el byte por lo que no necesita una indicación de orden de byte. El estándar ni requiere ni recomienda la utilización de BOM, pero lo admite como marca de que el texto es Unicode o como resultado de la conversión de otros esquemas.
El proyecto Unicode se inició a finales de 1987, tras conversaciones entre Joe Becker, Lee Collins y Mark Davis (ingenieros de las empresasApple yXerox).[12] Como resultado de su colaboración, en agosto de 1988 se publicó el primer borrador de Unicode bajo el nombre de Unicode88.[13]En esta primera versión se consideraba que solo se codificarían los caracteres necesarios para el uso moderno, por lo que se utilizaron códigos de 16 bits.
Durante el año 1989 se sumaron colaboradores de otras compañías comoMicrosoft ySun Microsystems. El 3 de enero de 1991 se formó elConsorcio Unicode, y en octubre de 1991 se publicó la primera versión del estándar. La segunda versión, que ya incluía laescritura ideográfica han se publicó en junio de 1992. A continuación se muestra una tabla con las distintas versiones del Estándar Unicode con sus adiciones y modificaciones más importantes.
Eliminado el conjunto original de caracteres hangul; se agrega un nuevo conjunto de 11 172 caracteres hangul en una nueva ubicación. Se reincorpora el alfabeto tibetano en una nueva ubicación y con un juego de caracteres diferente. Se define el sistema de códigos subrogados y se crean los planos 15 y 16 de caracteres para uso privado.[14]
2.1
mayo de 1998
ISO/IEC 10646-1:1993 con enmiendas 5, 6 y 7, y dos caracteres de la enmienda 18
La versión 6.0 es la primera versión principal del estándar publicada exclusivamente en soporte electrónico. Agregadosmandeo,batak ybrahmi, ampliaciones de lenguajes africanos comotifinagh,etíope ybamúm. Otras adiciones importantes son: 222 ideogramas CJK, 1000 símbolos incluyendo los pictogramasemoji, el nuevo símbolo oficial para larupia ysímbolos alquímicos además de ampliaciones de los atributos de los caracteres y otras modificaciones normativas y algorítmicas.[18]
Revisión del algoritmo de texto bidireccional con la adición de 5 caracteres especiales. El nuevo algoritmo bidireccional mejora la representación conjunta de textos de diferentes fuentes respetando el orden correcto de los caracteres.
Dogra, letras capitales de Georgian Mtavruli, Gunjala Gondi, Hanifi Rohingya, Makasar, Medefaidrin, Old Sogdian, Sogdian, y varios símbolos (5 nuevos ideogramas unificados CJK, 66 emoji adicionales, copyleft, media estrella, símbolos astrológicos adicionales y de ajedrez chino Xiangqi)
Toto, Cypro-Minoan, Vithkuqi, Old Uyghur, Tangsa, adiciones de escritura latina en bloques SMP (Ext-F, Ext-G) para usar en IPA extendido, adiciones de escritura árabe para usar en idiomas de África y en Irán, Pakistán , Malasia, Indonesia, Java y Bosnia, y para escribir honoríficos, adiciones para uso coránico, otras adiciones para admitir idiomas en América del Norte, Filipinas, India y Mongolia, adición del símbolo de moneda som de Kirguistán, soporte para Znamenny notación musical y 37 emojis.
15.0
13 de septiembre de 2022
149 186
Kawi y Mundari, varias letras nuevas que incluyen 20 emojis, 4192 ideogramas CJK y caracteres de control de jeroglíficos egipcios