El estándar Unicode asigna varias propiedades a cada carácter Unicode y punto de código . [1] [2]
Las propiedades se pueden utilizar para manejar caracteres (puntos de código) en procesos, como saltos de línea, dirección de secuencia de comandos de derecha a izquierda o aplicación de controles. Algunas "propiedades de carácter" también se definen para puntos de código que no tienen ningún carácter asignado y puntos de código que están etiquetados como "<no es un carácter>". Las propiedades de los caracteres se describen en el Anexo Estándar #44. [2]
Las propiedades tienen niveles de contundencia: normativa, informativa, contributiva o provisional. Para simplificar la especificación, se puede asignar una propiedad de carácter especificando un rango continuo de puntos de código que tengan la misma propiedad. [3]
Las propiedades se muestran en el siguiente orden: [4]
[código];[nombre];[gc];[cc];[bc];[descomposición];[nv-dec];[nv-dig];[nv-num];[bm];[alias]; ;[mayúsculas];[minúsculas];[título]
La propiedad entre 'alias' y 'mayúsculas' está obsoleta y ahora es nula para todos los caracteres Unicode.
La primera propiedad es el punto del código hexadecimal .
A un carácter Unicode se le asigna un nombre único (na). [1] El nombre se compone de letras mayúsculas de la A a la Z, dígitos del 0 al 9, guión menos (-) y espacio (). Algunas secuencias están excluidas: no se permiten nombres que comiencen con un espacio o guión, nombres que terminen con un espacio o guión, espacios o guiones repetidos y espacios después de un guión. Se garantiza que el nombre será único dentro de Unicode y se puede utilizar para identificar un punto de código y su carácter. Los caracteres ideográficos, de los cuales hay decenas de miles, se nombran según el patrón " ideógrafo unificado cjk - hhhh ". Por ejemplo, U+4E00 一 CJK IDEOGRAFO UNIFICADO-4E00 . Los caracteres de formato también tienen nombres: U+00A0 ESPACIO SIN INTERRUPCIÓN .
Las siguientes clases de puntos de código no tienen nombre (na=""): Controles (Categoría general: Cc), Uso privado (Co), Sustituto (Cs), Sin caracteres (Cn) y Reservado (Cn). Se puede hacer referencia a ellos, de manera informal, mediante un metanombre genérico o específico, llamado "Etiquetas de puntos de código": <control>, <control-0088>, <reservado>, <noncharacter- hhhh >, <private-use- hhhh > o <sustituto>. Dado que estas etiquetas contienen corchetes <>, nunca pueden aparecer como Nombre, lo que evita confusiones.
En la versión 2.0 de Unicode, se cambiaron muchos nombres. A partir de entonces entró en vigor la regla "un nombre nunca cambiará", incluido el uso estricto (normativo) de alias. Los nombres de la versión 1.0 en desuso se trasladaron a la propiedad Alias, para proporcionar cierta compatibilidad con versiones anteriores.
A partir de la versión 2.0 de Unicode, el nombre publicado de un punto de código nunca cambiará. Por lo tanto, en caso de que el nombre de un personaje esté mal escrito o si el nombre del personaje es completamente incorrecto o muy engañoso, se puede asignar un alias de nombre de personaje formal al personaje, y las aplicaciones pueden utilizar este alias en lugar del nombre de personaje defectuoso real. . [1] Por ejemplo, U+FE18 ︘ FORMULARIO DE PRESENTACIÓN PARA SOPORTE LENTICULAR BLANCO VERTICAL DERECHO tiene el alias de nombre de carácter "FORMULARIO DE PRESENTACIÓN PARA SOPORTE LENTICULAR BLANCO VERTICAL DERECHO" para mitigar el error ortográfico de "bracket" como "brakcet" en el formato real. Nombre del personaje; U+A015 ꀕ YI SYLLABLE WU tiene el nombre de carácter alias "YI SYLLABLE ITERATION MARK" porque, a diferencia del nombre del carácter, no tiene un valor silábico fijo.
Además de los alias de nombres de personajes, que son correcciones de nombres de personajes defectuosos, a algunos personajes se les asignan alias que son nombres alternativos o abreviaturas. En el estándar Unicode se definen cinco tipos de alias de nombres de personajes:
Todos los alias de nombres de personajes formales siguen las reglas para los nombres de personajes permitidos y se garantiza que serán únicos tanto dentro del alias de nombres de personajes como en los espacios de nombres de nombres de personajes (por esta razón, el nombre ISO 6429 "BELL" no está definido como un alias para U +0007 porque U+1F514 se llama "BELL"). [1]
A partir de la versión 12.1 de Unicode, se definen veintiocho alias de nombres de caracteres formales como correcciones para nombres de caracteres defectuosos. [5] Estos se enumeran a continuación.
Además de estos nombres normativos, es posible que se muestren nombres informales en los cuadros de códigos Unicode. Estos son otros nombres de uso común para un personaje y no tienen la misma restricción de caracteres. No se garantiza que estos nombres informales sean únicos y pueden cambiarse o eliminarse en versiones posteriores del estándar.
A cada punto de código se le asigna un valor para la Categoría general. Esta es una de las propiedades de los caracteres que también se definen para puntos de código no asignados y puntos de código que se definen como "no un carácter".
Los caracteres tienen propiedades separadas para indicar que son caracteres de puntuación . Todas las propiedades tienen valores Sí/No : Dash , Quotation_Mark , Sentence_Terminal , Terminal_Punctuation .
El espacio en blanco es un concepto comúnmente utilizado para un efecto tipográfico. Básicamente cubre caracteres invisibles que tienen un efecto de espaciado en el texto renderizado. Incluye espacios , tabulaciones y controles de formato de nueva línea. En Unicode, dicho carácter tiene la propiedad establecida "WSpace=yes". En la versión 15.1, hay 25 caracteres de espacio en blanco.
El valor del caso es normativo en Unicode. Se refiere a aquellas escrituras con letras mayúsculas (también conocidas como mayúsculas, mayúsculas) y minúsculas (también conocidas como minúsculas, minúsculas). La diferencia de casos se produce en las escrituras adlam, armenia, cherokee, copta, cirílica, deseret, glagolítica, griega, khutsuri y mkhedruli, georgiana, latina, medefaidrin, húngara antigua, osage, vithkuqi y warang citi.
(superior, inferior, título, plegado, tanto simple como completo)
Ideográfico, alfabético, sin carácter.
Algunos códigos comunes:
10–199 = varias clases de posición fija
Marcas que se adjuntan a la letra base:
Marcas que no se adhieren a la letra base:
Seis propiedades de caracteres pertenecen a la escritura bidireccional: Bidi_Class, Bidi_Control, Bidi_Mirrored, Bidi_Mirroring_Glyph, Bidi_Paired_Bracket y Bidi_Paired_Bracket_Type.
Una de las características principales de Unicode es la compatibilidad con la visualización de texto bidireccional ( Bidi ) de derecha a izquierda (R a L) y de izquierda a derecha (L a R). El algoritmo bidireccional Unicode UAX9 [19] describe el proceso de presentación de texto alterando las direcciones de la escritura. Por ejemplo, permite una cita en hebreo en un texto en inglés. Bidi_Character_Type marca el comportamiento de un personaje en escritura direccional. Para anular una dirección, Unicode ha definido caracteres de control de formato especiales ( Bidi-Control ). Estos caracteres pueden imponer una dirección y, por definición, solo afectan la escritura bidireccional.
Cada punto de código tiene una propiedad llamada Bidi_Class . Define su comportamiento en un texto bidireccional según lo interpreta el algoritmo:
En situaciones normales, el algoritmo puede determinar la dirección de un texto mediante esta propiedad de carácter. Para controlar situaciones Bidi más complejas, por ejemplo, cuando un texto en inglés tiene una cita en hebreo, se agregan opciones adicionales a Unicode. Doce caracteres tienen la propiedad Bidi_Control=Sí : ALM, FSI, LRE, LRI, LRM, LRO, PDF, PDI, RLE, RLI, RLM y RLO como se indica en la tabla. Estos son caracteres de control de formato invisibles, utilizados únicamente por el algoritmo y sin ningún efecto fuera del formato bidireccional. [19] A pesar del nombre, son caracteres de formato, no de control, y tienen la categoría General "Otro, formato (Cf)" en la definición de Unicode.
Básicamente, el algoritmo determina una secuencia de caracteres con el mismo tipo de dirección fuerte (de derecha a izquierda o de izquierda a derecha), teniendo en cuenta una anulación por los controles Bidi especiales. A las cadenas numéricas (tipos débiles) se les asigna una dirección de acuerdo con su entorno fuerte, al igual que los caracteres neutrales. Finalmente, los caracteres se muestran según la dirección de una cadena.
Dos propiedades de caracteres son relevantes para determinar una imagen reflejada de un glifo en texto bidireccional: Bidi_Mirrored=Sí indica que el glifo debe reflejarse cuando se escribe de R a L. La propiedad Bidi_Mirroring_Glyph=U+ hhhh puede entonces apuntar al carácter reflejado. Por ejemplo, los corchetes "()" se reflejan de esta manera. Dar forma a escrituras cursivas como el árabe y reflejar glifos que tienen una dirección no forma parte del algoritmo.
Los caracteres se clasifican con un tipo Numérico . [1] Caracteres como fracciones, subíndices, superíndices, números romanos, numeradores de moneda, números entre círculos y dígitos específicos de escritura son de tipo numérico. Tienen un valor numérico que puede ser decimal, incluyendo cero y negativos, o una fracción vulgar. Si no existe dicho valor, como ocurre con la mayoría de los caracteres, el tipo numérico es "Ninguno".
Los caracteres que sí tienen un valor numérico se separan en tres grupos: decimal (De), dígito (Di) y numérico (Nu, es decir, todos los demás). "Decimal" significa que el carácter es un dígito decimal simple. Sólo los caracteres que forman parte de un rango codificado contiguo del 0 al 9 tienen el tipo numérico Decimal. Otros dígitos, como los superíndices, tienen dígitos de tipo numérico. Todos los caracteres numéricos como fracciones y números romanos terminan en el tipo "Numérico". El efecto deseado es que un analizador simple pueda usar estos valores numéricos decimales, sin distraerse, por ejemplo, con un superíndice numérico o una fracción. Ochenta y tres ideogramas CJK que representan un número, incluidos los utilizados para contabilidad, están escritos en forma numérica.
Por otro lado, los caracteres que podrían tener un valor numérico como segundo significado todavía están marcados como tipo numérico "Ninguno" y no tienen valor numérico (""). Por ejemplo, se pueden utilizar letras latinas en la numeración de párrafos como "II.A.1.b", pero las letras "I", "A" y "b" no son numéricas (escriba "Ninguno") y no tienen valor numérico.
Los caracteres hexadecimales son aquellos de la serie con valores hexadecimales del 0 al 9ABCDEF (dieciséis caracteres, valor decimal del 0 al 15). La propiedad del personaje Hex_Digit se establece en Sí cuando un personaje está en una serie de este tipo:
Cuarenta y cuatro caracteres están marcados como Hex_Digit. Los del bloque Latín básico también están marcados como ASCII_Hex_Digit .
Unicode no tiene caracteres separados para valores hexadecimales. Una consecuencia es que cuando se utilizan caracteres normales no es posible determinar si se pretende un valor hexadecimal o incluso si se trata de un valor. Esto debería determinarse en un nivel superior, por ejemplo, anteponiendo "0x" a un número hexadecimal o por contexto. La única característica es que Unicode puede indicar que una secuencia puede o no ser un valor hexadecimal.
Un bloque es un rango contiguo de puntos de código con un nombre único. Se identifica por su primer y último punto de código. Los bloques no se superponen . Un bloque puede contener puntos de código que están reservados, no asignados, etc. Cada carácter asignado tiene un único valor de "nombre de bloque" de los 328 nombres asignados a partir de la versión 15.1 de Unicode. Los puntos de código no asignados fuera de un bloque existente tienen el valor predeterminado "No_block".
Cada carácter asignado puede tener un valor único para su propiedad "Script", que indica a qué script pertenece. [20] El valor es un código de cuatro letras en el rango Aaaa-Zzzz, disponible en ISO 15924, que está asignado a un sistema de escritura . Aparte de describir los antecedentes y el uso de una secuencia de comandos, Unicode no utiliza una conexión entre una secuencia de comandos y los idiomas que utilizan esa secuencia de comandos. Entonces "hebreo" se refiere a la escritura hebrea, no al idioma hebreo.
El código especial Zyyy para "Común" permite un valor único para un carácter que se utiliza en varios scripts. El código Zinh "Escritura heredada", utilizado para combinar caracteres y otros puntos de código de propósito especial, indica que un carácter "hereda" su identidad de escritura del carácter con el que se combina. (Unicode utilizaba anteriormente el código privado Qaai para este propósito). El código Zzzz "Desconocido" se utiliza para todos los caracteres que no pertenecen a un script (es decir, el valor predeterminado), como símbolos y caracteres de formato. En general, los caracteres de una única escritura pueden estar dispersos en varios bloques, como los caracteres latinos . Y también al revés: pueden estar presentes varias escrituras en un solo bloque, por ejemplo, el bloque Símbolos tipo letra contiene caracteres de las escrituras latina, griega y común.
Cuando el Script está "" (en blanco), según Unicode el carácter no pertenece a un script. Esto se aplica a los símbolos, porque los códigos de escritura ISO existentes "Zmth" (notación matemática), "Zsym" (símbolo) y "Zsye" (símbolo, variante emoji) no se utilizan en Unicode. La propiedad "Script" también está en blanco para puntos de código que no son caracteres tipográficos, como controles, sustitutos y puntos de código de uso privado.
Si hay un nombre de alias de script específico en ISO 15924, se utiliza en el nombre del carácter: U+0041 A LETRA A MAYÚSCULA LATINA y U+05D0 א LETRA HEBREA ALEF .
Descomposiciones, tipo de descomposición, clase de combinación canónica, exclusiones de composición y más.
La edad es la versión del Estándar en la que se designó por primera vez el punto del código. El número de versión se reduce a la numeración major.minor, aunque se utilizan números de versión más detallados: las versiones 4.0.0 y 4.0.1 se denominan 4.0 como Age. Dadas las versiones, la edad puede estar en el rango: 1.1, 2.0, 2.1, 3.0, 3.1, 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, 6.0, 6.1, 6.2, 6.3, 7.0, 8.0, 9.0, 10.0, 11.0 , 12,0, 12,1, 13,0, 14,0, 15,0 y 15,1. [21] Los valores largos para Edad comienzan en V y usan un guión bajo en lugar de un punto: V1_1, por ejemplo. [2] Los puntos de código sin un valor de edad específicamente asignado tienen el valor "NA", con la forma larga "Sin asignar".
Una vez que se ha definido un personaje, no será eliminado ni reasignado. [22] Sin embargo, un carácter puede estar obsoleto , lo que significa que "se desaconseja encarecidamente su uso". [23] A partir de la versión 15.1 de Unicode, los siguientes quince caracteres están obsoletos: [24]
El estándar Unicode especifica las siguientes propiedades relacionadas con los límites:
Unicode puede asignar nombres de alias a puntos de código. Estos nombres son únicos entre todos los nombres (incluidos los habituales), por lo que pueden utilizarse como identificador. Hay cinco posibles motivos para agregar un alias:
Una vez codificado un carácter, no se moverá ni eliminará.