Texto Simples

Texto simples (plain text) é um formato de arquivo de texto que só possui dados sobre quais caracteres o texto contém. Isto é, em texto simples, os bytes descrevem apenas quais letras, números, pontuações, etc. que o texto possui, e nada mais que isso.

O texto simples é um formato de dados usado na maioria dos textos que você vê um computador. Isto é, quando você vê um texto em um programa de computador, esse texto funciona baseado nos conceitos que aprenderemos nesse artigo.

O termo texto simples é usado em contraste com o termo texto rico (rich text). Em texto rico, há dados que descrevem a formatação do texto: se o texto está em negrito, itálico, oblíquo, etc. Dependendo do formato de texto rico, é possível incluir imagens no texto, definir o tamanho da fonte, especificar o espaçamento entre linhas e entre caracteres, etc. Normalmente, o texto rico INCLUI texto simples, e inclui também dados para formatar o texto simples. Naturalmente então, nada disso é possível usando o texto simples apenas. O texto simples é só o texto (os caracteres) e nada mais.

Mais especificamente, o texto simples é uma sequência de caracteres ou character string (cadeia de caracteres).Os dados salvos em um arquivo de texto simples são nada mais que um caractere na frente do outro, formando uma sequência enorme. Devido a esse formato unidimensional do texto simples, existem caracteres que possuem uma função diferente de simplesmente "escrever algo na tela."

Por exemplo, quando escrevemos texto com um lápis, escrevemos palavras e separamos as letras de uma palavra das telas de outra palavra com um espaço. Fisicamente, o tamanho desse espaçamento pode variar. Mas no texto do computador, um "espaço" que você digita apertando a tecla de espaço (spacebar) é sempre do mesmo tamanho. Isso por que essa tecla insere um caractere de espaço no texto. O espaço em si é um caractere, assim como letras e números são caracteres no computador.

Similarmente, quando você pressiona a tecla enter para começar a digitar em uma nova linha, o que essa tecla faz na verdade é inserir um caractere que significa "insira uma nova linha." Em código fonte, há casos em que você não pode inserir uma linha no meio de alguma coisa, então existe um código para representar esse caractere, e esse código costuma ser dois caracteres: \n (n vem de new line, "nova linha"). Em alguns sistemas, "começar a escrever em uma nova linha" são na verdade dois caracteres de controle: o retorno de carro (carriage return) e a nova linha (newline). Em código: \r\n. O \r manda o computador começar a escrever no começo da linha atual, e o \n manda ele começar a escrever na próxima linha, e com isso o computador começa a escrever no começo da próxima linha. Se apenas o \r for usado, o programa que está exibindo o texto iria começar a sobrescrever o que está escrito no começo da linha atual.

O valor exato em bits que cada caractere possui em uma sequência de caracteres depende de sua codificação (encoding). Todo texto possui uma codificação. Geralmente, programas de computador modernos trabalham com a codificação UTF-8. Isso significa que para abrir um texto em outra codificação, como Shift-JIS, é necessário converter os bits de Shift-JIS para UTF-8. Esse processo é chamado de decodificação (decoding).

Originalmente, computadores eram bem fracos e feitos somente para quem sabia Inglês. Com isso, as primeiras codificações só eram capazes de exibir texto "Inglês," isto é, como não há palavras nativas Inglesas com acentos, a codificação não tinha valores para representar os acentos. Não existia como escrever uma letra acentuada no computador!

Uma dessas primeiras codificações é chamada de ASCII (American Standard Code for Information Interchange). Em ASCII, cada caractere é representado por um valor de 7 bits. Com 7 bits, temos 27 valores possíveis, ou 128 permutações. Então teríamos, por exemplo:

Valor   Caractere
1100001 a
1100010 b
1100011 c
1100100 d

E assim por diante.

Cada um desses valores é chamado de ponto de código (code point). Dizemos então que o ASCII tem 128 pontos de código para representar os caracteres. Parece ser bastante, mas teríamos que colocar nesses 128 pontos de código pelo menos:

  1. Os dez algarismos arábicos (0123456789).
  2. O alfabeto de 26 letras (abc...xyz).
  3. O alfabeto de 26 letras em maiúsculo (ABC...XYZ).
  4. Pontuações (.,;:!?'").
  5. Parênteses (), colchetes [], e chaves {}.
  6. Outros símbolos (@&#$%/|\_-+*=)
  7. Espaços ( ), e o caractere de nova linha (\n).

Somando tudo isso, dez, 36, 62, 70... uns 80? Temos uns 4 ou 5 acentos, vezes 5 letras, vezes 2 fomas (maiúscula e minúscula), é, pode ser que daria para encaixar os acentos nesses 7 bits, porém, infelizmente, não deu.

Isso por que no ASCII original existiam 33 caracteres de controle baseados nas teclas do teclado. Por exemplo, as teclas escape, backspace, e delete possuem os valores ASCII 0011011 (27), 0001000 (8), e 1111111 (127), respectivamente.

Hoje em dia ainda é possível salvar o caractere de controle para a tecla escape em um arquivo texto simples, mas os programas de computador não iram fazer nada ao encontrar esse caractere. Vão simplesmente ignorá-lo.

Além do ASCII, existe também o ASCII estendido (ASCII extended) que usa 8 bits (1 byte) por ponto de código. Nesse caso, temos o dobro dos valores (256 permutações), e nesse ASCII estendido temos sim letras com acentos.

Outra codificação cujo nome é conhecido é o ANSI (American National Standards Institute) que não tem nada haver com a instituição de onde vem seu nome, e era simplesmente como a Microsoft chamava o formato que ela usava, que também era conhecida como Windows-1252 ou CP-1252.

O ASCII estendido era o bastante para idioma escritos no alfabeto Latin, mas não era o bastante para o mundo inteiro. Em Chinês e Japonês, por exemplo, temos uma situação extrema: o que seria seu "alfabeto" consiste de dezenas de milhares de caracteres, chamados de hanzi ou kanji dependendo do idioma. Não é possível colocar dezenas de milhares de caracteres em 8 bits. Com 16 bits poderíamos ter 65536 permutações, o que deve ser o bastante para os caracteres usados no mundo moderno, mas com 8 bits simplesmente não dá.

Então esses idiomas não podiam ser escritos usando ASCII. Precisava de outra codificação. No caso do Japonês, uma codificação que é usada até hoje na web é chamada de Shift-JIS (Shift Japanese Industrial Standards). Mas aí um valor de bits que significaria algo em ASCII significaria algo completamente diferente em Shift-JIS, já que ambas codificações estão usando os mesmos bits para representar caracteres diferentes.

Como se isso não fosse confuso o bastante, há um outro grande problema: o formato de texto simples só contém o texto em si, os caracteres. O formato de texto simples não contém bits que dizem qual codificação foi usada para criar esses bits. Então não tem como um programa de computador saber se um arquivo está em ASCII ou Shift-JIS, ou outra codificação. Ele teria que chutar, tentar advinha usando heurísticas, ou ser informado pelo usuário qual codificação usar para abrir e/ou editar o arquivo. O que seria terrível.

A solução moderna é chamada de UTF (Unicode Transformation Format). Com UTF, em vez de termos uma instituição Americana que decide como o texto em Inglês é codificado em bits, e uma instituição Japonesa que decide como o texto Japonês é codificado em bits, temos uma instituição global, a Unicode, que decide como texto é representado em bits. E aí se todo mundo usar Unicode, o problema é resolvido por que simplesmente assumimos que todo texto simples seguirá o mesmo formato, estará na mesma codificação.

Esse Unicode padroniza todo texto simples, todos os caracteres, e na maioria dos casos que um programa de computador trabalha com texto, ele trabalhará com "texto simples," o que significa que todo texto que você vê é texto Unicode, o que é possível em Unicode é possível em todo texto que você vê. Se o Unicode diz que tem como escrever caracteres Japonês, você pode escrevê-los em qualquer lugar.

Recentemente, o Unicode decidiu que emojis são texto. Isto é, eles inventaram de padronizar emojis e tornar o emoji inteiro parte do padrão UTF. Hoje em dia temos esse negócio 😆 que na minha opinião, honestamente, é terrível. XD é muito melhor. xD possui charme. Se você quiser escrever uma carinha com olhos fechados sorrindo, digite xD. Não digite 😆. Faz isso por mim, por favor.

Mas enfim, temos hoje redes sociais onde existem esses emojis que são ícones enfiados no meio do texto. E esse é realmente um jeito com que as pessoas se comunicam no mundo moderno. Então a Unicode decidiu que é como se fosse um idioma novo, e com isso começou a padronizar os emojis. Graças a essa padronização, existe em teclados de smartphone botões para "digitar" o emoji diretamente, e é possível que vários sistemas diferentes (Windows, Android, etc.) exibam ícones diferentes para o mesmo emoji, já que é como se fosse um caractere exibido com uma fonte de texto colorida.

Isto é, o teclado digita um caractere de "carinha sorrindo com olhos fechados," e o sistema possui um ícone para "carinha sorrindo com olhos fechados," e ele exibe esse ícone que deve, segundo ao Unicode, ser o bastante para representar o significado do emoji.

Na minha opinião, isso não faz muito sentido. Me deixe explicar. Existem vários tipos de "sorrisos." Existem sorrisos que parecem ser meigos e existem sorrisos que parecem ser malignos. Dependendo de como o ícone do emoji for desenhado, o que você pensa quando vê o emoji muda. O design do emoji afeta seu significado. Pode ser que você tenha clicado em um botão de emoji no smartphone por que o ícone no smartphone tem um sorriso meigo, mas o padrão Unicode não garante que o design do emoji não aparecerá como um sorriso que parecer ser mais perverso em algum sistema. Pode ser que se você soubesse como ele iria aparecer no outro computador, você não iria usar esse emoji. Então não é como se fosse uma letra. Se você digitar X, X é X independentemente da fonte usada para exibir esse X. X sempre significa X. Mas nada disso importa. No final das contas as redes sociais precisavam de um jeito de padronizar o emoji que estava enfia em meio ao texto, e esse foi o jeito que fez mais sentido.

Deu para entender como o texto simples funciona? Bem simples, não é? :p

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *