Executando verificação de segurança...
3

Parabéns pelo artigo, achei muito legal.

Há 2 pontos que eu queria destacar:

Primeiro que vc disse que um caracter Unicode é representado pelo "U+" seguido por 4 digitos, mas na verdade é por até 6 digitos porque o code space do Unicode vai até U+10FFFF.

O segundo ponto é que vc diz que o Unicode não tem limites e que pode se expandir conforme a necessidade.

Acontece que há um limite que é 1.114.112! E destes mais de 1 milhão de code points, apenas 149.186 são usados atualmente na vesão 15.0 do Unicode.

Fonte: https://www.unicode.org/versions/Unicode15.0.0/ch01.pdf

Carregando publicação patrocinada...
1
1

Respondendo a isso, o primeiro ponto sobre os 6 dígitos,sim realmente de acordo ao materia podem se extender até aí.
Mas quanto a questão do limite, é exactamente isso. Os caracteres mais comuns cobrem 2^16 = 65536, e no seu exemplo com mais dois dígitos hexadecimais o temos 2^24 =16777216(possíveis), ou seja, existem 149.186 caracteres unicode ACTUALMENTE, mas se hipoteticamente fossem criados mais caracteres ele poderia cobrir o resto conforme a necessidade, daí a expressão "não tem limites".

1

Vc entendeu errado a informação desta fonte que vc linkou.

Lá diz que o UTF-8 tem bits o bastante para codificar até o code point 0x1FFFFF, ou seja, tem limite. É um limite maior do que o UTF-16, mas tem limite.

Só que a RFC 3629 limitou o UTF-8 para ele combinar com o limite do UTF-16. Assim, tanto o UTF-8 quanto o UTF-16 só podem codificar até o code point 0x10FFFF.

Mesmo que vc pense que a RFC 3629 possa ser derrubada caso precise algum dia, vc estaria errado, pois ela não poderia ser simplesmente ignorada, pois isto permitiria que alguns code points fossem codificados em UTF-8, mas não em UTF-16.

Percebe que vc não pode dizer "que pode se estender até onde quiser"? Não pode porque tem limite e o limite é 0x10FFFF.


O outro ponto vc também entendeu errado. Eu disse que são 6 digitos hexadecimais, mas isso não quer dizer que vai até 2^24 porque os code points do Unicode não vão até 0xFFFFFF, eles vão até 0x10FFFF que é o máximo que o UTF-16 consegue codificar (e o máximo que aquela RFC permite que o UTF-8 vá também).

Mesmo que não houvesse a limitação dos seus irmãos (UTF-8 e UTF-16), nem o UTF-32 consegue se estender indefinidamente, pois ele só iria até 0xFFFFFFFF e isso nem faria sentido já que extrapola em muito o máximo de code points do Unicode.

A informação que eu te passei no primeiro comentário não saiu do nada, saiu da própria especificação. Não sei se vc chegou a ler, mas o paragrafo que eu queria te mostrar é o último do capitulo Introdução. Ele diz:

The Unicode Standard contains 1,114,112 code points, most of which are available for
encoding of characters...

O trecho acima é a própria especificação estabelecendo limites.

Como o Unicode esta devidamente especificado, não tem como ele crescer indefinidamente, pois os sistemas que o implementam devem ser previsíveis. Só que o limite dele não é um problema para nós, pois em mais de 30 anos de Unicode, não conseguimos atingir nem 20% dele.


Claro que no futuro o padrão pode mudar e uma nova especificação ser criada com um limite maior e até indefinido.

Para vc ter uma ideia, no inicio o Unicode era baseado em apenas 16 bits, ou seja, só podia codificar até 65536.

Só que indo por esta linha de raciocinio estariamos apenas especulando e o ponto é:

A versão atual do Unicode, a versão 15.0, tem limite que é 1.114.112, ou 0x10FFFF. Da mesma forma, seus modos de codificação, UTF-8, UTF-16 e UTF-32, também acompanham este limite.

2