Codificação Unicode 2. Pré-requisitos para a criação e desenvolvimento de Unicode

Olá queridos leitores do blog. Hoje falaremos com você sobre de onde vêm os krakozyabrs no site e nos programas, quais codificações de texto existem e quais devem ser usadas. Vamos dar uma olhada mais de perto na história de seu desenvolvimento, começando pelo ASCII básico, bem como suas versões estendidas CP866, KOI8-R, Windows 1251, e terminando com as codificações modernas do Unicode Consortium UTF 16 e 8.

Para alguns, essa informação pode parecer redundante, mas você saberia quantas perguntas eu recebo especificamente com relação a krakozyabrs rastreados (um conjunto de caracteres ilegíveis). Agora terei a oportunidade de encaminhar a todos o texto deste artigo e procurar de forma independente meus batentes. Bem, prepare-se para absorver as informações e tentar seguir o curso da história.

ASCII - codificação básica de texto para latim

O desenvolvimento das codificações de texto ocorreu simultaneamente com a formação da indústria de TI e, durante esse período, elas conseguiram passar por muitas mudanças. Historicamente, tudo começou com o EBCDIC, que era bastante dissonante na pronúncia russa, o que permitia codificar letras do alfabeto latino, algarismos arábicos e sinais de pontuação com caracteres de controle.

Mas ainda assim, o ponto de partida para o desenvolvimento das codificações de texto modernas deve ser considerado o famoso ASCII(American Standard Code for Information Interchange, que em russo geralmente é pronunciado como "aski"). Ele descreve os primeiros 128 caracteres dos mais usados ​​pelos usuários de língua inglesa - letras latinas, algarismos arábicos e sinais de pontuação.

Mesmo nesses 128 caracteres descritos em ASCII, havia alguns caracteres de serviço como colchetes, barras, asteriscos, etc. Na verdade, você mesmo pode vê-los:

São esses 128 caracteres da versão original do ASCII que se tornaram o padrão e, em qualquer outra codificação, você definitivamente os encontrará e eles ficarão nessa ordem.

Mas o fato é que com a ajuda de um byte de informação é possível codificar não 128, mas até 256 valores diferentes​​(dois elevado a oito é igual a 256), portanto, seguindo versão básica Asuka apareceu um número codificações ASCII estendidas, no qual, além de 128 caracteres básicos, também era possível codificar símbolos da codificação nacional (por exemplo, russo).

Aqui, provavelmente, vale a pena falar um pouco mais sobre os sistemas numéricos usados ​​na descrição. Em primeiro lugar, como todos sabem, um computador só funciona com números no sistema binário, ou seja, com zeros e uns (“álgebra booleana”, se alguém estudou em um instituto ou escola). , cada um dos quais é um dois no grau, começando do zero, e até dois no sétimo:

Não é difícil entender que pode haver apenas 256 de todas as combinações possíveis de zeros e uns em tal construção. Sistema Binário para decimal é muito fácil. Você só precisa somar todas as potências de dois, sobre as quais existem uns.

No nosso exemplo, isso é 1 (2 elevado a zero) mais 8 (dois elevado a 3), mais 32 (dois elevado à quinta), mais 64 (alta a sexta), mais 128 (alta a sétima) . Total recebe 233 em sistema decimal acerto de contas. Como você pode ver, tudo é muito simples.

Mas se você olhar mais de perto a tabela com caracteres ASCII, verá que eles são representados em codificação hexadecimal. Por exemplo, "asterisco" corresponde em Asci ao número hexadecimal 2A. Você provavelmente sabe que em sistema hexadecimal numerais são usados, além de algarismos arábicos, também letras latinas de A (significando dez) a F (significando quinze).

Bem, para converter binário para hexadecimal recorrer ao seguinte método simples e visual. Cada byte de informação é dividido em duas partes de quatro bits, conforme mostrado na captura de tela acima. Que. em cada meio byte, apenas dezesseis valores podem ser codificados em código binário (dois à quarta potência), que pode ser facilmente representado como um número hexadecimal.

Além disso, na metade esquerda do byte, será necessário contar os graus novamente, começando do zero, e não como mostrado na captura de tela. Como resultado, por cálculos simples, obtemos que o número E9 está codificado na captura de tela. Espero que o curso do meu raciocínio e a solução para este enigma tenham ficado claros para você. Bem, agora vamos continuar, de fato, a falar sobre codificações de texto.

Versões estendidas de Asuka - codificações CP866 e KOI8-R com pseudográficos

Então, começamos a falar sobre ASCII, que foi, por assim dizer, o ponto de partida para o desenvolvimento de todas as codificações modernas (Windows 1251, Unicode, UTF 8).

Inicialmente, continha apenas 128 caracteres do alfabeto latino, algarismos arábicos e algo mais, mas na versão estendida tornou-se possível utilizar todos os 256 valores que podem ser codificados em um byte de informação. Aqueles. tornou-se possível adicionar caracteres das letras do seu idioma ao Asci.

Aqui será necessário divagar mais uma vez para explicar - Por que você precisa de codificação em tudo? textos e porque é tão importante. Os caracteres na tela do seu computador são formados com base em duas coisas - conjuntos de formas vetoriais (representações) de todos os tipos de caracteres (eles estão em arquivos co) e um código que permite extrair desse conjunto de formas vetoriais ( font file) exatamente o caractere que você precisa inserir no lugar certo.

É claro que as fontes são responsáveis ​​pelos próprios formulários vetoriais, mas o sistema operacional e os programas usados ​​nele são responsáveis ​​pela codificação. Aqueles. qualquer texto em seu computador será um conjunto de bytes, cada um dos quais codificando um único caractere desse mesmo texto.

O programa que exibe este texto na tela (editor de texto, navegador, etc.), enquanto analisa o código, lê a codificação do próximo caractere e procura a forma vetorial correspondente no arquivo desejado a fonte que está conectada para exibir este documento de texto. Tudo é simples e banal.

Isso significa que, para codificar qualquer caractere que precisemos (por exemplo, do alfabeto nacional), duas condições devem ser atendidas - a forma vetorial desse caractere deve estar na fonte usada e esse caractere pode ser codificado em codificações ASCII estendidas em um byte. Portanto, há um monte de tais opções. Apenas para codificar caracteres do idioma russo, existem várias variedades do Aska estendido.

Por exemplo, inicialmente havia CP866, no qual era possível usar os caracteres do alfabeto russo e era uma versão estendida do ASCII.

Aqueles. sua parte superior coincidiu completamente com a versão básica do Asuka (128 caracteres latinos, números e outras porcarias), que é mostrada na captura de tela logo acima, mas a parte inferior da tabela com codificação CP866 tinha o formato mostrado na captura de tela logo abaixo e permitiu codificar outros 128 sinais (letras russas e todos os tipos de pseudográficos lá):

Você vê, na coluna da direita, os números começam com 8, porque os números de 0 a 7 referem-se à parte base ASCII (veja a primeira captura de tela). Que. a letra russa "M" no CP866 terá o código 9C (está localizado na interseção da linha correspondente com 9 e a coluna com o número C no sistema numérico hexadecimal), que pode ser escrito em um byte de informação, e se houver uma fonte adequada com caracteres russos, esta carta sem problemas será exibida no texto.

De onde veio essa quantia? pseudográficos em CP866? O fato é que essa codificação para texto russo foi desenvolvida naqueles anos peludos, quando não havia a distribuição de sistemas operacionais gráficos como é agora. E no Dosa e em sistemas operacionais de texto semelhantes, os pseudográficos tornaram possível diversificar de alguma forma o design dos textos e, portanto, abundam no CP866 e em todos os outros pares da categoria de versões estendidas do Asuka.

O CP866 foi distribuído pela IBM, mas além disso, várias codificações foram desenvolvidas para caracteres russos, por exemplo, o mesmo tipo (ASCII estendido) pode ser atribuído KOI8-R:

O princípio de sua operação permanece o mesmo do CP866 descrito um pouco antes - cada caractere do texto é codificado por um único byte. A captura de tela mostra a segunda metade da tabela KOI8-R, porque a primeira metade corresponde totalmente ao Asuka básico, que é mostrado na primeira captura de tela deste artigo.

Entre as características da codificação KOI8-R, pode-se notar que as letras russas em sua tabela não estão em ordem alfabética, como, por exemplo, foi feito no CP866.

Se você observar a primeira captura de tela (da parte base, que está incluída em todas as codificações estendidas), notará que no KOI8-R as letras russas estão localizadas nas mesmas células da tabela que as letras da consoante do alfabeto latino com eles da primeira parte da mesa. Isso foi feito para a conveniência de mudar de caracteres russos para latinos descartando apenas um bit (dois à sétima potência ou 128).

Windows 1251 - a versão moderna do ASCII e por que o krakozyabry rasteja

O desenvolvimento posterior de codificações de texto deveu-se ao fato de que os sistemas operacionais gráficos estavam ganhando popularidade e a necessidade de usar pseudográficos neles acabou desaparecendo. Como resultado, surgiu todo um grupo que, em essência, ainda eram versões estendidas de Asuka (um caractere de texto é codificado com apenas um byte de informação), mas sem o uso de caracteres pseudográficos.

Eles pertenciam às chamadas codificações ANSI, que foram desenvolvidas pelo American Standards Institute. Na linguagem comum, o nome cirílico também foi usado para a variante com suporte para o idioma russo. Um exemplo disso pode servir.

Ele se compara favoravelmente com o CP866 e o ​​KOI8-R usados ​​anteriormente, pois o lugar dos símbolos pseudográficos foi ocupado pelos símbolos ausentes da tipografia russa (além do acento), bem como símbolos usados ​​​​em idiomas eslavos próximos a Russo (ucraniano, bielorrusso, etc.). ):

Devido a uma abundância de codificações do idioma russo, fabricantes e fabricantes de fontes Programas uma dor de cabeça constantemente surgia, e nós, queridos leitores, muitas vezes saímos daqueles mesmos notórios krakozyabry quando houve confusão com a versão utilizada no texto.

Muitas vezes eles saíram ao enviar e receber mensagens via o email, o que levou à criação de tabelas de conversão muito complexas, que, de fato, não podiam resolver fundamentalmente esse problema, e muitas vezes os usuários usavam a correspondência para evitar os notórios krakozyabrs ao usar codificações russas como CP866, KOI8-R ou Windows 1251.

De fato, krakozyabry, saindo em vez do texto russo, foi o resultado uso incorreto codificações linguagem dada, que não correspondia àquela em que foi codificado mensagem de texto inicialmente.

Digamos que os caracteres codificados com CP866 tentem exibir usando tabela de códigos Windows 1251, então esses mesmos krakozyabry (conjunto de caracteres sem sentido) sairão, substituindo completamente o texto da mensagem.

Uma situação semelhante ocorre muitas vezes com fóruns ou blogs, quando o texto com caracteres russos é salvo por engano na codificação errada que é usada no site por padrão ou na editor de texto, que adiciona gag ao código que não é visível a olho nu.

No final, muitas pessoas se cansaram de tal situação com muitas codificações e constantemente saindo krakozyabry, havia pré-requisitos para criar uma nova variação universal que substituiria todas as existentes e finalmente resolveria o problema com o aparecimento de textos ilegíveis . Além disso, havia o problema de idiomas como o chinês, onde os caracteres do idioma eram muito mais do que 256.

Unicode (Unicode) - codificações universais UTF 8, 16 e 32

Esses milhares de caracteres do grupo de idiomas do Sudeste Asiático não podiam ser descritos de forma alguma em um byte de informação, que era alocado para codificar caracteres em versões estendidas do ASCII. Como resultado, um consórcio chamado Unicode(Unicode - Unicode Consortium) com a cooperação de muitos líderes da indústria de TI (aqueles que produzem software, que codificam hardware, que criam fontes) que estavam interessados ​​no surgimento de uma codificação de texto universal.

A primeira variação a ser lançada sob os auspícios do Unicode Consortium foi UTF-32. O número no nome da codificação significa o número de bits que é usado para codificar um caractere. 32 bits são 4 bytes de informação que serão necessários para codificar um único caractere no novo UTF de codificação universal.

Como resultado, o mesmo arquivo com texto, codificado na versão estendida de ASCII e em UTF-32, neste último caso terá um tamanho (peso) quatro vezes maior. Isso é ruim, mas agora temos a oportunidade de codificar usando UTF o número de caracteres igual a dois elevado à potência de trinta segundos ( bilhões de personagens, que cobrirá qualquer valor realmente necessário com uma margem enorme).

Mas muitos países com idiomas do grupo europeu não precisaram usar um número tão grande de caracteres na codificação, no entanto, ao usar UTF-32, receberam um aumento de quatro vezes no peso para nada documentos de texto, e como resultado, um aumento no volume de tráfego da Internet e na quantidade de dados armazenados. Isso é muito, e ninguém poderia pagar esse desperdício.

Como resultado do desenvolvimento do Unicode, UTF-16, que acabou fazendo tanto sucesso que foi aceito como o espaço base padrão para todos os caracteres que usamos. Ele usa dois bytes para codificar um caractere. Vamos ver como é essa coisa.

V sistema operacional Windows, você pode seguir o caminho "Iniciar" - "Programas" - "Acessórios" - "Utilitários" - "Tabela de caracteres". Como resultado, uma tabela com formas vetoriais de todas as fontes instaladas em seu sistema será aberta. Se você escolher em " Opções adicionais» Conjunto de caracteres Unicode, você pode ver para cada fonte separadamente todo o intervalo de caracteres incluídos nela.

A propósito, clicando em qualquer um deles, você pode ver seu byte duplo código no formato UTF-16, composto por quatro dígitos hexadecimais:

Quantos caracteres podem ser codificados em UTF-16 usando 16 bits? 65536 (dois à potência de dezesseis), e foi esse número que foi adotado como espaço base em Unicode. Além disso, existem maneiras de codificar com ele cerca de dois milhões de caracteres, mas limitado a um espaço estendido de um milhão de caracteres de texto.

Mas mesmo esta versão bem-sucedida da codificação Unicode não trouxe muita satisfação para aqueles que escreveram, digamos, programas apenas em língua Inglesa, porque eles, depois de mudar da versão estendida de ASCII para UTF-16, o peso dos documentos dobrou (um byte por caractere em Asci e dois bytes por mesmo caractere em UTF-16).

É isso para a satisfação de todos e de tudo no consórcio Unicode, decidiu-se apresentar codificação de comprimento variável. Chama-se UTF-8. Apesar dos oito no nome, ele realmente tem um comprimento variável, ou seja, cada caractere de texto pode ser codificado em uma sequência de um a seis bytes.

Na prática, em UTF-8, apenas o intervalo de um a quatro bytes é usado, pois por trás de quatro bytes de código, nada é sequer teoricamente possível de se imaginar. Todos os caracteres latinos nele são codificados em um byte, assim como no bom e velho ASCII.

Notavelmente, no caso de codificar apenas latim, mesmo aqueles programas que não entendem Unicode ainda lerão o que está codificado em UTF-8. Aqueles. a parte base do Asuka simplesmente passou para esta ideia do Unicode Consortium.

Caracteres cirílicos em UTF-8 são codificados em dois bytes e, por exemplo, caracteres georgianos em três bytes. O Unicode Consortium, depois de criar UTF 16 e 8, resolveu o problema principal - agora temos as fontes têm um único espaço de código. E agora seus fabricantes só podem preenchê-lo com formas vetoriais de caracteres de texto com base em seus pontos fortes e capacidades. Agora mesmo em conjuntos.

Na “Tabela de Caracteres” acima, você pode ver que fontes diferentes suportam um número diferente de caracteres. Algumas fontes ricas em Unicode podem ser muito grandes. Mas agora eles diferem não por terem sido criados para codificações diferentes, mas pelo fato de que o fabricante da fonte preencheu ou não o espaço de código único com uma ou outra forma vetorial até o final.

Krakozyabry em vez de letras russas - como corrigir

Vamos agora ver como krakozyabras aparecem em vez de texto, ou, em outras palavras, como a codificação correta para o texto russo é escolhida. Na verdade, ele é definido no programa em que você cria ou edita esse mesmo texto, ou codifica usando fragmentos de texto.

Para editar e criar arquivos de texto Eu pessoalmente uso um muito bom, na minha opinião, . No entanto, ele pode destacar a sintaxe de mais uma centena de linguagens de programação e marcação, e também tem a capacidade de ser estendida usando plugins. Ler visão geral detalhada este maravilhoso programa no link fornecido.

No menu superior do Notepad ++ existe um item "Codificações", onde você terá a oportunidade de converter uma opção existente para a utilizada em seu site por padrão:

No caso de um site em Joomla 1.5 e superior, bem como no caso de um blog em WordPress, para evitar o aparecimento de bugs, escolha a opção UTF8 sem BOM. Qual é o prefixo BOM?

O fato é que, quando eles desenvolveram a codificação UTF-16, por algum motivo, decidiram anexar a ela a capacidade de escrever um código de caractere, tanto em sequência direta (por exemplo, 0A15) quanto inversa (150A) . E para que os programas entendam em qual sequência ler os códigos, foi inventado BOM(Byte Order Mark ou, em outras palavras, assinatura), que se expressava na adição de três bytes adicionais logo no início dos documentos.

Na codificação UTF-8, nenhuma BOM foi fornecida no consórcio Unicode e, portanto, adicionar uma assinatura (esses mais notórios três bytes adicionais ao início do documento) simplesmente impede que alguns programas leiam o código. Portanto, ao salvar arquivos em UTF, devemos sempre escolher a opção sem BOM (sem assinatura). Então você avança proteja-se de rastejar krakozyabry.

Notavelmente, alguns programas no Windows não sabem como fazer isso (eles não podem salvar texto em UTF-8 sem BOM), por exemplo, o mesmo notório Windows Notepad. Ele salva o documento em UTF-8, mas ainda adiciona a assinatura (três bytes extras) ao início dele. Além disso, esses bytes serão sempre os mesmos - leia o código em sequência direta. Mas nos servidores, por causa dessa pequena coisa, pode surgir um problema - o krakozyabry sairá.

Portanto, de forma alguma não use o bloco de notas normal do Windows para editar documentos do seu site, se você não quiser a aparência de krakozyabrov. Considero o editor Notepad ++ já mencionado como a melhor e mais simples opção, que praticamente não tem inconvenientes e consiste apenas em vantagens.

No Notepad++, ao selecionar uma codificação, você terá a opção de converter o texto para a codificação UCS-2, que é inerentemente muito próxima do padrão Unicode. Também no Bloco de Notas será possível codificar texto em ANSI, ou seja, em relação ao idioma russo, este será o Windows 1251, que já descrevemos um pouco acima, de onde vem essa informação?

Está registrado no registro da sua sala de cirurgia Sistemas Windows- qual codificação escolher no caso de ANSI, qual escolher no caso de OEM (para o idioma russo será CP866). Se você instalar outro idioma padrão em seu computador, essas codificações serão substituídas por outras semelhantes da categoria ANSI ou OEM para esse mesmo idioma.

Depois de salvar o documento no Notepad ++ na codificação que você precisa ou abrir o documento do site para edição, você pode ver seu nome no canto inferior direito do editor:

Para evitar krakozyabrov, além das ações descritas acima, será útil escrever informações sobre essa codificação em seu cabeçalho do código-fonte de todas as páginas do site para que não haja confusão no servidor ou host local.

Em geral, em todas as linguagens de marcação de hipertexto, exceto Html, é usada uma declaração xml especial, que especifica a codificação do texto.

Antes de analisar o código, o navegador sabe qual versão está sendo usada e como exatamente os códigos de caracteres desse idioma devem ser interpretados. Mas o que é digno de nota, se você salvar o documento no unicode padrão, essa declaração xml pode ser omitida (a codificação será considerada UTF-8 se não houver BOM ou UTF-16 se houver BOM).

No caso de um documento Linguagem HTML usado para especificar a codificação Metaelemento, que é escrito entre a tag Head de abertura e fechamento:

... ...

Esta entrada é bem diferente daquela aceita em , mas é totalmente consistente com o novo padrão Html 5 que está sendo introduzido lentamente e será entendido de forma absolutamente correta por qualquer pessoa que o use. este momento navegadores.

Em teoria, o elemento Meta com a codificação documento html seria melhor colocar o mais alto possível no cabeçalho do documento para que no momento da reunião no texto do primeiro caractere não da base ANSI (que sempre será lido corretamente e em qualquer variação), o navegador já deverá ter informações de como interpretar os códigos desses caracteres.

Boa sorte para você! Até breve no site das páginas do blog

Você pode estar interessado

O que aconteceu endereço URL Qual é a diferença entre links absolutos e relativos para um site
OpenServer - moderno servidor local e um exemplo de seu uso para Instalações do WordPress no computador
O que é Chmod, quais permissões atribuir a arquivos e pastas (777, 755, 666) e como fazê-lo via PHP
Pesquisa Yandex no site e na loja online

Na tentativa de configurar esta ou aquela função da Internet, qualquer usuário deve ter se deparado com um conceito como "Unicode". Para descobrir o que esse conceito significa, leia Este artigo para terminar.

"Unicode": definição

O termo "Unicode" hoje se refere a um padrão de codificação de caracteres. Este padrão foi proposto em 1991 pela organização sem fins lucrativos Unicode Inc. O padrão Unicode foi projetado para combinar um grande número de caracteres diferentes em um documento. Uma página criada com base nessa codificação pode conter hieróglifos, letras e símbolos matemáticos. Nesta codificação, todos os caracteres são exibidos sem problemas.

"Unicode": motivos para criação

Muito antes do advento do sistema Unicode, as codificações eram escolhidas com base nas preferências do autor do documento. Muitas vezes, por esse motivo, para ler um documento, era necessário usar tabelas diferentes. No entanto, isso teve que ser feito várias vezes. Isso complica significativamente a vida dos usuários comuns. Como mencionado anteriormente, em 1991, para resolver esse problema, a organização sem fins lucrativos Unicode Inc. propôs a utilização de um novo tipo de codificação de informação. Esse tipo codificação foi criada para combinar uma ampla variedade de padrões. A codificação Unicode nos permitiu alcançar o impossível: criar uma ferramenta que suporta uma enorme variedade de caracteres. O resultado superou as expectativas: foram obtidos documentos que podiam conter simultaneamente texto em russo e inglês, além de expressões matemáticas e em latim. Antes da criação sistema unificado desenvolvedores de codificação tiveram que resolver uma série de problemas decorrentes da existência de um grande número de padrões que já existiam em este momento. O mais comum desses problemas eram limitações de conjuntos de caracteres, scripts élficos, duplicação de fontes e o problema de converter diferentes codificações.

"Unicode": uma digressão na história

Imagine o seguinte quadro: no estaleiro dos anos 80, a informática ainda não estava tão difundida e tem um visual diferente do de hoje. Cada sistema operacional é único à sua maneira e modificado por entusiastas para determinadas necessidades específicas. Como resultado, a necessidade de troca de informações levou a melhorias adicionais. Ao tentar ler um documento criado em outro sistema operacional, conjuntos de caracteres estranhos geralmente eram exibidos na tela. Isso exigia mais trabalho com a codificação, que nem sempre era possível concluir rapidamente. Às vezes, levava vários meses para processar o documento necessário. Os usuários que muitas vezes precisam trocar informações começaram a criar tabelas de conversão especiais para si. Trabalhar com essas tabelas revelou uma característica interessante: é necessário criar essas tabelas simultaneamente em duas direções. A máquina não pode realizar uma inversão banal de cálculos. Para isso, o arquivo de origem é escrito na coluna da direita e o resultado na coluna da esquerda. Pelo contrário, eles não podem ser reorganizados. Se você precisar usar alguns caracteres especiais no documento, primeiro precisa adicioná-los e depois explicar a outro usuário o que precisa ser feito com eles para que não se transformem em “rachaduras”. Também vale a pena considerar que cada codificação teve que desenvolver suas próprias fontes. Isso levou à criação de um grande número de duplicatas no sistema operacional. Assim, por exemplo, em uma página, o usuário pode ver uma dúzia de fontes idênticas ao padrão Times New Roman, mas marcadas com UCS-2, UTF-16, UTF-8, ANSI. Assim, há uma necessidade de desenvolver um padrão universal.

"Unicode": criadores

O início da história da criação do "Unicode" pode ser atribuído a 1987. Foi então que Joe Becker da Xerox, juntamente com Mark Davis e Lee Collins da Apple, começaram a pesquisar o desenvolvimento prático de uma codificação universal. Em 1988, Joe Becker publicou um projeto para uma codificação internacional multilíngue. Alguns meses depois, o grupo de desenvolvimento Unicode de trabalho foi expandido. Incluiu especialistas como Glenn Wright da Sun Microsystems, Mike Kernegan e Ken Whistler da RLG. Isso possibilitou concluir o trabalho de formação preliminar de um único padrão de codificação.

"Unicode": uma descrição geral

O Unicode é baseado em conceito geral símbolo. Essa definição é entendida como um fenômeno abstrato que existe na forma de escrita, realizada por meio de grafemas. Em Unicode, a cada caractere é atribuído um código único que pertence a um ou outro bloco do padrão. Assim, por exemplo, o grafema "B" está presente tanto em inglês quanto em russo, mas corresponde a dois caracteres diferentes. Esses caracteres também podem ser convertidos em minúsculas. Isso significa que cada um desses símbolos é descrito por uma chave, um conjunto de propriedades e um nome.

"Unicode": vantagens

O Unicode difere de outros sistemas de codificação modernos por uma enorme quantidade de caracteres para "criptografar" vários caracteres. O fato é que as codificações anteriores tinham apenas 8 bits. Isso significa que eles suportavam apenas 28 caracteres. O novo desenvolvimento tinha 216 caracteres, o que foi um grande passo à frente. Assim, tornou-se possível codificar quase todos os alfabetos existentes. A necessidade de usar tabelas de conversão com o advento do "Unicode" desapareceu. A existência de um único padrão simplesmente reduziu sua utilidade a zero. Ao mesmo tempo, o "kryakozyabry" também desapareceu. O surgimento de um novo padrão tornou sua existência impossível. A necessidade de criar fontes duplicadas também foi eliminada.

"Unicode": desenvolvimento

Apesar do progresso não parar, a codificação Unicode continua a ocupar uma posição de liderança no mundo. Isso se tornou possível em grande parte devido ao fato de que se tornou facilmente implementado e amplamente utilizado. No entanto, não se deve presumir que a mesma codificação Unicode é usada hoje como era há 25 anos. Hoje a versão 5.x.x é usada. O número de caracteres codificados aumentou para 231. Desde sua criação até o advento da versão 2.0.0, a codificação Unicode quase dobrou o número de caracteres incluídos nela. Nos anos seguintes, esse crescimento de oportunidades continuou. Quando a versão 4.0.0 apareceu, tornou-se necessário aumentar o próprio padrão. Como resultado, a codificação Unicode assumiu a forma que conhecemos hoje.

O que mais é útil em Unicode? Além do enorme número de caracteres em constante crescimento, a codificação Unicode tem um recurso bastante útil. Isso é normalização. A codificação não desperdiça recursos do computador na verificação regular do mesmo caractere, que pode ter uma grafia semelhante em diferentes alfabetos. Para isso, é usado um algoritmo especial, que permite exibir caracteres semelhantes separadamente em uma coluna e acessá-los, em vez de verificar todas as informações a cada vez. No total, quatro desses algoritmos foram desenvolvidos e implementados. A transformação em cada um deles é realizada de acordo com um determinado princípio que difere dos outros.

Todo usuário da Internet, na tentativa de configurar uma ou outra de suas funções, viu pelo menos uma vez a palavra escrita "Unicode" no visor. O que é, você aprenderá lendo este artigo.

Definição

Unicode é um padrão de codificação de caracteres. Foi proposto pela organização sem fins lucrativos Unicode Inc. em 1991. O padrão foi desenvolvido com o objetivo de combinar tantos tipos diferentes de caracteres quanto possível em um documento. Uma página baseada nela pode conter letras e hieróglifos de diferentes idiomas (do russo ao coreano) e símbolos matemáticos. Nesse caso, todos os caracteres dessa codificação são exibidos sem problemas.

Razões para a criação

Antigamente, muito antes do advento do sistema Unicode unificado, a codificação era escolhida com base nas preferências do autor do documento. Por esta razão, não era incomum ler um único documento usando mesas diferentes. Às vezes, isso precisava ser feito várias vezes, o que complicava significativamente a vida de um usuário comum. Como já mencionado, uma solução para este problema foi proposta em 1991 pela organização sem fins lucrativos Unicode Inc., que propôs um novo tipo de codificação de caracteres. Pretendeu-se unir padrões obsoletos e diversos. "Unicode" é uma codificação que permitiu alcançar o impensável na época: criar uma ferramenta que suporte um grande número de caracteres. O resultado superou muitas expectativas - surgiram documentos que continham simultaneamente texto em inglês e russo, latim e expressões matemáticas.

Mas a criação de uma única codificação foi precedida pela necessidade de resolver uma série de problemas que surgiram devido à enorme variedade de padrões que já existiam naquela época. O mais comum deles:

  • letras élficas, ou "krakozyabry";
  • conjunto limitado de caracteres;
  • problema de conversão de codificação;
  • fontes duplicadas.

Uma pequena excursão histórica

Imagina que é nos anos 80. Tecnologia informática ainda não é tão comum e tem um visual diferente de hoje. Naquela época, cada sistema operacional é único à sua maneira e modificado por cada entusiasta para necessidades específicas. A necessidade de compartilhar informações se transforma em um refinamento adicional de tudo no mundo. Uma tentativa de ler um documento criado em outro sistema operacional geralmente exibe um conjunto incompreensível de caracteres na tela e os jogos com codificação começam. Nem sempre é possível fazer isso rapidamente e, às vezes, o documento necessário pode ser aberto em seis meses ou até mais tarde. As pessoas que trocam informações frequentemente criam tabelas de conversão para si mesmas. E trabalhar neles revela detalhe interessante: você precisa criá-los em duas direções: “do meu para o seu” e vice-versa. A máquina não pode fazer uma inversão banal de cálculos, pois para ela a fonte está na coluna da direita e o resultado na coluna da esquerda, mas não vice-versa. Se houver a necessidade de usar algum caractere especial no documento, ele deve primeiro ser adicionado, e depois também explicar ao parceiro o que ele precisa fazer para que esses caracteres não se tornem "loucos". E não vamos esquecer que para cada codificação tivemos que desenvolver ou implementar nossas próprias fontes, o que levou à criação de um grande número de duplicatas no SO.

Imagine também que na página de fontes você verá 10 pedaços de Times New Roman idênticos com pequenas marcas: para UTF-8, UTF-16, ANSI, UCS-2. Agora você entende que o desenvolvimento de um padrão universal era uma necessidade urgente?

"Pais Criadores"

As origens do Unicode remontam a 1987, quando Joe Becker, da Xerox, junto com Lee Collins e Mark Davis, da Apple, começaram a pesquisar a criação prática de um conjunto de caracteres universal. Em agosto de 1988, Joe Becker publicou uma proposta preliminar para um sistema de codificação multilíngue internacional de 16 bits.

Após alguns meses grupo de trabalho O Unicode foi expandido para incluir Ken Whistler e Mike Kernegan do RLG, Glenn Wright da Sun Microsystems e alguns outros, completando o trabalho preliminar em um único padrão de codificação.

descrição geral

Unicode é baseado no conceito de um caractere. Essa definição se refere a um fenômeno abstrato que existe em um tipo específico de escrita e se realiza por meio de grafemas (seus “retratos”). Cada caractere é especificado em "Unicode" por um código único pertencente a um bloco específico do padrão. Por exemplo, o grafema B existe nos alfabetos inglês e russo, mas em Unicode ele tem 2 caracteres diferentes. Uma transformação é aplicada a eles, ou seja, cada um deles é descrito por uma chave de banco de dados, um conjunto de propriedades e um nome completo.

Benefícios do Unicode

De outros contemporâneos, a codificação Unicode foi distinguida por uma enorme oferta de caracteres para caracteres "criptografados". O fato é que seus antecessores tinham 8 bits, ou seja, suportavam 28 caracteres, mas novo desenvolvimento já tinha 216 caracteres, o que foi um grande passo à frente. Isso tornou possível codificar quase todos os alfabetos existentes e comuns.

Com o advento do "Unicode", não há necessidade de usar tabelas de conversão: como padrão único ele simplesmente negou a necessidade deles. Da mesma forma, os "crakozyabry" caíram no esquecimento - um único padrão os tornou impossíveis, além de eliminar a necessidade de criar fontes duplicadas.

Desenvolvimento de Unicode

Claro, o progresso não fica parado, e 25 anos se passaram desde a primeira apresentação. No entanto, a codificação Unicode mantém teimosamente sua posição no mundo. De muitas maneiras, isso se tornou possível devido ao fato de ter sido facilmente implementado e difundido, sendo reconhecido por desenvolvedores de software proprietário (pago) e de código aberto.

Ao mesmo tempo, não se deve supor que hoje a mesma codificação Unicode esteja disponível para nós há um quarto de século. No momento, sua versão mudou para 5.xx, e o número de caracteres codificados aumentou para 231. A capacidade de usar uma oferta maior de caracteres foi abandonada para ainda manter o suporte para Unicode-16 (uma codificação onde seus número máximo foi limitado a 216). Desde a sua criação e até a versão 2.0.0, o "Padrão Unicode" aumentou o número de caracteres que foram incluídos nele, quase 2 vezes. O crescimento das oportunidades continuou nos anos seguintes. Na versão 4.0.0, já havia a necessidade de aumentar o próprio padrão, o que foi feito. Como resultado, o "Unicode" adquiriu a forma em que o conhecemos hoje.

O que mais está em Unicode?

Além do número enorme e constantemente reabastecido de personagens, ele possui mais um recurso útil. Esta é a chamada normalização. Em vez de percorrer todo o documento caractere por caractere e substituir os ícones correspondentes da tabela de pesquisa, é usado um dos algoritmos de normalização existentes. Sobre o que estamos conversando?

Em vez de desperdiçar recursos do computador verificando regularmente o mesmo caractere, que pode ser semelhante em diferentes alfabetos, um algoritmo especial é usado. Ele permite que você retire caracteres semelhantes em uma coluna separada da tabela de substituição e faça referência a eles já, e não verifique novamente todos os dados repetidamente.

Quatro desses algoritmos foram desenvolvidos e implementados. Em cada um deles, a transformação ocorre de acordo com um princípio estritamente definido que difere dos demais, portanto, não é possível chamar nenhum deles o mais eficaz. Cada um foi desenvolvido para necessidades específicas, foi implementado e utilizado com sucesso.

Distribuição do padrão

Em seus 25 anos de história, o Unicode é provavelmente a codificação mais utilizada no mundo. Programas e páginas da web também são ajustados a este padrão. O fato de o Unicode ser usado hoje por mais de 60% dos recursos da Internet pode falar da amplitude da aplicação.

Agora você sabe quando o padrão Unicode apareceu. O que é isso, você também conhece e poderá apreciar todo o significado da invenção feita por um grupo de especialistas Unicode Inc. há mais de 25 anos.

Este site requer Javascript para funcionar corretamente. Por favor, habilite o JavaScript nas configurações do seu navegador.

tabela de caracteres Unicode

mostre tudo
Faixa: 0000-001F: Caracteres de controle C0 0020-007F: Latim básico 0080-009F: Caracteres de controle C1 00A0-00FF: Latim-1 Caracteres adicionais 0100-017F: Latim estendido-A 0180-024F: Latim estendido-B 0250-02AF : alfabeto fonético internacional estendido 02B0-02FF: caracteres modificadores estendidos não combináveis ​​0300-036F: diacríticos combináveis ​​0370-03FF: alfabetos grego e copta 0400-04FF: cirílico 0500-052F: caracteres cirílicos adicionais 0530-058F: alfabeto armênio 0590 -05FF : Hebraico 0600-06FF: Árabe 0700-074F: Siríaco 0750-077F: Árabe Adicional 0780-07BF: Tana (Maldivas) 07C0-07FF: Nko 0800-083F: Samaritano 0840-085F: Mandaean 08A0-08FF: Árabe-A 0900 Estendido -097F: Devanagari 0980-09FF: Bengali 0A00-0A7F: Gurmukhi 0A80-0AFF: Gujarati 0B00-0B7F: Oriya 0B80-0BFF: Tamil 0C00-0C7F: Telugu 0C80-0CFF: Kannada 0D00-0D7F: Malayalam 0D80-0DFF: Cingalês 0E00-0E7F: Tailandês 0E80-0EFF: Lao 0F00-0FFF: Tibetano 1000-109F: Mianmar 10A0-10FF: Georgiano 1100-11FF: Khangul (escrita coreana) 1200 -137F: silabário etíope 1380-139F: caracteres adicionais etíopes 13A0-13FF: script Cherokee 1400-167F: silabário canadense 1680-169F: Ogham 16A0-16FF: script rúnico 1700-171F: Tagalog (Bayin) ) 1720-173F: Hanunoo 1740 -175F: Buhid 1760-177F: Tagbanwa 1780-17FF: Escrita Khmer 1800-18AF: Escrita mongol antiga 18B0-18FF: Silabário canadense estendido 1900-194F: Escrita Limbu 1950-197F le 1980-19DF: Novo alfabeto Tai Ly 19E0-19FF : Caracteres Khmer 1A00-1A1F: Escrita Bugi (Lontara) 1A20-1AAF: Escrita Tai Ly antiga (Tai Tham) 1B00-1B7F: Escrita balinesa 1B80-1 BBF: Escrita sudanesa 1BC0-1BFF: Escrita Batak 1C00-1C4F: Escrita Lepcha (Rong) 1C50-1C7F: Escrita Ol Chiki 1CD0-1CFF: Caracteres védicos 1D00-1D7F: Extensões fonéticas 1D80-1DBF: Extensões fonéticas adicionais 1DC0-1DFF: Adicionais diacríticos combináveis ​​1E00-1EFF: Suplemento Estendido em Latim 1F00-1FFF: Caractere Grego Estendido 2000-206F: Sinais de Pontuação 2070-209F: Sobrescritos e Subscritos 20A0-20CF: Símbolos de Moeda 20D0-20FF: Diacríticos Combináveis ​​para Símbolos 2100-214F: Tipo Letra caracteres 2150-218F: Formas numéricas 2190-21FF: Setas 2200-22FF: Operadores matemáticos 2300-23FF: Caracteres técnicos diversos 2400-243F: Ícones de código de controle 2440-245F: Caracteres OCR 2460-24FF: Letras e números incorporados 2500-257F: Símbolos de borda 2580-259F: Símbolos de preenchimento 25A0-25FF: Formas geométricas 2600-26FF: Símbolos diversos 27 00-27BF: Dingbats 27C0-27EF: Símbolos matemáticos diversos-A 27F0-27FF: Setas extras-A 2800-28FF: Braille 2900-297F: Setas extras-B 2980-29FF: Símbolos matemáticos diversos-B 2A00-2AFF: Matemática extra Operadores 2B00-2BFF: Símbolos e setas diversos 2C00-2C5F: Glagolítico 1AB0-1AFF: Diacríticos de combinação (Extensão A) 1CC0-1CCF: Conjunto de caracteres sudanês estendido A9E0-A9FF: Script de Mianmar (Extensão B) AAE0-AAFF: caractere de script Meitei estendido Conjunto AB30-AB8F: Latin Extended-E AB30-AB6F: Varang-Kshiti AB90-ABBF: Escrita Beria Zaghawa 2C60-2C7F: Latin Extended-C 2C80-2CFF: Escrita Copta 2D00-2D2F: Escrita Georgiana Adicional 2D30-2D7F: Tifinagh 2D80 -2DDF: Conjunto de Caracteres Etíope Estendido 2DE0-2DFF: Cirílico Estendido-A 2E00-2E7F: Sinais adicionais pontuação 2E80-2EFF: Caracteres CJK adicionais 2F00-2FDF: Teclas de caracteres Kangxi 2FF0-2FFF: Caracteres de descrição de caracteres 3000-303F: Caracteres CJK e pontuação 3040-309F: Hiragana 30A0-30FF: Katakana 3100-312F: Zhuyin (bopomofo) 3130- 318F: Chamo combinado com Hangul 3190-319F: Caracteres usados ​​em kambuna 31A0-31BF: Conjunto de caracteres estendido Bopomofo 31C0-31EF: Recursos CJK 31F0-31FF: Extensões fonéticas Katakana 3200-32FF: Letras aninhadas e meses de KJK 3300- 33FF: CJK Marcas de Compatibilidade 3400-4DBF: Caracteres Unificados CJK (Extensão A) 4DC0-4DFF: Hexagramas I Ching 4E00-9FFF: Caracteres Unificados CJK A000-A48F: Sílabas e A490-A4CF: Radicais e A4D0-A4FF: Alfabeto Lisu A500 -A63F: Vai Silabário A640-A69F: Cirílico estendido-B A6A0-A6FF: Script Bamum A700-A71F: Símbolos de mudança de tom A720-A7FF: Latim estendido-D A800-A82F: Siloti Nagri A830-A83F: Símbolos numéricos indianos A840- A87F: Pi quadrado Phagba Lama A880-A8DF: Saurashtra A8E0-A8FF: Devanagari Extended Character A900-A92F: Kayah Li A930-A95F: Rejang A960-A97F: Hangul (Extensão A) A980-A9DF: Javanês AA00-AA5F: Cham AA60 -AA7F: script de Mianmar (Extensão A) AA80-AADF: Escrita Tai Viet AB00-AB2F: Escrita etíope (Extensão A) ABC0-ABFF: Meitei/Manipuri AC00-D7AF: Sílabas Hangul D800-DB7F: Parte superior dos pares substitutos DB80 -DBFF: Parte superior do privado usar pares substitutos DC00-DFFF: Parte inferior dos pares substitutos E000-F8FF: Área de uso privado F900-FAFF: Caracteres compatíveis com CJK FB00-FB4F: Formas de representação alfabética FB50-FDCF: Formas de representação árabe letra-A FDF0-FDFF: Árabe-A Formulários de Representação FE00-FE0F: Seletores de Variantes de Estilo FE10-FE1F: Formulários Verticais FE20-FE2F: Metades Combináveis ​​de Caracteres FE30-FE4F: Formulários de Compatibilidade CJC FE50-FE6F: Variantes de Tamanho Pequeno FE70-FE FF: Formas árabes da letra B FF00-FFEF: Formas de meia largura e largura total FFF0-FFFF: Caracteres especiais

  • O que é Unicode?

    Unicode(Inglês) Unicode) é um padrão universal de codificação de caracteres que permite fornecer caracteres de todos os idiomas do mundo.

    Ao contrário do ASCII, um caractere é codificado como dois bytes, permitindo o uso de 65 536 personagens, contra 256 .

    Como você sabe, um byte é um inteiro de zero antes de 255 . Por sua vez, um byte consiste em oito bits que armazenam valores numéricos em forma binária, onde cada próxima unidade do bit atual é o dobro do valor do bit anterior. Assim, dois bytes podem armazenar um número de zero antes de 65 535 , o que possibilita o uso 65 536 caracteres (zero + 65 535 , zero também é um número, não é nada).

    Os caracteres Unicode são divididos em seções. Primeiro 128 tabela de repetição de caracteres ASCII.

    A família de codificações é responsável por exibir os caracteres. Unicode (Formato de transformação Unicode - UTF). A codificação mais famosa e amplamente utilizada é UTF-8.

  • Como usar a mesa?

    Os símbolos são apresentados em 16 peças por linha. Do alto você pode ver número hexadecimal a partir de 0 antes de 16 . À esquerda, números semelhantes em forma hexadecimal de 0 antes de FFF.
    Ao conectar o número à esquerda com o número na parte superior, você pode descobrir o código do caractere. Por exemplo: carta em inglês F localizado na linha 004 , em uma coluna 6 : 004 + 6 = código do caractere 0046 .

    No entanto, você pode simplesmente passar o mouse sobre símbolo específico na tabela para descobrir o código do caractere. Ou clique em um símbolo para copiá-lo, ou seu código em um dos formatos.

    Você pode inserir palavras-chave de pesquisa no campo de pesquisa, por exemplo: setas, sol, coração. Ou você pode especificar o código de caractere em qualquer formato, por exemplo: 1123, 04BC, چ. Ou o próprio símbolo, se você quiser saber o código do símbolo.

    Procurar por palavras-chave está atualmente em desenvolvimento, portanto, pode não produzir resultados. Mas muitos símbolos populares já podem ser encontrados.

Acredite ou não, existe um formato de imagem embutido no navegador. Este formato permite que você baixe imagens antes que elas sejam necessárias, fornece renderização da imagem em normal ou telas de retina e permite adicionar imagens css. OK, isso não é totalmente verdade. Este não é um formato de imagem, embora todo o resto ainda seja válido. Com ele, você pode criar ícones independentes de resolução que não demoram a carregar e são estilizados com usando CSS.

O que é Unicode?

Unicode é a capacidade de exibir corretamente letras e pontuação de diferentes idiomas na mesma página. É incrivelmente útil: os usuários poderão trabalhar com seu site em todo o mundo e ele mostrará o que você deseja - pode ser francês com diacríticos ou Kanji .

O Unicode continua evoluindo: agora a versão atual é 8.0, que tem mais de 120 mil caracteres (no artigo original publicado no início de 2014, tratava-se da versão 6.3 e 110 mil caracteres).

Além de letras e números, existem outros caracteres e ícones em Unicode. V versões mais recentes esses emojis incluídos, que você pode ver no mensageiro do iOS.

páginas HTML são criados a partir de uma sequência de caracteres Unicode e são convertidos em bytes quando enviados pela rede. Cada letra e cada símbolo de qualquer idioma tem seu próprio código único e é codificado quando o arquivo é salvo.

Ao usar o sistema de codificação UTF-8, você pode inserir caracteres Unicode diretamente no texto, mas também pode adicionar caracteres Unicode ao texto especificando um link simbólico numérico. Por exemplo, este é um símbolo de coração e você pode exibir esse símbolo simplesmente adicionando código à marcação.

Essa referência numérica pode ser especificada em formato decimal e hexadecimal. O formato decimal exige que a letra x seja adicionada no início, a entrada dará o mesmo coração ( ) da opção anterior. (2665 é a versão hexadecimal de 9829).

Se você estiver adicionando um caractere Unicode com CSS, poderá usar apenas valores hexadecimais.

Alguns dos caracteres Unicode mais usados ​​têm nomes textuais ou abreviações mais memoráveis ​​em vez de códigos numéricos, como o e comercial (& - &). Tais símbolos são chamados mnemônicos em HTML, sua lista completa está na Wikipedia.

Por que você deve usar o Unicode?

Boa pergunta, aqui estão alguns motivos:

  1. Para usar caracteres corretos de diferentes idiomas.
  2. Para substituir ícones.
  3. Para substituir ícones conectados via @font-face .
  4. Para definir classes CSS

Caracteres corretos

A primeira das razões não requer nenhuma ação adicional. Se o HTML for salvo no formato UTF-8 e sua codificação for transmitida pela rede como UTF-8, tudo deverá funcionar como deveria.

Devo. Infelizmente, nem todos os navegadores e dispositivos suportam todos os caracteres Unicode da mesma forma (mais precisamente, nem todas as fontes suportam o conjunto completo de caracteres). Por exemplo, caracteres emoji recém-adicionados não são suportados em todos os lugares.

Para suporte a UTF-8 em HTML5, adicione (se você não tiver acesso às configurações do servidor, você também deve adicionar ). O antigo doctype usa ( ).

Ícones

A segunda razão para usar Unicode é ter um grande número símbolos úteis que podem ser usados ​​como ícones. Por exemplo, , ≡ e .

Sua vantagem óbvia é que você não precisa de nenhum arquivos adicionais para adicioná-los à página, o que significa que seu site será mais rápido. Você também pode alterar sua cor ou adicionar uma sombra com CSS. E adicionando transições (transição css), você pode alterar suavemente a cor do ícone ao passar o mouse sobre ele sem imagens adicionais.

Digamos que eu queira incluir um indicador de classificação com estrelas na minha página. Eu posso fazer assim:

★ ★ ★ ☆ ☆

Você obterá o seguinte resultado:

Mas se você não tiver sorte, verá algo assim:

Mesma classificação no BlackBerry 9000

Isso acontece se os caracteres usados ​​não estiverem na fonte do navegador ou dispositivo (felizmente, esses asteriscos são perfeitamente suportados e o antigo Telefones Blackberry são a única exceção aqui).

Se não houver nenhum caractere Unicode, ele pode ser substituído por caracteres que variam de um quadrado vazio (□) a um losango com um ponto de interrogação (�).

Mas como você encontra um caractere Unicode que pode ser adequado para uso em seu design? Você pode procurá-lo em um site como o Unicodinator observando os caracteres disponíveis, mas também há a melhor maneira. - este ótimo site permite que você desenhe o ícone que você está procurando e, em seguida, oferece uma lista de caracteres Unicode semelhantes.

Usando Unicode com ícones @font-face

Se você estiver usando ícones vinculados a uma fonte externa via @font-face , os caracteres Unicode podem ser usados ​​como substituto. Dessa forma, você pode mostrar um caractere Unicode semelhante em dispositivos ou navegadores onde @font-face não é suportado:

À esquerda estão os ícones do Font Awesome no Chrome e à direita estão os caracteres de substituição Unicode no Opera Mini.

Muitas ferramentas de correspondência @font-face usam o intervalo de caracteres Unicode da área de uso privado. O problema com essa abordagem é que, se @font-face não for suportado, os códigos de caracteres serão passados ​​para o usuário sem nenhum significado.

Ótimo para criar conjuntos de ícones em @font-face e permite que você escolha um caractere Unicode adequado como base para o ícone.

Mas tenha cuidado - alguns navegadores e dispositivos não gostam de caracteres Unicode únicos quando usados ​​com @font-face . Faz sentido verificar o suporte a caracteres Unicode com o Unify - este aplicativo ajudará você a determinar o quão seguro é usar um caractere no conjunto de ícones @font-face.

Suporte para caracteres Unicode

O principal problema com o uso de caracteres Unicode como fallback é o suporte deficiente em leitores de tela (mais uma vez, algumas informações sobre isso podem ser encontradas no Unify), por isso é importante escolher cuidadosamente os caracteres que você usa.

Se o seu ícone é apenas um elemento decorativo ao lado de um rótulo de texto legível por um leitor de tela, você não precisa se preocupar muito. Mas se o ícone estiver sozinho, vale a pena adicionar um rótulo de texto oculto para ajudar os usuários de leitores de tela. Mesmo que um caractere Unicode seja lido por um leitor de tela, há uma chance de que ele seja muito diferente da finalidade pretendida. Por exemplo, ≡ (≡) como ícone de hambúrguer será lido como “idêntico” pelo VoiceOver no iOS.

Unicode em nomes de classe CSS

O fato de o Unicode poder ser usado em nomes de classes e em folhas de estilo é conhecido desde 2007. Foi então que Jonathan Snook escreveu sobre o uso de caracteres Unicode em classes auxiliares ao definir cantos arredondados. Essa ideia não recebeu muita divulgação, mas vale a pena conhecer a possibilidade de usar Unicode em nomes de classes (caracteres especiais ou cirílico).

Seleção de fonte

Poucas fontes suportam o conjunto completo de caracteres Unicode, portanto, verifique os caracteres desejados ao escolher uma fonte.

Muitos ícones no Segoe UI Symbol ou Arial Unicode MS . Essas fontes estão disponíveis em PC e Mac; Lucida Grande também possui uma quantidade razoável de caracteres Unicode. Você pode adicionar essas fontes à declaração de família de fontes para impor o número máximo de caracteres Unicode para usuários que têm essas fontes instaladas.

Como determinar o suporte a Unicode

Seria muito conveniente poder verificar a presença de um caractere Unicode específico, mas não há uma maneira garantida de fazer isso.

Caracteres Unicode podem ser eficazes quando suportados. Por exemplo, um emoji na linha de assunto de um e-mail faz com que ele se destaque do resto em caixa de correio.

Conclusão

Este artigo cobre apenas o básico do Unicode. Espero que você o ache útil e o ajude a entender melhor o Unicode e usá-lo de forma eficaz.

Lista de links

  • (Gerador de conjunto de ícones @font-face baseado em Unicode)
  • Shape Catcher (ferramenta de reconhecimento de caracteres Unicode)
  • Unicodinator (tabela de caracteres unicode)
  • Unify (verifique se há suporte a caracteres Unicode em navegadores)
  • Unitools (Coleção de ferramentas para trabalhar com Unicode)