stringtranslate.com

Propiedad de carácter Unicode

El estándar Unicode asigna varias propiedades a cada carácter y punto de código Unicode . [1] [2]

Las propiedades se pueden utilizar para manejar caracteres (puntos de código) en procesos, como en saltos de línea, dirección de script de derecha a izquierda o aplicación de controles. Algunas "propiedades de caracteres" 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 caracteres se describen en el Anexo estándar n.° 44. [2]

Las propiedades tienen niveles de fuerza: 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]

Elementos semánticos

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 en mayúsculas]

La propiedad entre 'alias' y 'mayúsculas' está obsoleta y ahora es nula para todos los caracteres Unicode.

Código

La primera propiedad es el punto de código hexadecimal .

Nombre y alias

A cada carácter Unicode se le asigna un nombre único (na). [1] El nombre se compone de letras mayúsculas A–Z, dígitos 0–9, guión-menos y espacio . Se excluyen algunas secuencias: 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 sea único dentro de Unicode y se puede usar 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 " cjk unified ideograph - hhhh ". Por ejemplo, U+4E00 CJK UNIFIED IDEOGRAPH-4E00 . Los caracteres de formato también se nombran: U+00A0 NO-BREAK SPACE .  

Las siguientes clases de puntos de código no tienen un Nombre (na=""): Controles (Categoría general: Cc), Uso privado (Co), Sustituto (Cs), No 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>, <reserved>, <noncharacter- hhhh >, <private-use- hhhh > o <surrogate>. Dado que estas etiquetas contienen corchetes <>, nunca pueden aparecer como un Nombre, lo que evita confusiones.

Nombres de la versión 1.0

En la versión 2.0 de Unicode, se cambiaron muchos nombres. A partir de entonces entró en vigor la regla de que "un nombre nunca cambiará", incluido el uso estricto (normativo) de los nombres alias. Los nombres en desuso de la versión 1.0 se trasladaron a la propiedad Alias ​​para proporcionar cierta compatibilidad con versiones anteriores.

Alias ​​del nombre del personaje

A partir de la versión 2.0 de Unicode, el nombre publicado para un punto de código nunca cambiará. Por lo tanto, en caso de que el nombre de un carácter esté mal escrito o si el nombre del carácter es completamente incorrecto o muy engañoso, se puede asignar un alias de nombre de carácter formal al carácter, y las aplicaciones pueden usar este alias en lugar del nombre de carácter defectuoso real. [1] Por ejemplo, U+FE18FORMA DE PRESENTACIÓN PARA BRAZO LENTICULAR BLANCO DERECHO VERTICAL tiene el alias de nombre de carácter " FORMA DE PRESENTACIÓN PARA BRAZO LENTICULAR BLANCO DERECHO VERTICAL " para mitigar la ortografía incorrecta de "bracket" como "brakcet" [ sic ] en el nombre de carácter real; U+A015YI SÍLABA WU tiene el alias de nombre de carácter "MARCA DE ITERACIÓN DE SÍLABA YI" porque, a diferencia del nombre del carácter, no tiene un valor silábico fijo.

Además de los alias de nombres de caracteres, que son correcciones a nombres de caracteres defectuosos, a algunos caracteres se les asignan alias, que son nombres alternativos o abreviaturas. En el estándar Unicode se definen cinco tipos de alias de nombres de caracteres:

Todos los alias de nombres de caracteres formales siguen las reglas para nombres de caracteres permitidos y se garantiza que son únicos tanto dentro del alias de nombre de carácter como dentro de los espacios de nombres de caracteres (por este motivo, el nombre ISO 6429 "BELL" no está definido como un alias para U+0007 <control-0007> porque U+1F514 se llama "BELL"). [1]

A partir de la versión 16.0 de Unicode, se definen treinta y cinco alias de nombres de caracteres formales como correcciones para nombres de caracteres defectuosos. [5]

Además de estos nombres normativos, en las tablas de códigos Unicode se pueden mostrar nombres informales . Se trata de otros nombres de uso común para un carácter y no tienen la misma restricción de caracteres. No se garantiza que estos nombres informales sean únicos y pueden modificarse o eliminarse en versiones posteriores del estándar.

Categoría general

A cada punto de código se le asigna un valor para la categoría general. Esta es una de las propiedades de caracteres que también se definen para los puntos de código no asignados y los puntos de código que se definen como "no caracteres".

Puntuación

Los caracteres tienen propiedades independientes para indicar que son un carácter de puntuación . Todas las propiedades tienen valores Sí/No : Dash , Quotation_Mark , Sentence_Terminal , Terminal_Punctuation . La propiedad Puntuación se refiere a los caracteres que se utilizan para dividir o estructurar el texto y se clasifican en diferentes tipos según sus funciones. Unicode asigna categorías específicas a estos caracteres de puntuación.

Espacio en blanco

El espacio en blanco es un concepto que se utiliza con frecuencia para designar un efecto tipográfico. Básicamente, abarca caracteres invisibles que tienen un efecto de espaciado en el texto representado. Incluye espacios , tabulaciones y controles de formato de nueva línea. En Unicode, este tipo de caracteres tiene la propiedad "WSpace=yes". En la versión 16.0, hay 25 caracteres de espacio en blanco.


Caja

El valor de mayúsculas y minúsculas es normativo en Unicode. Se aplica a los alfabetos con letras mayúsculas y minúsculas. La diferencia entre mayúsculas y minúsculas se da en los alfabetos adlam, armenio, cherokee, copto, cirílico, deseret, garay, glagolítico, griego, khutsuri y mkhedruli georgiano, latín, medefaidrin, húngaro antiguo, osage, vithkuqi y warang citi.

(superior, inferior, título, plegable, tanto simple como completo)

Otras características generales

Ideográfico, alfabético, no característico.

Combinando clases

Algunos códigos comunes:

0 = espaciado entre letras, símbolos o modificadores (por ejemplo, a, (, ʰ)
1 = superposición
6 = Lectura Han (marcas diacríticas de lectura CJK)
7 = nukta ( nukta diacrítico en escrituras brahmicas )
8 = signos sonoros de kana
9 = virama

10–199 = varias clases de posición fija

Marcas que se adhieren a la letra base:

200 = adjunto en la parte inferior izquierda
202 = se adjunta directamente debajo (p. ej. cedilla en ç)
204 = adjunto en la parte inferior derecha
208 = adjunto a la izquierda
210 = adjunto a la derecha
212 = adjunto en la parte superior izquierda
214 = adjunto directamente encima
216 = adjunto en la parte superior derecha

Marcas que no se adhieren a la letra base:

218 = abajo a la izquierda
220 = directamente debajo (por ejemplo, anillo en n̥)
222 = abajo a la derecha
224 = izquierda
226 = correcto
228 = arriba a la izquierda
230 = arriba (p.ej. acento agudo en á)
232 = arriba a la derecha
233 = doble abajo (subtiende dos bases)
234 = doble arriba (extiende dos bases)
240 = iota subíndice (solo ese diacrítico griego)

Escritura bidireccional

Hay seis propiedades de caracteres que 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 principales características de Unicode es la compatibilidad con la visualización de texto bidireccional ( Bidi ) de derecha a izquierda (R-to-L) y de izquierda a derecha (L-to-R). El algoritmo bidireccional Unicode UAX9 [19] describe el proceso de presentación de texto con direcciones de escritura alteradas. Por ejemplo, permite una cita en hebreo en un texto en inglés. El Bidi_Character_Type marca el comportamiento de un carácter en la 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 a la escritura bidireccional.

Cada punto de código tiene una propiedad denominada Bidi_Class , que define su comportamiento en un texto bidireccional tal como lo interpreta el algoritmo:

Tipo de carácter bidireccional ( propiedad de carácter Unicode Bidi_Class ) [1]

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=Yes: ALM, FSI, LRE, LRI, LRM, LRO, PDF, PDI, RLE, RLI, RLM y RLO como se nombra en la tabla. Estos son caracteres de control de formato invisibles, solo utilizados por el algoritmo y sin efecto fuera del formato bidireccional. [19] A pesar del nombre, son caracteres de formato, no caracteres de control, y tienen la categoría general Otro, formato (Cf) en la definición Unicode.

Básicamente, el algoritmo determina una secuencia de caracteres con el mismo tipo de dirección fuerte (R-a-L o L-a-R), teniendo en cuenta la anulación de los controles Bidi especiales. A las cadenas de números (tipos débiles) se les asigna una dirección de acuerdo con su entorno fuerte, al igual que a los caracteres neutrales. Finalmente, los caracteres se muestran según la dirección de una cadena.

Hay dos propiedades de caracteres que son relevantes para determinar una imagen reflejada de un glifo en un texto bidireccional: Bidi_Mirrored=Yesindica que el glifo debe reflejarse cuando se escribe de derecha a izquierda. La propiedad Bidi_Mirroring_Glyph=U+hhhhpuede entonces señalar el carácter reflejado. Por ejemplo, los paréntesis ( , ) se reflejan de esta manera. Dar forma a las escrituras cursivas, como la árabe, y reflejar glifos que tienen una dirección no es parte del algoritmo.

Valores numéricos y tipos

Decimal

Los caracteres se clasifican con un tipo numérico . [1] Los caracteres como fracciones, subíndices, superíndices, números romanos, numeradores de moneda, números encerrados en un círculo y dígitos específicos de la escritura son de tipo numérico. Tienen un valor numérico que puede ser decimal, incluidos 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 tienen un valor numérico se dividen 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. Solo los caracteres que forman parte de un rango codificado contiguo de 0 a 9 tienen el tipo numérico decimal. Otros dígitos, como los superíndices, tienen el tipo numérico dígito. Todos los caracteres numéricos, como las fracciones y los números romanos, terminan con el tipo "numérico". El efecto deseado es que un analizador simple pueda usar estos valores numéricos decimales, sin distraerse con, por ejemplo, un superíndice numérico o una fracción. Ochenta y tres ideogramas CJK que representan un número, incluidos los utilizados para contabilidad, se escriben como numéricos.

Por otra parte, los caracteres que podrían tener un valor numérico como segundo significado siguen estando marcados como de tipo numérico None 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 (tipo None ) y no tienen valor numérico.

Dígitos hexadecimales

Los caracteres hexadecimales son aquellos que se encuentran en la serie con valores hexadecimales 0...9ABCDEF (dieciséis caracteres, valor decimal 0-15). La propiedad de carácter Hex_Digit se establece en Sí cuando un carácter se encuentra en una de estas series:

Cuarenta y cuatro caracteres están marcados como Hex_Digit . Los del bloque de latín básico también están marcados como ASCII_Hex_Digit .

Unicode no tiene caracteres separados para los valores hexadecimales. Una consecuencia es que, cuando se utilizan caracteres regulares, no es posible determinar si se pretende un valor hexadecimal, o incluso si se pretende un valor en absoluto. Esto se debe determinar 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.

Bloquear

Un bloque es un rango de puntos de código contiguos y 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 reservados, no asignados, etc. Cada carácter asignado tiene un único valor de "nombre de bloque" de los 338 nombres asignados a partir de la versión 16.0 de Unicode. Los puntos de código no asignados fuera de un bloque existente tienen el valor predeterminado "No_block".

Guion

Cada carácter asignado puede tener un único valor 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, tal como está disponible en ISO 15924, que se asigna a un sistema de escritura . Aparte de cuando se describe el contexto y el uso de un script, Unicode no utiliza una conexión entre un script y los idiomas que lo utilizan. Por lo tanto, "hebreo" se refiere al script hebreo, no al idioma hebreo.

El código especial Zyyy para "Común" permite un valor único para un carácter que se utiliza en múltiples escrituras. 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 anteriormente utilizaba el código privado Qaai para este propósito). El código Zzzz "Desconocido" se utiliza para todos los caracteres que no pertenecen a una escritura (es decir, el valor predeterminado), como símbolos y caracteres de formato. En general, los caracteres de una sola escritura pueden estar dispersos en varios bloques, como los caracteres latinos . Y al revés también: pueden estar presentes varias escrituras en un solo bloque, por ejemplo, el bloque Símbolos similares a letras 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 script ISO existentes "Zmth" (notación matemática), "Zsym" (símbolo) y "Zsye" (símbolo, variante de emoji) no se utilizan en Unicode. La propiedad "Script" también está en blanco para los puntos de código que no son un carácter tipográfico, 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 MAYÚSCULA LATINA A , y U+05D0 א LETRA HEBREA ALEF .

Propiedades de normalización

Descomposiciones, tipo de descomposición, clase de combinación canónica, exclusiones de composición y más.

Edad

Age es la versión del estándar en la que se designó por primera vez el punto de código. El número de versión se abrevia con 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. Según las versiones, Age puede ser del 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, 15.1 y 16.0. [21] Los valores largos para Edad comienzan con una V y utilizan un guión bajo en lugar de un punto: V1_1, por ejemplo. [2] Los puntos de código sin un valor de edad asignado específicamente tienen el valor "NA", con la forma larga "Sin asignar".

Obsoleto

Una vez que se ha definido un carácter, no se eliminará ni se reasignará. [22] Sin embargo, un carácter puede quedar obsoleto , lo que significa que "se desaconseja enérgicamente su uso". [23] A partir de la versión 15.1 de Unicode, los siguientes quince caracteres están obsoletos: [24]

Límites

El estándar Unicode especifica las siguientes propiedades relacionadas con los límites:

Nombre de alias

Unicode puede asignar nombres de alias a los puntos de código. Estos nombres son únicos respecto de todos los nombres (incluidos los normales), por lo que se pueden utilizar como identificadores. Existen cinco posibles motivos para añadir un alias:

1. Abreviatura
Abreviaturas o acrónimos comunes para códigos de control, caracteres de formato, espacios y selectores de variaciones.
Por ejemplo, U+00A0 NO-BREAK SPACE tiene el alias NBSP . A veces se presenta en un cuadro:  
PNBSP
.
2. Control
Los nombres ISO 6429 para las funciones de control C0 y C1 y otros nombres similares que aparecen comúnmente se agregan como un alias al carácter.
Por ejemplo, U+0008 <control-0008> tiene el alias BACKSPACE .
3. Corrección
Esta es una corrección de un "problema grave" en el nombre del personaje principal, generalmente un error.
Por ejemplo, U+2118SCRIPT CAPITAL P es en realidad una p minúscula , por lo que se le da el nombre de alias FUNCIÓN ELÍPTICA DE WEIERSTRASS : "en realidad, esto tiene la forma de una p caligráfica minúscula, a pesar de su nombre, y a través del alias se agrega la ortografía correcta". En las descripciones, con el símbolo ※ precedente .
4. Alternativa
Un nombre alternativo ampliamente utilizado para un personaje.
Ejemplo: U+FEFF ESPACIO SIN INTERRUPCIÓN DE ANCHO CERO tiene MARCA DE ORDEN DE BYTES alternativa .
5. Figmento
Varias etiquetas documentadas para puntos de código de control C1 que en realidad nunca fueron aprobados en ninguna norma ( figment = fingido, en ficción).
Por ejemplo, U+0099 <control-0099> tiene el alias de figment SINGLE GRAPHIC CHARACTER INTRODUCER . Este nombre es un concepto arquitectónico de los primeros borradores de ISO/IEC 10646-1, pero nunca fue aprobado ni estandarizado.

Enlaces externos

Referencias

  1. ^ abcde «El estándar Unicode versión 16». El Consorcio Unicode. Septiembre de 2024. Consultado el 13 de septiembre de 2024 .
  2. ^ abc "Anexo n.° 44 del estándar Unicode: Base de datos de caracteres Unicode". Unicode . 27 de agosto de 2024.
  3. ^ "Anexo n.° 44 del estándar Unicode: Base de datos de caracteres Unicode, 4.2.3 Rangos de puntos de código". Unicode . 27 de agosto de 2024.
  4. ^ Datos Unicode.txt
  5. ^ "UCD: alias de nombres". Base de datos de caracteres Unicode . Consorcio Unicode. 24 de abril de 2024.
  6. ^ "Estándares de diseño de personajes: personajes espaciales". Estándares de diseño de personajes . Microsoft . 1998–1999. Archivado desde el original el 14 de marzo de 2010 . Consultado el 18 de mayo de 2009 .
  7. ^ El estándar Unicode 5.0, edición impresa, pág. 205; también disponible en «Capítulo 6: sistemas de escritura y puntuación» (PDF) . El estándar Unicode 5.0, edición electrónica. Consorcio Unicode . 14 de julio de 2006. pág. 11 (205) . Consultado el 22 de diciembre de 2022 .
  8. ^ "Puntuación general" (PDF) . El estándar Unicode 5.1 . Unicode Inc . 1991–2008 . Consultado el 13 de mayo de 2009 .
  9. ^ Sargent, Murray III (29 de agosto de 2006). "Unicode Nearly Plain Text Encoding of Mathematics (Version 2)" (Codificación de texto casi sin formato Unicode de matemáticas (versión 2)). Nota técnica Unicode n.° 28. Unicode Inc. , págs. 19-20 . Consultado el 19 de mayo de 2009 .
  10. ^ Gillam, Richard (2002). Unicode desmitificado: una guía práctica para programadores sobre el estándar de codificación . Addison-Wesley. ISBN 0-201-70052-2.
  11. ^ ab Hickson, Ian . "12.5 Referencias de caracteres con nombre". Estándar HTML . WHATWG .
  12. ^ Wolfram . "\[NegativeThickSpace]". Documentación del lenguaje Wolfram .
  13. ^ Wolfram . "\[EspacioMedioNegativo]". Documentación del lenguaje Wolfram .
  14. ^ Wolfram . "\[NegativeThinSpace]". Documentación del lenguaje Wolfram .
  15. ^ Wolfram . "\[NegativeVeryThinSpace]". Documentación del lenguaje Wolfram .
  16. ^ Faltstrom, P., ed. (agosto de 2010). "Zero Width Non-Joiner". Puntos de código Unicode y nombres de dominio internacionalizados para aplicaciones (IDNA). IETF . sec. A.1. doi : 10.17487/RFC5892 . RFC 5892 . Consultado el 4 de septiembre de 2019 .
  17. ^ Faltstrom, P., ed. (agosto de 2010). "Zero Width Joiner". Puntos de código Unicode y nombres de dominio internacionalizados para aplicaciones (IDNA). IETF . sec. A.2. doi : 10.17487/RFC5892 . RFC 5892 . Consultado el 4 de septiembre de 2019 .
  18. ^ "Anexo n.° 44 del estándar Unicode, base de datos de caracteres Unicode".
  19. ^ ab "Anexo n.° 9 del estándar Unicode: algoritmo bidireccional Unicode". El estándar Unicode . 2 de septiembre de 2024.
  20. ^ "Anexo n.° 24 del estándar Unicode: propiedad de escritura Unicode". El estándar Unicode . 2024-07-31.
  21. ^ "UCD: Edad derivada". Base de datos de caracteres Unicode . Consorcio Unicode. 30 de abril de 2024.
  22. ^ "Políticas de estabilidad de codificación de caracteres Unicode". Unicode . Consorcio Unicode . 2024-01-09 . Consultado el 2024-01-13 . Una vez que se codifica un carácter, no se moverá ni se eliminará.
  23. ^ "El estándar Unicode, carácter D13 en desuso". 2024 . Consultado el 13 de septiembre de 2024 .
  24. ^ "PropList-16.0.0.txt". Unicode . Consorcio Unicode . 2024-05-31 . Consultado el 2024-09-13 .
  25. ^ "Capítulo 23.3: Caracteres de formato obsoletos". 2024 . Consultado el 13 de septiembre de 2024 .
  26. ^ "23.9: Caracteres de etiqueta, uso obsoleto para el etiquetado de idiomas". 2024 . Consultado el 13 de septiembre de 2024 .