Quali limitazioni avremo se gli standard Unicode avessero deciso di assegnare uno e un solo codepoint a ogni personaggio percepito dall'utente?
Attualmente, Unicode ha punti di codice che corrispondono alla combinazione di caratteri. Questi personaggi si combinano con un precedente punto di codice (o una sua sequenza) per presentare all'utente ciò che sembra essere un singolo carattere.
Da quello che vedo, lo standard attuale è pieno di complessità. (Siamo non parlando di problema di codifica qui. Anche se cerchiamo di evitare qualsiasi tipo di complessità utilizzando una codifica come UTF-32, il problema persiste .)
Ad esempio, in Unicode quando un grafo grapheme è rappresentato internamente da una sequenza di caratteri composta da carattere base + accento, quindi quando l'utente fa clic sul pulsante > per saltare al prossimo percepito dall'utente carattere, abbiamo dovuto saltare dall'inizio del personaggio base alla fine dell'ultimo carattere del cluster.
Perché deve essere così difficile? Perché Unicode non può assegnare un singolo punto di codice a ogni personaggio percepito dall'utente, per cui andare al personaggio percepito dall'utente è semplicemente questione di leggere il prossimo punto di codice?
Il sito web unicode sembra riconoscere questa complessità:
In those relatively rare [not rare at all!] circumstances where programmers need to supply end users with user-perceived character counts, the counts should correspond to the number of segments delimited by grapheme clusters. Grapheme clusters may also be used in searching and matching
I diacritici sono anche la ragione per cui le cose non funzionano come previsto. Per esempio, se lancio 2 caratteri ((giapponese katakana PI usando la rappresentazione unicode U+30d2 U+309a
) in un Builder di stringhe e rovesciarlo, mi aspetterei naturalmente che l'output fosse di 2 ピ caratteri (cioè ピ ピ), ma fornisce un output non valido di ゚ ピ ヒ!
Se Unicode avesse assegnato singoli punti di codice per ciascun personaggio percepito dall'utente e scartato l'idea dei grapheme cluster, ciò non sarebbe accaduto affatto.
Quello che vorrei sapere è, cosa c'è di sbagliato nel rappresentare ogni personaggio percepito dall'utente come un codice unicode? È probabile che così facendo si supererebbero U + 10FFFF possibili punti di codice (se supera i punti di codice U + 10FFFF non vedo alcun motivo per cui non avrebbero potuto impostare il limite a 2 ^ 32 in primo luogo), anche quando c'è così tanto spazio libero da includere l'intera famiglia di Elf Languages ?
If you wanted, for example, to give each “instance of a character on paper throughout history” its own code, you might need trillions or quadrillions of such codes;
Ma sul serio non ha alcun senso. Dov'è la fonte per fare un simile reclamo? Un trilione di codici è piuttosto una dichiarazione eccessiva.