stringtranslate.com

Caracteres de control Unicode

Muchos caracteres Unicode se utilizan para controlar la interpretación o visualización del texto, pero estos caracteres en sí no tienen representación visual o espacial. Por ejemplo, el carácter nulo ( U+0000  NULL ) se utiliza en entornos de aplicaciones de programación C para indicar el final de una cadena de caracteres. De esta manera, estos programas solo requieren una única dirección de memoria inicial para una cadena (a diferencia de una dirección inicial y una longitud), ya que la cadena termina una vez que el programa lee el carácter nulo.

En el sentido más estricto, un código de control es un carácter con la categoría general Cc , que comprende los códigos de control C0 y C1 , concepto definido en ISO/IEC 2022 y heredado por Unicode, estando definido el conjunto más común en ISO/IEC 6429. . Los códigos de control se manejan de forma distinta a los caracteres Unicode ordinarios, por ejemplo, al no asignarles nombres de caracteres (aunque sí se les asignan alias formales normativos). [1] En un sentido más amplio, el software también hace referencia a otros caracteres de formato que no son de impresión, como los utilizados en el texto bidireccional , como caracteres de control ; [2] estos se asignan principalmente a la categoría general Cf(formato), utilizada para los efectores de formato introducidos y definidos por el propio Unicode.

Códigos de control de categoría "Cc" (C0 y C1)

Los rangos de códigos de control 0x00–0x1F ("C0") y 0x7F se originan en la edición de 1967 de US-ASCII . El estándar ISO/IEC 2022 (ECMA-35) define métodos de extensión para ASCII, incluido un rango secundario "C1" de códigos de control de 8 bits de 0x80 a 0x9F, equivalente a secuencias de ESC de 7 bits con bytes de 0x40 a 0x5F. En conjunto, los códigos en estos rangos se conocen como códigos de control C0 y C1 . Aunque ISO/IEC 2022 permite la existencia de múltiples conjuntos de códigos de control que especifican diferentes interpretaciones de estos códigos de control, su interpretación más común se especifica en ISO/IEC 6429 (ECMA-48).

La serie de codificaciones ISO/IEC 8859 cumple con ISO/IEC 4873 (ECMA-43) nivel 1, un subconjunto de ISO/IEC 2022 diseñado para codificaciones de caracteres de 8 bits y, por lo tanto, reserva el rango 0x80–0x9F para su uso como no impresión de códigos mediante conjuntos de códigos de control C1 como ISO/IEC 6429. [3] Unicode hereda su primer y segundo bloque (que comprende U+0000 a U+00FF) de ASCII e ISO/IEC 8859-1 , incorporando así los códigos C0 y C1. rangos de códigos de control (U+0000–U+001F, U+007F–U+009F) como categoría general "Cc". No asigna nombres normativos a estos códigos de control, aunque sí les asigna alias normativos. [1]

Los códigos de control de categoría "Cc" pueden servir para una variedad de propósitos, no limitados a efectores de formato: por ejemplo, el conjunto ASCII C0 predeterminado incluye seis efectores de formato ( BS , HT , LF , VT , FF y CR ), diez controles de transmisión, cuatro controles del dispositivo, cuatro separadores de información y otros ocho códigos de control. [4] La mayoría de estos caracteres no desempeñan ningún papel explícito en el manejo de texto Unicode y son utilizados únicamente por protocolos de nivel superior, como los utilizados por los emuladores de terminales . Ciertos caracteres se utilizan comúnmente con fines de formato o centinela :

Unicode solo especifica la semántica para U+0009—U+000D , U+001C—U+001F y U+0085 (los efectores de formato ASCII excepto BS , más los separadores de información ASCII y el C1 NEL ). El resto de los códigos de control "Cc" son transparentes para Unicode y sus significados se dejan a protocolos de nivel superior, aunque se sugiere la interpretación definida en ISO/IEC 6429 como valor predeterminado. [5] Además, ciertos protocolos especializados de nivel superior, como el teletexto transcodificado , pueden incluir una interpretación diferente de todo el rango de códigos de control C0. [6]

Unicode introdujo separadores

En un intento por simplificar los diversos caracteres de nueva línea utilizados en el texto heredado [ cita necesaria ] , Unicode introduce sus propios caracteres de nueva línea para separar líneas o párrafos: SEPARADOR DE LÍNEA U+2028 (abreviado LS o LSEP) y SEPARADOR DE PÁRRAFO U+2029 (abreviado PS o PSEP).

Al igual que CR y LF, LS y PS son efectores de formato de texto; a diferencia de CR y LF, no se tratan como "códigos de control" para propósitos ECMA-35 / ECMA-48Cc (categoría ), sino que tienen una semántica definida completamente por el propio Unicode. Se asignan a categorías Unicode sui generis y , respectivamente, bajo la categoría principal (separador) utilizada para ciertos caracteres de espacio en blanco . ZlZpZ

Etiquetas de idioma

Unicode anteriormente incluía 128 caracteres, ahora obsoletos, para etiquetas de idioma. Estos caracteres esencialmente reflejaban los 128 caracteres ASCII, pero se usaban para identificar el texto posterior como perteneciente a un idioma particular según BCP 47 . Por ejemplo, para indicar el texto posterior como la variante del inglés escrito en los Estados Unidos, la secuencia U+E0001 ETIQUETA DE IDIOMA , U+E0065 ETIQUETA LETRA E MINÚSCULA LATINA , U+E006E ETIQUETA LETRA MINÚSCULA LATINA N , U+E002D LETRA ETIQUETA HYPHEN -MINUS , Se habría utilizado U+E0075 TAG LETRA MINÚSCULA LATINA U y U+E0073 TAG LETRA MINÚSCULA LATINA S.

Estos caracteres de etiqueta de idioma no se mostrarán por sí solos. Sin embargo, proporcionarían información para el procesamiento de textos o incluso para la visualización de otros caracteres. Por ejemplo, la visualización de los ideogramas de Unihan podría haber sustituido glifos diferentes si las etiquetas del idioma indicaran coreano que si las etiquetas indicaran japonés. Otro ejemplo, podría haber influido en la visualización de los dígitos decimales del 0 al 9 de manera diferente según el idioma en el que aparecieron.

Los caracteres de etiqueta U+E0001 ETIQUETA DE IDIOMA y U+E007F CANCELAR ETIQUETA quedaron obsoletos en Unicode 5.1 (2008) y no deben usarse para información de idioma. [7] Los caracteres U+E0020—U+E0073 también quedaron obsoletos, pero se restauraron con el lanzamiento de Unicode 8.0 (2015). El cambio se realizó "para despejar el camino para el posible uso futuro de caracteres de etiquetas para un propósito distinto al de representar etiquetas de idioma". [ 8 ] Unicode afirma que "el uso de caracteres de etiqueta para representar etiquetas de idioma en una secuencia de texto sin formato sigue siendo un mecanismo obsoleto para transmitir información de idioma sobre el texto".

Anotación interlineal

Tres caracteres de formato brindan soporte para la anotación interlineal ( U+FFF9 ANCLA DE ANOTACIÓN INTERLINEAR , U+FFFA SEPARADOR DE ANOTACIÓN INTERLINEAR , U+FFFB TERMINADOR DE ANOTACIÓN INTERLINEAR ). Esto se puede utilizar para proporcionar notas que normalmente se mostrarían entre líneas de otro texto. Unicode considera que dicha anotación es texto enriquecido y recomienda utilizar otros protocolos para dicha anotación. La recomendación de marcado Ruby del W3C es un ejemplo de un protocolo alternativo que admite anotaciones interlineales más avanzadas.

Control de texto bidireccional

Unicode admite texto bidireccional estándar sin caracteres especiales. En otras palabras, el software compatible con Unicode debería mostrar caracteres de derecha a izquierda, como letras hebreas, de derecha a izquierda simplemente a partir de las propiedades de esos caracteres. De manera similar, Unicode maneja la mezcla de texto de izquierda a derecha junto con texto de derecha a izquierda sin caracteres especiales. Por ejemplo, se pueden citar el árabe (“بسم الله”) (traducido al inglés como "Bismillah") junto al inglés y las letras árabes fluirán de derecha a izquierda y las letras latinas de izquierda a derecha.

Sin embargo, es posible que la direccionalidad no se detecte correctamente si se cita texto de izquierda a derecha al comienzo de un párrafo de derecha a izquierda (o viceversa ), [2] y la compatibilidad con texto bidireccional se vuelve aún más complicada cuando el texto fluye. en direcciones opuestas está incrustado jerárquicamente, por ejemplo, si un texto en inglés cita una frase en árabe que a su vez cita una frase en inglés. Otras situaciones también pueden complicar esto, como cuando un autor quiere anular los caracteres de izquierda a derecha para que fluyan de derecha a izquierda. Si bien estas situaciones son bastante raras, Unicode proporciona doce caracteres para ayudar a controlar estos niveles de texto bidireccional incrustados hasta 125 niveles de profundidad: [9]

Selectores de variación

Muchos caracteres se asignan a glifos alternativos según el contexto. Por ejemplo, los caracteres cursivos árabes y latinos sustituyen diferentes glifos para conectar glifos entre sí dependiendo de si el carácter es el carácter inicial de una palabra, el carácter final, un carácter medial o un carácter aislado. Estos tipos de sustitución de glifos se manejan fácilmente mediante el contexto del carácter sin ninguna otra entrada de autor involucrada. Los autores también pueden utilizar caracteres de propósito especial, como los que se unen y los que no se unen, para forzar una forma alternativa de glifo donde de otro modo no aparecería. Las ligaduras son casos similares en los que los glifos se pueden sustituir simplemente activando o desactivando las ligaduras como atributo de texto enriquecido.

Sin embargo, para otras sustituciones de glifos, es posible que sea necesario codificar la intención del autor con el texto y no se puede determinar contextualmente. Este es el caso de los caracteres/glifos denominados gaiji , donde se utilizan diferentes glifos para el mismo carácter, ya sea históricamente o como ideogramas de apellidos. Esta es una de las áreas grises al distinguir entre un glifo y un carácter. Si un apellido difiere ligeramente del carácter ideográfico del que deriva, entonces se trata de una variante de glifo simple o una variante de carácter. A partir de Unicode 3.2 y 4.0, el conjunto de caracteres ahora incluye 256 selectores de variación para que estos caracteres de marca combinados puedan seleccionar entre 256 posibles variaciones de caracteres/glifos para el carácter anterior.

Controlar imágenes

Unicode proporciona caracteres gráficos para representar códigos de control C0 (y espacios y una nueva línea genérica ) en el bloque Imágenes de control . Son representaciones visuales, no códigos de control reales. No existen caracteres equivalentes para los códigos de control C1 .

Ver también

Referencias

  1. ^ ab "Alias ​​​​de nombres". Base de datos de caracteres Unicode . Consorcio Unicode .
  2. ^ ab Segan, Danilo. "Hacia un escritorio localizado". En algunos casos en los que la toma de decisiones automática no funciona, puede agregar manualmente marcadores de dirección específicos haciendo clic derecho en el campo de texto, eligiendo "Insertar carácter de control Unicode" en el menú y seleccionando la marca de dirección adecuada. Esto le permitiría, por ejemplo, comenzar su texto RTL con una palabra LTR (como "GNOME").
  3. ^ ISO/IEC JTC 1/SC 2/WG 3 (12 de febrero de 1998). Texto final de DIS 8859-1, juegos de caracteres gráficos codificados de un solo byte de 8 bits: Parte 1: Alfabeto latino n.º 1 (PDF) . ISO / IEC FDIS 8859-1:1998; JTC1/SC2/N2988; GT3/N411. Este conjunto de caracteres gráficos codificados puede considerarse como una versión de un código de 8 bits según ISO/IEC 2022 o ISO/IEC 4873 en el nivel 1. […] Las posiciones sombreadas en la tabla de códigos corresponden a combinaciones de bits que no representar personajes gráficos. Su uso está fuera del alcance de ISO/IEC 8859; se especifica en otras normas internacionales, por ejemplo ISO/IEC 6429. {{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  4. ^ ISO/TC 97/SC 2 (1975). El conjunto de caracteres de control de la ISO 646 (PDF) . ITSCJ/ IPSJ . ISO-IR -1.{{citation}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  5. ^ Consorcio Unicode (2019). 23.1: Códigos de control (PDF) (12.0.0 ed.). págs. 868–870. ISBN 978-1-936213-22-1. {{cite book}}: |work=ignorado ( ayuda )
  6. ^ Ewell, Doug (16 de octubre de 2020). "Gráficos de mosaico separados por teletexto". Archivo de listas de correo Unicode . Consorcio Unicode . Reitero que fueron UTC [ Comité Técnico Unicode ] y Script Ad Hoc quienes brindaron orientación al grupo que redactó la propuesta de Símbolos para Computación Legacy (y hay una segunda en camino) que deberían mapear de 0x00 a 0x1F en el conjunto de teletexto original. de U+0000 a U+001F al convertir a Unicode.
  7. ^ Klensin, John C.; Presuhn, Randy; Whistler, Ken; Dürst, Martín J.; Adams, Glenn (noviembre de 2010). Presuhn, R. (ed.). "RFC6082: Caracteres de etiquetas de lenguaje Unicode obsoletos: RFC 2482 es histórico". Grupo de trabajo de ingeniería de Internet (IETF). doi : 10.17487/RFC6082 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  8. ^ ab "Unicode 8.0.0, implicaciones para la migración". Consorcio Unicode.
  9. ^ "UAX n.º 9: algoritmo bidireccional Unicode". Consorcio Unicode. 2018-05-09.