Fuera del estándar Unicode, un carácter es una unidad individual de texto compuesta de uno o más grafemas . Lo que el estándar Unicode define como "personajes" es en realidad una mezcla de grafemas y personajes. Unicode proporciona reglas para la interpretación de grafemas yuxtapuestos como caracteres individuales.
Un punto de código Unicode es un número único asignado a cada carácter Unicode (que es un carácter o un grafema).
Desafortunadamente, las reglas Unicode permiten que algunos grafemas yuxtapuestos se interpreten como otros grafemas que ya tienen sus propios puntos de código ( formas precompuestas ). Esto significa que hay más de una forma en Unicode para representar un personaje. La normalización Unicode soluciona este problema.
Un glifo es la representación visual de un personaje. Una fuente proporciona un conjunto de glifos para un determinado conjunto de caracteres (no caracteres Unicode). Para cada personaje, hay un número infinito de glifos posibles.
Una respuesta a Mark Amery
Primero, como dije, hay un número infinito de glifos posibles para cada carácter, así que no, un carácter no está "siempre representado por un solo glifo". Unicode no se preocupa mucho por los glifos, y las cosas que define en sus tablas de códigos ciertamente no son glifos. El problema es que tampoco son todos personajes. Entonces, ¿qué son?
¿Cuál es la entidad mayor, el grafema o el personaje? ¿Cómo se llaman esos elementos gráficos en el texto que no son letras o signos de puntuación? Un término que viene rápidamente a la mente es "grafema". Es una palabra que evoca precisamente la idea de "una unidad gráfica en un texto". Ofrezco esta definición: un grafema es el componente distinto más pequeño en un texto escrito .
Uno podría ir al otro lado y decir que los grafemas están compuestos de caracteres, pero luego se llamarían "grafemas chinos", y todos esos pedazos y piezas de los que se componen los grafemas chinos deberían llamarse "caracteres". Sin embargo, eso es todo al revés. Los grafemas son pequeños pedazos distintos. Los personajes están más desarrollados. La frase "los glifos son componibles", se indicaría mejor en el contexto de Unicode como "los caracteres son componibles".
Unicode define caracteres, pero también define grafemas que se deben componer con otros grafemas o caracteres. Esas monstruosidades que compusiste son un buen ejemplo de esto. Si se dan cuenta, tal vez obtendrán sus propios puntos de código en una versión posterior de Unicode;)
Hay un elemento recursivo en todo esto. En los niveles superiores, los grafemas se convierten en personajes en grafemas, pero son grafemas hasta el final.
Una respuesta a TS
El capítulo 1 de los estados estándar: "La codificación de caracteres Unicode trata los caracteres alfabéticos, los caracteres ideográficos y los símbolos de manera equivalente, lo que significa que pueden usarse en cualquier mezcla y con la misma facilidad". Dada esta declaración, debemos estar preparados para una combinación de términos en el estándar. A veces, la terminología adecuada solo se vuelve clara en retrospectiva a medida que se desarrolla un estándar.
A menudo sucede en las definiciones formales de un lenguaje que dos cosas fundamentales se definen en términos el uno del otro. Por ejemplo, en
XML un elemento se define como una etiqueta inicial posiblemente seguida por contenido, seguido de una etiqueta final. El contenido se define a su vez como un elemento, datos de caracteres o algunas otras cosas posibles. Un patrón de definiciones autorreferenciales también está implícito en el estándar Unicode:
Un grafema es un punto de código o un personaje.
Un personaje está compuesto de una secuencia de uno o más grafemas.
Cuando se enfrenta por primera vez con estas dos definiciones, el lector puede objetar la primera definición con el argumento de que un punto de código es un carácter, pero eso no siempre es cierto. Una secuencia de dos puntos de código a veces codifica un único punto de código bajo
normalización , y ese punto de código codificado representa el carácter, como se ilustra en la
figura 2.7 . Secuencias de puntos de código que codifican otros puntos de código. Esto se está volviendo un poco complicado y ni siquiera hemos llegado a la capa donde se utilizan esquemas de codificación de caracteres como UTF-8 para codificar puntos de código en secuencias de bytes.
En algunos contextos, por ejemplo, un artículo académico sobre
diacríticos y la parte individual de un personaje pueden aparecer en el texto por sí mismos. En ese contexto, la parte de carácter individual podría considerarse un carácter, por lo que tiene sentido que el estándar Unicode también permanezca flexible.
Como Mark Avery señaló, un personaje puede ser compuesto en una cosa más compleja. Es decir, cada personaje puede servir como grafema si lo desea. El resultado final de toda composición es algo que "el usuario piensa como un personaje". No parece haber ninguna resistencia real, ni en el estándar ni en esta discusión, a la idea de que en el nivel más alto hay estas cosas en el texto que el usuario considera como caracteres individuales. Para evitar sobrecargar ese término, podemos usar "grafema" en todos los casos en los que queremos referirnos a las partes utilizadas para componer un personaje.
A veces, el estándar Unicode está por todas partes con su terminología. Por ejemplo, el Capítulo 3
define UTF-8 como una "forma de codificación", mientras que el glosario define "forma de codificación" como otra cosa, y UTF-8 como un "Esquema de codificación de caracteres". Otro ejemplo es "Grapheme_Base" y "Grapheme_Extend", que se reconocen como errores, pero que persisten porque purgarlos es una tarea difícil. Todavía queda trabajo por hacer para ajustar la terminología empleada por la norma.
La propuesta para agregar COMBINING GRAPHEME JOINER se equivocó cuando declaró que "los grafemas son secuencias de uno o más caracteres codificados que corresponden a lo que los usuarios consideran como caracteres". En su lugar, debería decir: "Una secuencia de uno o más grafemas compone lo que el usuario piensa como un personaje". Entonces podría usar el término "secuencia de grafemas" claramente del término "secuencia de caracteres". Ambos términos son útiles. La "secuencia de grafemas" implica claramente el proceso de construir un personaje a partir de piezas más pequeñas. "secuencia de caracteres" significa lo que todos normalmente intuimos que significa: "Una secuencia de cosas que el usuario considera como caracteres".
A veces, un programador realmente quiere operar al nivel de secuencias de grafemas, por lo que los mecanismos para inspeccionar y manipular esas secuencias deben estar disponibles, pero en general, cuando se procesa texto, es suficiente operar en "secuencias de caracteres" (lo que el usuario piensa como personaje) y dejar que el sistema gestione los detalles de nivel inferior.
En todos los casos cubiertos hasta ahora en esta discusión, es más claro usar "grafema" para referirse a los componentes indivisibles y "carácter" para referirse a la entidad compuesta. Este uso también refleja mejor los significados establecidos desde hace mucho tiempo de ambos términos.