# Homóglifo

Em ortografia e tipografia, um homóglifo é um de dois ou mais grafemas, caracteres ou glifos com formas que parecem idênticas ou muito semelhantes, mas podem ter significados diferentes. A designação também se aplica a sequências de caracteres que compartilham essas propriedades.
Em 2008, o Unicode Consortium publicou seu Relatório Técnico #36 sobre uma série de questões decorrentes da semelhança visual de caracteres em sistemas de escritas únicos e de semelhanças entre caracteres em sistemas de escritas diferentes.
Um exemplo notável de confusão homoglífica surgiu do uso de ⟨y⟩ para representar ⟨þ⟩ (thorn) ao definir textos em inglês mais antigos em fontes que não contêm o último caractere. Nos tempos modernos, isso levou a fenômenos como Ye olde shoppe, implicando incorretamente que a palavra the era anteriormente escrita ye/jiː/ em vez de þe.
Exemplos de símbolos homoglíficos são o trema e o umlaut (ambos um par de pontos, mas com significados diferentes, embora codificados com os mesmos pontos de código: ⟨¨⟩); e o hífen e o sinal de menos (ambos um traço horizontal curto, mas com significado diferente, embora muitas vezes codificado com o mesmo ponto de código: ⟨-⟩). Entre dígitos e letras, o dígito 1 e l minúsculo são sempre codificados separadamente, mas em muitas fontes são fornecidos glifos muito semelhantes, e o dígito 0 e O maiúsculo são sempre codificados separadamente, mas em muitas fontes são fornecidos glifos muito semelhantes. Praticamente todos os exemplos de pares homoglíficos de caracteres podem ser potencialmente diferenciados graficamente com glifos claramente distinguíveis e pontos de código separados, mas isso nem sempre é feito. Famílias tipográficas que não distinguem enfaticamente os homóglifos 1/l e 0/O são considerados inadequados para escrever fórmulas, URLs, códigos-fonte, IDs e outros textos onde os caracteres nem sempre podem ser diferenciados sem contexto. Fontes que distinguem glifos por meio de um zero cortado, por exemplo, são preferidas para esses usos.
O termo homógrafo às vezes é usado como sinônimo de homóglifo, mas no sentido linguístico usual, homógrafos são palavras que têm a mesma grafia, mas têm significados diferentes, uma propriedade das palavras, não dos caracteres.
Sinóglifos são glifos que parecem diferentes, mas significam o mesmo. Os sinóglifos também são conhecidos informalmente como variantes de exibição.

## Umlaut e diérese

Na época das máquinas de escrever mecânicas, eles eram digitadas com a mesma tecla, que também era usada para aspas duplas. No entanto, o trema originou-se especificamente como um par de linhas verticais curtas (não dois pontos) (ver Sütterlin). Aliás, os dois pontos acima da letra E em albanês são descritos como diéreses, mas não cumprem a função de diéreses.

## 0 e O; 1, l e I

Dois conjuntos comuns e importantes de homóglifos em uso hoje são o dígito zero e a letra O maiúscula (ou seja, 0 e O); e o dígito um, a letra L minúscula e o i maiúsculo (ou seja, 1, l e I). Nos primeiros dias das máquinas de escrever mecânicas, havia muito pouca ou nenhuma diferença visual entre esses glifos, e os digitadores os tratavam de forma intercambiável, como atalhos de teclado. Na verdade, a maioria dos teclados nem sequer tinha uma tecla para o dígito ⟨1⟩, exigindo que os usuários digitassem a letra ⟨l⟩, e alguns também omitiam o 0. À medida que esses mesmos digitadores fizeram a transição, nas décadas de 1970 e 1980, para operadores de teclado de computador, seus antigos hábitos de digitação continuaram com eles e eram uma fonte ocasional de confusão.
A maioria dos designs de tipos atuais distingue cuidadosamente entre esses homóglifos, geralmente desenhando o dígito zero mais estreito e desenhando o dígito um com serifas proeminentes. As primeiras impressões de computador foram ainda mais longe e marcaram o zero com uma barra ou ponto, o que levou a um novo conflito envolvendo a letra escandinava Ø e a letra grega Φ (phi). O redesenho dos tipos de caracteres para diferenciá-los gerou menos confusão. O grau em que dois caracteres diferentes parecem iguais para um determinado observador é chamado de "semelhança visual".

## Homóglifos com múltiplas letras

Algumas outras combinações de letras são semelhantes, por exemplo, rn é semelhante a m, cl é semelhante a d e vv é semelhante a w.
Em certas fontes com espaçamento estreito (como Tahoma), colocar a letra c ao lado de uma letra como j, l ou i criará um homóglifo, como cj cl ci (g d a).
Quando alguns caracteres são colocados um ao lado do outro, vistos juntos à primeira vista, eles dão a impressão visual de outro caractere não relacionado. Uma maneira mais precisa de dizer isso é que algumas ligaduras tipográficas podem ser semelhantes a glifos independentes. Por exemplo, a ligadura ﬁ pode ser semelhante a A em alguns tipos de letra ou fontes. Este potencial de confusão é por vezes um argumento apresentado contra o uso de ligaduras.

## Homóglifos no Unicode

O conjunto de caracteres Unicode contém muitos caracteres fortemente homoglíficos, conhecidos como "confusíveis". Estes apresentam riscos de segurança em diversas situações (abordados na UTR#36) e recentemente receberam atenção especial em relação a nomes de domínio internacionalizados. Pode-se falsificar deliberadamente um nome de domínio substituindo um caractere por seu homóglifo, criando assim um segundo nome de domínio, não facilmente distinguível do primeiro, que pode ser explorado em phishing. Em muitas fontes, a letra grega ⟨Α⟩, a letra cirílica ⟨А⟩ e a letra latina ⟨A⟩ são visualmente idênticas, assim como a letra latina ⟨a⟩ e a letra cirílica ⟨а⟩ (o mesmo pode ser aplicado ao Letras latinas "
aBceHKopTxy" e letras cirílicas "аВсеНКорТху"). Um nome de domínio pode ser falsificado simplesmente substituindo uma dessas formas por outra em um nome registrado separadamente. Existem também muitos exemplos de quase homóglifos dentro da mesma escrita, como ⟨í⟩ (com acento agudo) e ⟨i⟩, É (E com agudo) e Ė (E com ponto acima) e È (E com grave), Í (com acento agudo) e ĺ (L minúsculo com agudo). Ao discutir esta questão específica de segurança, quaisquer duas sequências de caracteres semelhantes podem ser avaliadas em termos do seu potencial para serem consideradas um 'par homóglifo', ou se as sequências parecem claramente ser palavras, como 'pseudo-homógrafos' (observando novamente que estes termos podem causar confusão em outros contextos). Na língua chinesa, muitos caracteres chineses simplificados são homóglifos dos caracteres chineses tradicionais correspondentes.
Esforços dos registros de TLDs e dos designers de navegadores da Web estão em andamento para minimizar os riscos de confusão homoglífica. Geralmente, isso é conseguido através da proibição de nomes que misturam conjuntos de caracteres de vários idiomas (toys-Я-us.org, usando a letra cirílica Я, seria inválido, mas wíkipedia.org e wikipedia.org ainda existem como sites diferentes); O registro .ca do Canadá vai um passo além ao exigir que nomes que diferem apenas em diacríticos tenham o mesmo proprietário e o mesmo registrador. O manuseio dos caracteres chineses varia: em .org e .info, o registro de uma variante torna a outra indisponível para qualquer pessoa, enquanto em .biz as versões tradicional e simplificada do mesmo nome são entregues como um pacote de dois domínios, ambos apontando para o mesmo servidor de nomes de domínio.
A documentação relevante será encontrada nos sites dos desenvolvedores e no Fórum de IDNs fornecido pela ICANN.

## Canonicalização

Homóglifos de todos os tipos podem ser detectados através de um processo chamado "canonicalização dupla". O primeiro passo neste processo é identificar conjuntos de homóglifos, ou seja, caracteres que parecem iguais para um determinado observador. A partir daqui, um único token é especificado para representar o conjunto de homóglifos. Este token é chamado de cânone. O próximo passo é converter cada caractere do texto no cânone correspondente em um processo chamado canonicalização. Se os cânones de duas execuções de texto forem iguais, mas o texto original for diferente, então existe um homóglifo no texto.