stringtranslate.com

Personajes del conjunto de caracteres universales

El Consorcio Unicode y el ISO/IEC JTC 1/SC 2 / WG 2 colaboran conjuntamente en la lista de caracteres del conjunto de caracteres codificados universales . El conjunto de caracteres codificados universal, más comúnmente llamado conjunto de caracteres universal ( abreviado UCS, designación oficial: ISO / IEC 10646), es un estándar internacional para mapear caracteres , símbolos discretos utilizados en lenguaje natural , matemáticas , música y otros dominios. a valores de datos únicos legibles por máquina . Al crear este mapeo, el UCS permite a los proveedores de software interoperar y transmitir (intercambiar) cadenas de texto codificadas con UCS de uno a otro. Como es un mapa universal , se puede utilizar para representar varios idiomas al mismo tiempo. Esto evita la confusión de utilizar múltiples codificaciones de caracteres heredadas , lo que puede dar como resultado que la misma secuencia de códigos tenga múltiples interpretaciones dependiendo de la codificación de caracteres en uso, lo que resulta en mojibake si se elige la incorrecta.

UCS tiene una capacidad potencial de más de 1 millón de caracteres. Cada carácter UCS está representado de manera abstracta por un punto de código , un número entero entre 0 y 1,114,111 (1,114,112 = 2 20 + 2 16 o 17 × 2 16 = 0x 110000 puntos de código ), utilizado para representar cada carácter dentro de la lógica interna del software de procesamiento de texto. . A partir de Unicode 15.1, lanzado en septiembre de 2023, 293.792 (26%) de estos puntos de código están asignados, a 149.878 (13%) se les han asignado caracteres, 137.468 (12%) están reservados para uso privado, 2.048 se utilizan para habilitar el mecanismo. de sustitutos, y 66 son designados como no personajes, dejando los 820.320 restantes (74%) sin asignar. El número de caracteres codificados se compone de la siguiente manera:

ISO mantiene el mapeo básico de caracteres desde el nombre del personaje hasta el punto del código. A menudo, los términos carácter y punto de código se utilizarán indistintamente. Sin embargo, cuando se hace una distinción, un punto de código se refiere al número entero del carácter: lo que uno podría considerar su dirección. Mientras tanto, un carácter en ISO/IEC 10646 incluye la combinación del punto de código y su nombre, Unicode agrega muchas otras propiedades útiles al conjunto de caracteres, como bloque , categoría, secuencia de comandos y direccionalidad .

Además de UCS, el estándar Unicode complementario (no es un proyecto conjunto con ISO, sino más bien una publicación del Consorcio Unicode) proporciona otros detalles de implementación como:

  1. asignaciones entre UCS y otros conjuntos de caracteres
  2. diferentes intercalaciones de caracteres y cadenas de caracteres para diferentes idiomas
  3. un algoritmo para diseñar texto bidireccional ("el algoritmo BiDi "), donde el texto en la misma línea puede cambiar de izquierda a derecha ("LTR") y de derecha a izquierda ("RTL")
  4. un algoritmo de plegado de casos

Los usuarios finales de software ingresan estos caracteres en los programas a través de varios métodos de entrada , por ejemplo, teclados físicos o paletas de caracteres virtuales .

El UCS se puede dividir de varias maneras, como por plano , bloque, categoría de personaje o propiedad de personaje . [1]

Descripción general de la referencia de personajes

Una referencia de caracteres numéricos HTML o XML hace referencia a un carácter mediante su conjunto de caracteres universales /punto de código Unicode y utiliza el formato

&#nnnn;

o

&#xhhhh;

donde nnnn es el punto de código en forma decimal y hhhh es el punto de código en forma hexadecimal . La x debe estar en minúscula en documentos XML. nnnn o hhhh pueden tener cualquier número de dígitos y pueden incluir ceros a la izquierda . El hhhh puede mezclar mayúsculas y minúsculas, aunque el estilo habitual es el de mayúsculas.

Por el contrario, una referencia de entidad de carácter se refiere a un carácter con el nombre de una entidad que tiene el carácter deseado como texto de reemplazo . La entidad debe estar predefinida (integrada en el lenguaje de marcado) o declarada explícitamente en una Definición de tipo de documento (DTD). El formato es el mismo que para cualquier referencia de entidad:

&nombre;

donde nombre es el nombre de la entidad que distingue entre mayúsculas y minúsculas. El punto y coma es obligatorio.

Aviones

Unicode e ISO dividen el conjunto de puntos de código en 17 planos, cada uno de ellos capaz de contener 65536 caracteres distintos o 1.114.112 en total. A partir de 2023 (Unicode 15.1), ISO y el Consorcio Unicode solo han asignado caracteres y bloques en siete de los 17 planos. Los demás quedan vacíos y reservados para uso futuro.

La mayoría de los personajes están actualmente asignados al primer plano: el Plano Básico Multilingüe . Esto es para ayudar a facilitar la transición del software heredado, ya que el plano multilingüe básico se puede abordar con sólo dos octetos . Los personajes fuera del primer plano suelen tener un uso muy especializado o poco común.

Cada plano se corresponde con el valor de uno o dos dígitos hexadecimales (0—9, A—F) que preceden a los cuatro últimos: por lo tanto, U+24321 está en el Plano 2, U+4321 está en el Plano 0 (implícitamente leído U+04321 ), y U+10A200 estaría en el Plano 16 (hexadecimal 10 = decimal 16). Dentro de un plano, el rango de puntos de código es hexadecimal 0000—FFFF, lo que produce un máximo de 65536 puntos de código. Los planos restringen los puntos de código a un subconjunto de ese rango.

Bloques

Unicode agrega una propiedad de bloque a UCS que divide aún más cada plano en bloques separados. Cada bloque es una agrupación de caracteres según su uso, como "operadores matemáticos" o "caracteres de escritura hebrea". Al asignar caracteres a puntos de código no asignados previamente, el Consorcio normalmente asigna bloques completos de caracteres similares: por ejemplo, todos los caracteres que pertenecen al mismo script o todos los símbolos con propósitos similares se asignan a un solo bloque. Los bloques también pueden mantener puntos de código reservados o no asignados cuando el Consorcio espera que un bloque requiera asignaciones adicionales.

Los primeros 256 puntos de código del UCS se corresponden con los de ISO 8859-1 , la codificación de caracteres de 8 bits más popular en el mundo occidental . Como resultado, los primeros 128 caracteres también son idénticos al ASCII . Aunque Unicode se refiere a estos como un bloque de escritura latina, estos dos bloques contienen muchos caracteres que suelen ser útiles fuera de la escritura latina. En general, no es necesario que todos los caracteres de un bloque determinado sean del mismo guión, y un guión determinado puede aparecer en varios bloques diferentes.

Categorías

Unicode asigna a cada carácter UCS una categoría general y una subcategoría. Las categorías generales son: letra, marca, número, puntuación, símbolo o control (en otras palabras, un carácter de formato o no gráfico).

Los tipos incluyen:

Personajes de propósito especial

Unicode codifica más de cien mil caracteres. La mayoría de ellos representan grafemas para procesar como texto lineal. Algunos, sin embargo, o no representan grafemas o, como grafemas, requieren un tratamiento excepcional. [4] [5] A diferencia de los caracteres de control ASCII y otros caracteres incluidos para capacidades heredadas de ida y vuelta, estos otros caracteres de propósito especial dotan al texto sin formato de una semántica importante.

Algunos caracteres especiales pueden alterar el diseño del texto, como el carpintero de ancho cero y el carpintero de ancho cero, mientras que otros no afectan el diseño del texto en absoluto, sino que afectan la forma en que se clasifican, combinan o procesan las cadenas de texto. Otros caracteres de propósito especial, como los invisibles matemáticos, generalmente no tienen ningún efecto en la representación del texto, aunque un software de diseño de texto sofisticado puede optar por ajustar sutilmente el espacio alrededor de ellos.

Unicode no especifica la división del trabajo entre la fuente y el software de diseño de texto (o "motor") al representar texto Unicode. Debido a que los formatos de fuente más complejos, como OpenType o Apple Advanced Typography , permiten la sustitución contextual y el posicionamiento de glifos, un motor de diseño de texto simple podría depender completamente de la fuente para todas las decisiones de elección y ubicación de glifos. En la misma situación, un motor más complejo puede combinar información de la fuente con sus propias reglas para lograr su propia idea de mejor representación. Para implementar todas las recomendaciones de la especificación Unicode, un motor de texto debe estar preparado para trabajar con fuentes de cualquier nivel de sofisticación, ya que las reglas de sustitución y posicionamiento contextual no existen en algunos formatos de fuentes y son opcionales en el resto. La barra de fracción es un ejemplo: las fuentes complejas pueden proporcionar o no reglas de posicionamiento en presencia del carácter de barra de fracción para crear una fracción, mientras que las fuentes en formatos simples no pueden.

Marca de orden de bytes

Cuando aparece al principio de un archivo de texto o secuencia, la marca de orden de bytes (BOM) U+FEFF indica la forma de codificación y su orden de bytes.

Si el primer byte de la secuencia es 0xFE y el segundo 0xFF, entonces no es probable que el texto de la secuencia esté codificado en UTF-8 , ya que esos bytes no son válidos en UTF-8. Tampoco es probable que sea UTF-16 en orden de bytes little-endian porque 0xFE, 0xFF leído como una palabra little endian de 16 bits sería U+FFFE, lo cual no tiene sentido. La secuencia tampoco tiene significado en ninguna disposición de codificación UTF-32 , por lo que, en resumen, sirve como una indicación bastante confiable de que el flujo de texto está codificado como UTF-16 en orden de bytes big-endian . Por el contrario, si los dos primeros bytes son 0xFF, 0xFE, entonces se puede suponer que el flujo de texto está codificado como UTF-16LE porque, leídos como un valor little-endian de 16 bits, los bytes producen la marca de orden de bytes esperada 0xFEFF. Sin embargo, esta suposición se vuelve cuestionable si los dos bytes siguientes son 0x00; O el texto comienza con un carácter nulo (U+0000) o la codificación correcta es en realidad UTF-32LE, en la que la secuencia completa de 4 bytes FF FE 00 00 es un carácter, la lista de materiales.

La secuencia UTF-8 correspondiente a U+FEFF es 0xEF, 0xBB, 0xBF. Esta secuencia no tiene significado en otras formas de codificación Unicode, por lo que puede servir para indicar que esa secuencia está codificada como UTF-8.

La especificación Unicode no requiere el uso de marcas de orden de bytes en flujos de texto. Además, establece que no deben utilizarse en situaciones en las que ya se esté utilizando algún otro método de señalización de la forma de codificación.

Invisibles matemáticos

Principalmente para matemáticas, el Separador Invisible (U+2063) proporciona un separador entre caracteres donde se pueden omitir la puntuación o el espacio, como en un índice bidimensional como i⁣j. Tiempos invisibles (U+2062) y Aplicación de funciones (U+2061) son útiles en textos de matemáticas donde la multiplicación de términos o la aplicación de una función está implícita sin ningún glifo que indique la operación. Unicode 5.1 también introduce el carácter Mathematical Invisible Plus (U+2064), que puede indicar que un número entero seguido de una fracción debe indicar su suma, pero no su producto.

Barra de fracción

Ejemplo de uso de barra fraccionaria. Este tipo de letra ( Apple Chancery ) muestra la fracción común sintetizada a la izquierda y el glifo de fracción precompuesta a la derecha como una representación de la cadena de texto sin formato "1 1⁄4 1¼". Dependiendo del entorno del texto, la cadena única "1 1⁄4" podría producir cualquiera de los resultados, el de la derecha, mediante la sustitución de la secuencia de fracciones con el glifo de fracción precompuesto único.
Un ejemplo más elaborado del uso de barra fraccionaria: texto sin formato "4 221⁄225" representado en Apple Chancery . Esta fuente proporciona al software de diseño de texto instrucciones para sintetizar la fracción de acuerdo con la regla Unicode descrita en esta sección.

El carácter de barra fraccionaria (U+2044) tiene un comportamiento especial en el estándar Unicode: [6] (sección 6.2, Otra puntuación)

La forma estándar de una fracción construida utilizando la barra fraccionaria se define de la siguiente manera: cualquier secuencia de uno o más dígitos decimales (Categoría general = Nd), seguida de la barra fraccionaria, seguida de cualquier secuencia de uno o más dígitos decimales. Dicha fracción debe mostrarse como una unidad, como ¾ . Si el software de visualización no es capaz de asignar la fracción a una unidad, entonces también se puede mostrar como una secuencia lineal simple como alternativa (por ejemplo, 3/4). Si la fracción se va a separar de un número anterior, entonces se puede utilizar un espacio, eligiendo el ancho adecuado (normal, fino, ancho cero, etc.). Por ejemplo, 1 + ESPACIO DE ANCHO CERO + 3 + BARRA DE FRACCIÓN + 4 se muestra como .

Siguiendo esta recomendación Unicode, los sistemas de procesamiento de texto producen símbolos sofisticados únicamente a partir de texto plano. Aquí, la presencia del carácter de barra diagonal indica al motor de diseño que sintetice una fracción de todos los dígitos consecutivos que preceden y siguen a la barra. En la práctica, los resultados varían debido a la complicada interacción entre las fuentes y los motores de diseño. Los motores de diseño de texto simples tienden a no sintetizar fracciones en absoluto y, en cambio, dibujan los glifos como una secuencia lineal, como se describe en el esquema alternativo de Unicode.

Los motores de diseño más sofisticados se enfrentan a dos opciones prácticas: pueden seguir la recomendación de Unicode o pueden confiar en las propias instrucciones de la fuente para sintetizar fracciones. Al ignorar las instrucciones de la fuente, el motor de diseño puede garantizar el comportamiento recomendado de Unicode. Siguiendo las instrucciones de la fuente, el motor de diseño puede lograr una mejor tipografía porque la ubicación y la forma de los dígitos se ajustarán a esa fuente particular en ese tamaño particular.

El problema de seguir las instrucciones de la fuente es que los formatos de fuente más simples no tienen forma de especificar el comportamiento de síntesis de fracciones. Mientras tanto, los formatos más complejos no requieren que la fuente especifique el comportamiento de síntesis de fracciones y, por lo tanto, muchos no lo hacen. La mayoría de las fuentes de formatos complejos pueden indicarle al motor de diseño que reemplace una secuencia de texto sin formato, como 1⁄2, con el ½ glifo precompuesto. Pero debido a que muchos de ellos no dan instrucciones para sintetizar fracciones, una cadena de texto plano como 221⁄225 bien puede representarse como 22½25 (siendo ½ la fracción precompuesta sustituida, en lugar de sintetizada). Ante problemas como este, aquellos que deseen confiar en el comportamiento recomendado de Unicode deben elegir fuentes conocidas por sintetizar fracciones o software de diseño de texto conocido por producir el comportamiento recomendado de Unicode independientemente de la fuente.

Formato neutro bidireccional

La dirección de escritura es la dirección en la que se colocan los glifos en la página en relación con la progresión hacia adelante de los caracteres en la cadena Unicode. El inglés y otros idiomas de escritura latina tienen una dirección de escritura de izquierda a derecha. Varias escrituras importantes, como el árabe y el hebreo , tienen una dirección de escritura de derecha a izquierda. La especificación Unicode asigna un tipo direccional a cada carácter para informar a los procesadores de texto cómo se deben ordenar las secuencias de caracteres en la página.

Si bien los caracteres léxicos (es decir, letras) normalmente son específicos de una única escritura, algunos símbolos y signos de puntuación se utilizan en muchas escrituras. Unicode podría haber creado símbolos duplicados en el repertorio que difieren solo por el tipo direccional, pero optó por unificarlos y asignarles un tipo direccional neutral. Adquieren dirección en el momento del renderizado de los personajes adyacentes. Algunos de estos caracteres también tienen una propiedad de espejo bidi que indica que el glifo debe representarse en una imagen reflejada cuando se usa en texto de derecha a izquierda.

El tipo direccional en tiempo de renderizado de un carácter neutral puede permanecer ambiguo cuando la marca se coloca en el límite entre cambios de dirección. Para solucionar este problema, Unicode incluye caracteres que tienen una fuerte direccionalidad, no tienen ningún glifo asociado y son ignorables por los sistemas que no procesan texto bidireccional:

Rodear a un personaje bidireccionalmente neutral por la marca de izquierda a derecha obligará al personaje a comportarse como un personaje de izquierda a derecha, mientras que rodearlo por la marca de derecha a izquierda lo obligará a comportarse como un personaje de derecha a izquierda. personaje. El comportamiento de estos caracteres se detalla en el algoritmo bidireccional de Unicode.

Formato general bidireccional

Si bien Unicode está diseñado para manejar múltiples idiomas, múltiples sistemas de escritura e incluso texto que fluye de izquierda a derecha o de derecha a izquierda con una mínima intervención del autor, existen circunstancias especiales en las que la combinación de texto bidireccional puede volverse compleja, requiriendo más control de autor. Para estas circunstancias, Unicode incluye otros cinco caracteres para controlar la compleja incrustación de texto de izquierda a derecha dentro de texto de derecha a izquierda y viceversa:

Caracteres de anotación interlineal

Específico del guión

Otros

Caracteres vs puntos de código

El término “personaje” no está bien definido, y a lo que nos referimos la mayor parte de las veces es al grafema . Un grafema se representa visualmente por su glifo . El tipo de letra (a menudo denominado erróneamente fuente ) utilizado puede representar variaciones visuales del mismo carácter. Es posible que dos grafemas diferentes tengan exactamente el mismo glifo o estén visualmente tan cerca que el lector promedio no pueda distinguirlos.

Un grafema casi siempre está representado por un punto de código, por ejemplo, la LETRA A MAYÚSCULA LATINA está representada solo por el punto de código U+0041.

El grafema A MAYÚSCULA LATINA CON DIÉRESIS Ä es un ejemplo en el que un carácter puede representarse mediante más de un punto de código. Puede ser U+00C4 o U+0041U+0308. U+0041 es la familiar A y U+0308 es la DIÉRESIS COMBINADA ̈ , un signo diacrítico combinado .

Cuando una marca de combinación es adyacente a un punto de código de marca no combinable, las aplicaciones de representación de texto deben superponer la marca de combinación sobre el glifo representado por el otro punto de código para formar un grafema de acuerdo con un conjunto de reglas. [7]

La palabra BÄM constaría por tanto de tres grafemas. Puede estar formado por tres puntos de código o más, dependiendo de cómo estén compuestos realmente los personajes.

Espacios en blanco, uniones y separadores.

Unicode proporciona una lista de caracteres que considera espacios en blanco para compatibilidad con la interoperabilidad. Las implementaciones de software y otros estándares pueden utilizar el término para indicar un conjunto de caracteres ligeramente diferente. Por ejemplo, Java no considera que U+00A0 ESPACIO SIN INTERRUPCIÓN o U+0085 <control-0085> (LÍNEA SIGUIENTE) sean espacios en blanco, aunque Unicode sí lo hace. Los caracteres de espacio en blanco son caracteres típicamente designados para entornos de programación. A menudo no tienen significado sintáctico en dichos entornos de programación y los intérpretes automáticos los ignoran. Unicode designa los caracteres de control heredados U+0009 a U+000D y U+0085 como caracteres de espacio en blanco, así como todos los caracteres cuyo valor de propiedad Categoría general sea Separador. Hay un total de 25 caracteres de espacios en blanco a partir de Unicode 15.1.  

Adheridos y no adheridos a Grapheme

El conector de ancho cero (U+200D) y el no conector de ancho cero (U+200C) controlan la unión y ligación de glifos. El elemento de unión no hace que los caracteres que de otro modo no se unirían o ligarían lo hicieran, pero cuando se combinan con el no elemento de unión, estos caracteres se pueden usar para controlar las propiedades de unión y ligación de los dos caracteres de unión o ligación circundantes. La combinación de grafemas (U+034F) se utiliza para distinguir dos caracteres base como una base o dígrafo común, principalmente para el procesamiento de texto subyacente, clasificación de cadenas, plegado de mayúsculas y minúsculas, etc.

Uniones y separadores de palabras

El separador de palabras más común es un espacio (U+0020). Sin embargo, existen otros conectores y separadores de palabras que también indican una ruptura entre palabras y participan en algoritmos de salto de línea. El espacio sin interrupción (U+00A0) también produce un avance de línea de base sin un glifo, pero inhibe en lugar de permitir un salto de línea. El espacio de ancho cero (U+200B) permite un salto de línea pero no proporciona espacio: en cierto sentido une, en lugar de separar, dos palabras. Finalmente, Word Joiner (U+2060) inhibe los saltos de línea y tampoco involucra ninguno de los espacios en blanco producidos por un avance de línea de base.

Otros separadores

Estos proporcionan a Unicode separadores de línea y párrafo nativos independientes de los caracteres de control ASCII codificados heredados, como retorno de carro (U+000A), avance de línea (U+000D) y siguiente línea (U+0085). Unicode no proporciona otros caracteres de control de formato ASCII que presumiblemente no forman parte del modelo de procesamiento de texto plano Unicode. Estos caracteres de control de formato heredados incluyen Tabulación (U+0009), Tabulación de líneas o Tabulación vertical (U+000B) y Avance de página (U+000C), que también se considera un salto de página.

Espacios

El carácter de espacio (U+0020) que normalmente se ingresa con la barra espaciadora de un teclado sirve semánticamente como separador de palabras en muchos idiomas. Por motivos heredados, el UCS también incluye espacios de distintos tamaños que son equivalentes de compatibilidad para el carácter de espacio. Si bien estos espacios de ancho variable son importantes en tipografía, el modelo de procesamiento Unicode exige que dichos efectos visuales sean manejados mediante texto enriquecido, marcado y otros protocolos similares. Se incluyen en el repertorio Unicode principalmente para manejar la transcodificación de ida y vuelta sin pérdidas desde otras codificaciones de conjuntos de caracteres. Estos espacios incluyen:

  1. En Quad (U+2000)
  2. Em Quad (U+2001)
  3. En el espacio (U+2002)
  4. Em Espacio (U+2003)
  5. Espacio tres por em (U + 2004)
  6. Espacio cuatro por em (U + 2005)
  7. Espacio seis por em (U + 2006)
  8. Espacio Figura (U+2007)
  9. Espacio de puntuación (U+2008)
  10. Espacio delgado (U+2009)
  11. Espacio para el cabello (U+200A)
  12. Espacio Matemático Medio (U+205F)

Aparte del espacio ASCII original, los demás espacios son todos caracteres de compatibilidad. En este contexto, esto significa que efectivamente no añaden contenido semántico al texto, sino que proporcionan control de estilo. Dentro de Unicode, este control de estilo no semántico a menudo se denomina texto enriquecido y está fuera del alcance de los objetivos de Unicode. En lugar de utilizar diferentes espacios en diferentes contextos, este estilo debería manejarse mediante un software de diseño de texto inteligente.

Otros tres separadores de palabras específicos del sistema de escritura son:

Caracteres de control de salto de línea

Varios caracteres están diseñados para ayudar a controlar los saltos de línea, ya sea desalentándolos (caracteres sin saltos) o sugiriendo saltos de línea como el guión suave (U+00AD) (a veces llamado "guión tímido"). Estos personajes, aunque diseñados para el estilo, probablemente sean indispensables para los intrincados tipos de saltos de línea que hacen posible.

Inhibición de rotura
  1. Guión sin separación (U+2011)
  2. Espacio sin descanso (U+00A0)
  3. Delimitador de marca tibetana Tsheg Bstar (U+0F0C)
  4. Espacio estrecho sin interrupciones (U+202F)

Los caracteres que inhiben la interrupción deben ser equivalentes a una secuencia de caracteres incluida en Word Joiner U+2060. Sin embargo, el Word Joiner se puede agregar antes o después de cualquier carácter que permita un salto de línea para inhibir dicho salto de línea.

Habilitación de pausa
  1. Guión suave (U+00AD)
  2. Marca tibetana intersilábica Tsheg (U+0F0B)
  3. Espacio de ancho cero (U+200B)

Tanto los caracteres que inhiben como los que permiten la interrupción participan con otros caracteres de puntuación y espacios en blanco para permitir que los sistemas de imágenes de texto determinen los saltos de línea dentro del algoritmo de ruptura de línea Unicode. [8]

Tipos de punto de código

Todos los puntos de código a los que se les da algún tipo de propósito o uso se consideran puntos de código designados. De éstos, podrán ser asignados a un carácter abstracto, o de otro modo designados para algún otro fin.

personajes asignados

La mayoría de los puntos de código en uso real se han asignado a caracteres abstractos. Esto incluye caracteres de uso privado, que aunque no están designados formalmente por el estándar Unicode para un propósito particular, requieren que el remitente y el destinatario hayan acordado de antemano cómo deben interpretarse para que se produzca un intercambio de información significativo.

Personajes de uso privado

La UCS incluye 137,468 caracteres de uso privado, que son puntos de código para uso privado distribuidos en tres bloques diferentes, cada uno llamado Área de Uso Privado (PUA). El estándar Unicode reconoce los puntos de código dentro de las PUA como códigos de caracteres Unicode legítimos, pero no les asigna ningún carácter (abstracto). En cambio, los individuos, las organizaciones, los proveedores de software, los proveedores de sistemas operativos, los proveedores de fuentes y las comunidades de usuarios finales son libres de utilizarlos como mejor les parezca. Dentro de los sistemas cerrados, los caracteres de la PUA pueden operar sin ambigüedades, lo que permite que dichos sistemas representen caracteres o glifos no definidos en Unicode. [9] En los sistemas públicos su uso es más problemático, ya que no existe un registro ni forma de evitar que varias organizaciones adopten los mismos puntos de código para diferentes propósitos. Un ejemplo de tal conflicto es el uso de U+F8FF por parte de Apple para el logotipo de Apple , versus el uso de U+F8FF por parte del Registro Unicode de ConScript como glifo de momificación klingon en la escritura klingon . [10]

El plano multilingüe básico (plano 0) contiene 6400 caracteres de usuario privado en el área de uso privado PUA del mismo nombre , que va desde U+E000 hasta U+F8FF. Los planos de uso privado , el plano 15 y el plano 16, tienen cada uno sus propias aplicaciones no deseadas de 65,534 caracteres de uso privado (los dos últimos puntos de código de cada avión no son caracteres). Se trata del Área de Uso Privado Suplementario-A , que va de U+F0000 a U+FFFFD, y el Área de Uso Privado Suplementario-B , que va de U+100000 a U+10FFFD.

Las PUA son un concepto heredado de ciertos sistemas de codificación asiáticos. Estos sistemas tenían áreas de uso privado para codificar lo que los japoneses llaman gaiji (caracteres raros que normalmente no se encuentran en las fuentes) en formas específicas de la aplicación.

sustitutos

La UCS utiliza sustitutos para abordar caracteres fuera del plano multilingüe básico inicial sin recurrir a representaciones de palabras de más de 16 bits. [11] Hay 1024 sustitutos "altos" (D800-DBFF) y 1024 sustitutos "bajos" (DC00-DFFF). Al combinar un par de sustitutos, se pueden abordar los caracteres restantes en todos los demás planos (1024 × 1024 = 1048576 puntos de código en los otros 16 planos). En UTF-16 , siempre deben aparecer en pares, como un sustituto alto seguido de un sustituto bajo, por lo que se utilizan 32 bits para indicar un punto de código.

Un par sustituto denota el punto del código.

10000 16 + ( H - D800 16 ) × 400 16 + ( L - DC00 16 )

donde H y L son los valores numéricos de los sustitutos alto y bajo respectivamente. [12]

Dado que los valores sustitutos altos en el rango DB80-DBFF siempre producen valores en los planos de uso privado, el rango sustituto alto se puede dividir en sustitutos altos (normales) (D800-DB7F) y "sustitutos de uso privado alto" (DB80-DBFF) .

Los puntos aislados del código sustituto no tienen una interpretación general; en consecuencia, no se proporcionan tablas de códigos de caracteres ni listas de nombres para este rango. En el lenguaje de programación Python , se utilizan códigos sustitutos individuales para incrustar bytes no decodificables en cadenas Unicode. [13]

No personajes

El término sin guión "sin carácter" se refiere a 66 puntos de código (etiquetados <not a character>) reservados permanentemente para uso interno y, por lo tanto, se garantiza que nunca se asignarán a un carácter. [14] Cada uno de los 17 planos tiene sus dos puntos de código finales reservados como no caracteres. Entonces, los no caracteres son: U+FFFE y U+FFFF en el BMP, U+1FFFE y U+1FFFF en el Plano 1, y así sucesivamente, hasta U+10FFFE y U+10FFFF en el Plano 16, para un total de 34 códigos. puntos. Además, hay un rango contiguo de otros 32 puntos de código sin caracteres en el BMP: U+FDD0..U+FDEF. Por lo tanto, las implementaciones de software pueden utilizar estos puntos de código para uso interno. Un ejemplo particularmente útil de un no carácter es el punto de código U+FFFE. Este punto de código tiene la secuencia de bytes UTF-16/UCS-2 inversa de la marca de orden de bytes (U+FEFF). Si una secuencia de texto contiene este no carácter, es una buena indicación de que el texto se ha interpretado con el endianismo incorrecto .

Las versiones del estándar Unicode de 3.1.0 a 6.3.0 afirmaban que los caracteres que no son caracteres "nunca deberían intercambiarse". El corrigendum n.º 9 del estándar declaró más tarde que esto estaba dando lugar a un "rechazo excesivo inapropiado", aclarando que "[los no caracteres] no son ilegales en el intercambio ni causan texto Unicode mal formado", y eliminando el reclamo original.

Puntos de código reservado

Todos los demás puntos de código, que no estén designados, se consideran reservados. Estos puntos de código pueden asignarse para un uso particular en versiones futuras del estándar Unicode.

Personajes, grupos de grafemas y glifos.

Mientras que muchos otros conjuntos de caracteres asignan un carácter para cada posible representación de glifo del carácter, Unicode busca tratar los caracteres por separado de los glifos. Esta distinción no siempre es inequívoca; sin embargo, algunos ejemplos ayudarán a ilustrar la distinción. A menudo se pueden combinar dos caracteres tipográficamente para mejorar la legibilidad del texto. Por ejemplo, la secuencia de tres letras "ffi" puede tratarse como un solo glifo. Otros conjuntos de caracteres suelen asignar un punto de código a este glifo además de las letras individuales: "f" e "i".

Además, Unicode aborda las letras diacríticas modificadas como caracteres separados que, cuando se representan, se convierten en un solo glifo. Por ejemplo, una "o" con diéresis : " ö ". Tradicionalmente, otros conjuntos de caracteres asignaban un punto de código de carácter único para cada letra diacrítica modificada utilizada en cada idioma. Unicode busca crear un enfoque más flexible al permitir combinar caracteres diacríticos con cualquier letra. Esto tiene el potencial de reducir significativamente la cantidad de puntos de código activos necesarios para el conjunto de caracteres. Como ejemplo, considere un idioma que usa la escritura latina y combina la diéresis con las letras mayúsculas y minúsculas "a", "o" y "u". Con el enfoque Unicode, solo es necesario agregar el carácter diacrítico de diéresis al conjunto de caracteres para usar con las letras latinas: "a", "A", "o", "O", "u" y "U": siete personajes en total. Un conjunto de caracteres heredado necesita agregar seis letras precompuestas con diéresis además de los seis puntos de código que utiliza para las letras sin diéresis: doce puntos de código de caracteres en total.

Caracteres de compatibilidad

UCS incluye miles de caracteres que Unicode designa como caracteres de compatibilidad. Estos son caracteres que se incluyeron en UCS para proporcionar puntos de código distintos para caracteres que otros conjuntos de caracteres diferencian, pero que no se diferenciarían en el enfoque Unicode para caracteres.

La razón principal de esta diferenciación fue que Unicode hace una distinción entre caracteres y glifos. Por ejemplo, cuando se escribe inglés en estilo cursivo , la letra "i" puede adoptar diferentes formas, ya sea que aparezca al principio de una palabra, al final de una palabra, en la mitad de una palabra o de forma aislada. Los idiomas como el árabe escritos en escritura árabe siempre están en cursiva. Cada letra tiene muchas formas diferentes. UCS incluye 730 caracteres en formato árabe que se descomponen en solo 88 caracteres árabes únicos. Sin embargo, estos caracteres árabes adicionales se incluyen para que el software de procesamiento de texto pueda traducir texto de otros conjuntos de caracteres a UCS y viceversa sin pérdida de información crucial para el software que no es Unicode.

Sin embargo, para UCS y Unicode en particular, el enfoque preferido es codificar o asignar siempre esa letra al mismo carácter sin importar dónde aparezca en una palabra. Luego, las distintas formas de cada letra se determinan mediante los métodos del software de diseño de texto y fuente. De esta forma, la memoria interna de los caracteres permanece idéntica independientemente de dónde aparezca el carácter en una palabra. Esto simplifica enormemente la búsqueda, clasificación y otras operaciones de procesamiento de texto.

Propiedades de los personajes

Cada carácter en Unicode está definido por un conjunto grande y creciente de propiedades. La mayoría de estas propiedades no forman parte del conjunto de caracteres universal. Las propiedades facilitan el procesamiento de texto, incluida la recopilación o clasificación de texto, la identificación de palabras, oraciones y grafemas, la representación o visualización de texto, etc. A continuación se muestra una lista de algunas de las propiedades principales. Hay muchos otros documentados en la base de datos de caracteres Unicode. [15]

Unicode proporciona una base de datos en línea [21] para consultar interactivamente todo el repertorio de caracteres Unicode según las distintas propiedades.

Ver también

Referencias

  1. ^ "El estándar Unicode". El Consorcio Unicode . Consultado el 9 de agosto de 2016 .
  2. ^ "Hojas de ruta hacia Unicode". El Consorcio Unicode . Consultado el 15 de septiembre de 2021 .
  3. ^ "Preguntas frecuentes: personajes, no personajes y centinelas de uso privado". www.unicode.org . Consultado el 24 de octubre de 2023 .
  4. ^ "Sección 2.13: Caracteres especiales" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  5. ^ "Sección 4.12: Personajes con propiedades inusuales" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  6. ^ "Sección 6.2: Puntuación general" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  7. ^ "UTN n.º 2: un método general para representar marcas combinadas". www.unicode.org . Consultado el 16 de diciembre de 2020 .
  8. ^ "UAX n.° 14: algoritmo de ruptura de línea Unicode". El Consorcio Unicode. 2016-06-01 . Consultado el 9 de agosto de 2016 .
  9. ^ "Sección 23.5: Caracteres de uso privado" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  10. ^ Michael Everson (15 de enero de 2004). "Klingon: U+F8D0 - U+F8FF".
  11. ^ "Sección 23.6: Área de sustitutos" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  12. ^ Kaplan, Michael. "Soporte sustituto en productos de Microsoft".
  13. ^ contra Löwis, Martín (22 de abril de 2009). "Bytes no decodificables en interfaces de caracteres del sistema". Propuestas de mejora de Python . PEP 383 . Consultado el 9 de agosto de 2016 .
  14. ^ "Sección 23.7: No personajes" (PDF) . El estándar Unicode . El Consorcio Unicode. Septiembre de 2022.
  15. ^ "Base de datos de caracteres Unicode". El Consorcio Unicode . Consultado el 9 de agosto de 2016 .
  16. ^ Freytag, Asmus; McGowan, Rick; Whistler, Ken. "Nota técnica de Unicode n.º 27: anomalías conocidas en los nombres de caracteres Unicode". Consorcio Unicode.
  17. ^ No es el glifo representativo oficial de Unicode, sino simplemente un glifo representativo. Para ver el glifo representativo oficial de Unicode, consulte las tablas de códigos.
  18. ^ "Gráficos de códigos de caracteres". El Consorcio Unicode . Consultado el 9 de agosto de 2016 .
  19. ^ "UAX n.º 44: base de datos de caracteres Unicode". Valores de categoría generales . El Consorcio Unicode. 2014-06-05 . Consultado el 9 de agosto de 2016 .
  20. ^ Davis, marca; Iancu, Laurențiu; Whistler, Ken. "Tabla 9. Tabla de propiedades § PropList.txt". Anexo 44 del estándar Unicode: base de datos de caracteres Unicode . Consorcio Unicode.
  21. ^ "Utilidades Unicode: índice de propiedades de caracteres". El Consorcio Unicode . Consultado el 9 de junio de 2015 .

enlaces externos