Al di fuori dello standard Unicode, un personaggio è una singola unità di testo composta da uno o più grafemi . Ciò che lo standard Unicode definisce "caratteri" è in realtà un mix di grafemi e personaggi. Unicode fornisce regole per l'interpretazione dei grafemi giustapposti come singoli personaggi.
Un punto di codice Unicode è un numero univoco assegnato a ciascun carattere Unicode (che è un carattere o un grafema).
Sfortunatamente, le regole Unicode consentono ad alcuni grafemi giustapposti di essere interpretati come altri grafemi che hanno già i loro punti di codice ( forme precomposte ). Ciò significa che in Unicode esiste più di un modo per rappresentare un personaggio. La normalizzazione Unicode risolve questo problema.
Un glifo è la rappresentazione visiva di un personaggio. Un font fornisce un set di glifi per un determinato set di caratteri (non caratteri Unicode). Per ogni personaggio esiste un numero infinito di glifi possibili.
Una risposta a Mark Amery
Innanzitutto, come ho affermato, esiste un numero infinito di glifi possibili per ciascun personaggio, quindi no, un personaggio non è "sempre rappresentato da un singolo glifo". Unicode non si preoccupa molto dei glifi e le cose che definisce nei suoi diagrammi di codice non sono certamente glifi. Il problema è che non sono nemmeno tutti personaggi. Allora cosa sono?
Qual è l'entità maggiore, il grafema o il personaggio? Come si chiamano quegli elementi grafici nel testo che non sono lettere o punteggiatura? Un termine che viene subito in mente è "grafema". È una parola che evoca precisamente l'idea di "un'unità grafica in un testo". Offro questa definizione: un grafema è il più piccolo componente distinto in un testo scritto .
Si potrebbe andare dall'altra parte e dire che i grafemi sono composti da personaggi, ma poi sarebbero chiamati "grafemi cinesi", e tutti quei frammenti di cui sono composti i grafemi cinesi dovrebbero invece essere chiamati "personaggi". Tuttavia, è tutto indietro. Graphemes sono i piccoli pezzi distinti. I personaggi sono più sviluppati. La frase "glifi sono compostabili", sarebbe meglio dichiarata nel contesto di Unicode come "i caratteri sono compostabili".
Unicode definisce i caratteri ma definisce anche i grafemi che devono essere composti con altri grafemi o personaggi. Quelle mostruosità che hai composto ne sono un ottimo esempio. Se riescono a prendere forse otterranno i loro punti di codice in una versione successiva di Unicode;)
C'è un elemento ricorsivo in tutto questo. Ai livelli più alti, i graphhemes diventano personaggi, diventano graphhemes, ma sono graphhemes fino in fondo.
Una risposta a TS
Il capitolo 1 dello standard afferma: "La codifica del carattere Unicode tratta i caratteri alfabetici, i caratteri ideografici e i simboli in modo equivalente, il che significa che possono essere utilizzati in qualsiasi combinazione e con la stessa facilità". Data questa affermazione, dovremmo essere preparati per una certa conflazione dei termini nello standard. A volte la terminologia corretta diventa chiara solo a posteriori man mano che si sviluppa uno standard.
Accade spesso nelle definizioni formali di un linguaggio che due cose fondamentali siano definite l'una nell'altra. Ad esempio, in
XML un elemento è definito come un tag iniziale eventualmente seguito dal contenuto, seguito da un tag finale. Il contenuto è a sua volta definito come un elemento, i dati del personaggio o poche altre cose possibili. Un modello di definizioni autoreferenziali è anche implicito nello standard Unicode:
Un grafema è un punto di codice o un carattere.
Un personaggio è composto da una sequenza di uno o più grafemi.
Quando si confronta per la prima volta con queste due definizioni, il lettore potrebbe obiettare alla prima definizione sulla base del fatto che un punto di codice è un carattere, ma ciò non è sempre vero. Una sequenza di due punti di codice a volte codifica un singolo punto di codice in fase di
normalizzazione e quel punto di codice codificato rappresenta il carattere, come illustrato nella
figura 2.7 . Sequenze di punti di codice che codificano altri punti di codice. Questo sta diventando un po 'complicato e non abbiamo nemmeno raggiunto il livello in cui vengono utilizzati schemi di codifica dei caratteri come UTF-8 per codificare punti di codice in sequenze di byte.
In alcuni contesti, ad esempio un articolo accademico sui
segni diacritici , e la parte individuale di un personaggio potrebbe apparire da sola nel testo. In quel contesto, la parte del singolo personaggio potrebbe essere considerata un personaggio, quindi ha senso che anche lo standard Unicode rimanga flessibile.
Come ha sottolineato Mark Avery, un personaggio può essere composto in una cosa più complessa. Cioè, ogni personaggio può servire da grafema se lo si desidera. Il risultato finale di tutta la composizione è una cosa che "l'utente pensa come un personaggio". Non sembra esserci alcuna reale resistenza, né nello standard né in questa discussione, all'idea che al livello più alto ci siano queste cose nel testo che l'utente considera come singoli personaggi. Per evitare di sovraccaricare quel termine, possiamo usare "grapheme" in tutti i casi in cui vogliamo fare riferimento a parti usate per comporre un personaggio.
A volte lo standard Unicode è ovunque con la sua terminologia. Ad esempio, il capitolo 3
definisce UTF-8 come una "forma di codifica" mentre il glossario definisce "forma di codifica" come qualcos'altro e UTF-8 come "schema di codifica dei caratteri". Un altro esempio è "Grapheme_Base" e "Grapheme_Extend", che sono riconosciuti come errori ma che persistono perché eliminarli è un po 'un compito. C'è ancora del lavoro da fare per rafforzare la terminologia utilizzata dalla norma.
La proposta di aggiunta di COMBINING GRAPHEME JOINER ha sbagliato quando affermava che "Graphemes sono sequenze di uno o più caratteri codificati che corrispondono a ciò che gli utenti considerano personaggi". Dovrebbe invece leggere "Una sequenza di uno o più grafemi compone ciò che l'utente pensa come un personaggio". Quindi potrebbe usare il termine "sequenza di grafismi" in modo distinto dal termine "sequenza di caratteri". Entrambi i termini sono utili. La "sequenza dei grafi" implica chiaramente il processo di costruzione di un personaggio da pezzi più piccoli. "sequenza di caratteri" indica ciò che tutti generalmente intuiamo che significhi: "Una sequenza di cose che l'utente pensa come personaggi".
A volte un programmatore vuole davvero operare a livello di sequenze grafiche, quindi dovrebbero essere disponibili meccanismi per ispezionare e manipolare quelle sequenze, ma generalmente, durante l'elaborazione del testo, è sufficiente operare su "sequenze di caratteri" (ciò che l'utente pensa di come personaggio) e lasciare che il sistema gestisca i dettagli di livello inferiore.
In ogni caso trattato finora in questa discussione, è più pulito usare "grapheme" per riferirsi alle componenti indivisibili e "carattere" per riferirsi all'entità composta. Questo utilizzo riflette anche meglio i significati consolidati di entrambi i termini.