As diferentes camadas do texto
Na escrita, usamos caracteres para representar letras, sinais e outros elementos do texto. No universo digital, é preciso distinguir essa ideia de sua representação numérica. O Unicode organiza caracteres por pontos de código, identificados em notação como U+0061 para a letra latina a. A FAQ do Unicode sobre caracteres e marcas combinantes explica por que um elemento percebido pelo leitor pode envolver mais de um desses valores.
- Representação e aparência: o texto codificado e os desenhos usados para exibi-lo pertencem a camadas diferentes.
Para armazenar ou transmitir o texto, uma codificação define como representar esses valores. A especificação UTF-8 usa de um a quatro bytes de oito bits por valor escalar Unicode. Isso não significa que toda letra visível tenha o mesmo tamanho: ela pode depender de uma sequência de valores. Contar bytes, portanto, responde a uma pergunta sobre dados codificados; contar elementos da escrita exige outro critério, que deve ser informado pelo sistema.
Grafema é uma unidade da escrita; para processar texto, o Unicode define agrupamentos de grafemas como uma aproximação computacional dos caracteres percebidos pelo usuário. Já o glifo é a forma visual usada na exibição. O anexo de segmentação do Unicode ressalta que essas unidades não coincidem sempre. Uma ligadura pode reunir as letras f e i em um desenho, sem transformar a sequência em um único agrupamento padrão.
O que muda na contagem e na leitura
Um exemplo simples é a letra é. Ela pode ser representada pelo ponto de código U+00E9 ou pela sequência U+0065 e U+0301, isto é, e seguido de acento agudo combinante. A especificação de normalização Unicode trata essas formas como canonicamente equivalentes. Na primeira há um ponto de código e dois bytes em UTF-8; na segunda, dois pontos de código e três bytes. Em ambos os casos, as regras padrão de segmentação reconhecem um agrupamento de grafemas. Assim, dois contadores podem exibir resultados diferentes sem que um deles esteja necessariamente errado: é preciso saber se medem bytes, pontos de código ou agrupamentos percebidos. A aparência sozinha não revela essa escolha.
A normalização oferece formas definidas de organizar representações equivalentes. No exemplo do é, NFC produz a forma composta e NFD a forma decomposta. Esse procedimento pode ajudar comparações de texto, mas não deve ser confundido com remover acentos ou transformar qualquer símbolo parecido no mesmo caractere. O anexo Unicode sobre normalização define critérios precisos; aplicações precisam escolher a regra compatível com sua finalidade.
- Pontos de código contados: Representações equivalentes podem envolver quantidades diferentes desses valores.
- Agrupamentos de grafemas: São unidades de segmentação, sem equivalência universal com um único desenho na tela.
- Bytes de uma codificação: O espaço ocupado depende da sequência e da codificação, não apenas da aparência.
As fontes atuam em outra camada. Segundo a explicação do W3C sobre codificações, elas fornecem formas para exibir caracteres; trocar a aparência não corrige bytes interpretados incorretamente. Também é preciso separar o texto do arquivo da fonte: a FAQ oficial da licença OFL distingue usar uma fonte em uma criação de redistribuir seu software. Outras fontes podem ter condições diferentes, que devem ser consultadas.
A semelhança visual também merece cuidado em identificadores. O padrão Unicode de mecanismos de segurança trata de caracteres confundíveis, inclusive entre sistemas de escrita. Dois sinais parecidos podem ter códigos diferentes, e a aparência isolada não demonstra que um nome ou endereço pertence à mesma origem. Codificar um texto corretamente não autentica seu autor nem garante a segurança de uma conta; esses controles pertencem a outras etapas.
Para interpretar um problema de texto, vale começar pela camada envolvida. Uma contagem de tamanho pede uma unidade explícita; uma comparação exige critérios de equivalência; um símbolo ausente pede verificar o suporte de exibição. Os exemplos mostram por que caractere, ponto de código, agrupamento, glifo e byte não devem ser tratados como sinônimos. O cuidado também favorece uma comunicação que respeite diferentes escritas, sem reduzir toda língua às convenções do alfabeto latino. A melhor explicação informa qual operação está sendo feita e quais regras o sistema utiliza, em vez de prometer que uma fonte ou codificação resolve sozinha legibilidade, compatibilidade e segurança.
Veja Mais
- Estrutura e limites do XML na integração de dados
- Fundamentos de informática e TI para entender o computador
- Nome civil, pseudônimo e identidade na vida digital
