Por que não devo usar caracteres Unicode para simular estilos tipográficos (como letras minúsculas ou script)?


129

O Unicode contém vários caracteres que se parecem com variantes tipicamente estilizadas de caracteres do alfabeto latino básico e que permitem escrever textos nos estilos tipográficos correspondentes sem recorrer a marcações ou similares. Por exemplo, pode-se simular:

  • Small caps:

    ꜰᴀɴᴄɪʟ ᴛʜɪꜱy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • Roteiro:

    𝓽𝓮𝔁𝓽 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • Blackletter:

    𝖙𝖊𝖝𝖙 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

Isso encontrou interesse no Stack Exchange (por exemplo, aqui , aqui e aqui ) e críticas a essas técnicas foram feitas. Mas o que pode dar errado quando eu os uso?


224
Estou lendo isso no meu telefone e não consigo ver os dois últimos textos extravagantes.
Scimonster 26/12/16

22
Porque é ilegível em alguns dispositivos: i.stack.imgur.com/kM73J.png
Chris Kent

15
Como alguns de nós desejam ver as páginas da Web naquilo que consideramos fontes legíveis (e tamanhos, cores, etc.), usamos, por exemplo, folhas de estilo CSS do usuário para substituir os estilos dos autores. Você pode notar que, mesmo que seus três exemplos sejam exibidos no meu dispositivo, aparentemente exatamente como você pretende que eles apareçam, para mim eles são apenas legíveis na fronteira. Por que você colocaria seus desejos artísticos acima da facilidade de leitura de seus leitores?
Jamesqf 26/12/16

38
Aqui está uma observação interessante: o Edge não consegue encontrar texto nos dois últimos exemplos e o Chrome não consegue encontrar o texto no primeiro. (Tente Ctrl + F'ing em BEHOLD nos dois navegadores.) Não verificou o Firefox.
Schism

22
@Schism O Firefox não encontra nenhum deles. Parece que o Chrome provavelmente usa a normalização NFKC / NFKD antes da pesquisa, que decompõe o texto do script e da blacklist para o latim básico. O Firefox parece não fazer isso. Edge ... está fazendo algo estranho.
27416 Bob

Respostas:


224

Geral

Esses caracteres não se destinam a texto regular em alfabeto latino, mas a fonética, texto em alfabeto cirílico, para uso como símbolos matemáticos (representando variáveis) ou similares. A única maneira compatível com Unicode de codificar texto no alfabeto latino básico é usar os caracteres predominantemente usados ​​para esse fim (ou seja, do bloco Unicode latino básico ).

Como em muitos outros padrões, você deve pensar duas vezes em violar o Unicode. Além disso, o Unicode compreende tantos sistemas de escrita, casos de uso e outras coisas que existem apenas para compatibilidade retroativa com outros padrões 1, que compreender completamente todas as suas motivações é uma ciência própria. Para encurtar a história, a menos que você realmente saiba realmente o que está fazendo, é extremamente provável que algo quebre que você nem tenha remotamente pensado.

Exemplos específicos

Acessibilidade

O texto codificado não existe apenas para ser renderizado em alguma fonte. Também pode ser interpretado, por exemplo, por leitores de tela. E um leitor de tela não precisa adivinhar se

𝓽𝓱𝓮

deve ser o artigo definido ou o produto matemático 2 das variáveis ​​𝓽, 𝓱 e 𝓮 - e é para isso que esses caracteres são feitos. O melhor comportamento será, portanto, que ele explique esses caracteres, por exemplo, dizendo literalmente o seguinte:

negrito script pequeno t, negrito script pequeno h, negrito script pequeno e

Não deveria apenas dizer "o", porque, em vez disso, não leria adequadamente textos matemáticos cujos símbolos formam uma palavra pronunciável. 3

Portabilidade

Se o seu texto for bem renderizado na sua máquina, isso não significa que também estará na do leitor. O exemplo mais óbvio é que o leitor não possui nenhuma fonte que suporte esses caracteres ou o texto é renderizado por um software que não suporta fontes de fallback. É certo que isso está se tornando cada vez menos comum. Porém, lembre-se de que algumas pessoas como disléxicos precisam de fontes especiais com menor probabilidade de suportar esses caracteres.

Mas mesmo que a máquina do leitor use apenas uma fonte diferente, isso pode tornar o texto consideravelmente menos legível. Para um primeiro exemplo , isso é renderizado com duas fontes diferentes:

𝓉𝒽ℯ renderizado com FreeSerif e STIX

Serif livre renderiza o texto como você provavelmente gostaria que fosse renderizado ao usar caracteres especiais para simular texto, ou seja, simulando a escrita manual com um traço contínuo. No entanto, esses caracteres são criados para serem usados ​​como símbolos matemáticos, conectando o que não faz sentido. Portanto, a renderização do STIX , projetada especificamente para fins matemáticos, está mais alinhada com a maneira como esses caracteres devem ser usados.

Em um segundo exemplo , suponha que você ou o leitor coloque itálico em "por favor" por algum motivo. Com uma boa fonte, você terá 4 :

pode ser renderizado em vertical e em itálico.  itálico lê como "cum my bar"

A razão para isso é que as letras maiúsculas foram (parcialmente) simuladas com letras cirílicas, e o itálico cirílico às vezes parece muito diferente de suas contrapartes verticais . Então, novamente, este é o comportamento adequado.

Pesquisabilidade

Como primeiro exemplo, considere o que você gostaria de fazer uma pesquisa razoável com o caractere 𝒲 (script matemático W ). Suponha que a pesquisa tenha dois modos, o modo padrão e o modo exato (geralmente chamado com distinção entre maiúsculas e minúsculas ). Esse caractere deve ser:

  • encontrado ao pesquisar w ou W no modo padrão - para aqueles que não querem se incomodar em inserir ou copiar e colar o caractere especial no campo de pesquisa;

  • encontrado ao pesquisar 𝒲 no modo exato - para quem deseja pesquisar onde a variável correspondente é mencionada em um documento matemático³;

  • não encontrado ao pesquisar 𝓌, w ou W no modo exato, devido à quebra de uma pesquisa semelhante à acima.

No entanto, se você usar esse caractere para simular texto comum, ele deverá ser encontrado ao pesquisar W ou 𝒲 no modo exato, que está em conflito com o acima.

Como segundo exemplo, considere que caracteres cirílicos nunca devem ser encontrados ao pesquisar caracteres latinos e vice-versa, pois são coisas completamente diferentes. No entanto, se você usar caracteres cirílicos para simular letras maiúsculas em latim, será necessário que isso aconteça, se você não quiser que a capacidade de pesquisa seja interrompida. Isso levaria as pessoas a encontrarem muitas coisas inúteis se procurarem uma palavra rara do alfabeto latino que, por acaso, corresponde às letras minúsculas falsas de alguma palavra popular do alfabeto cirílico (e vice-versa).

Uma opção de pesquisa exata não pode resolver esse problema, pois ela é reservada para outros fins nesses alfabetos.

Em geral , é impossível criar uma pesquisa (sem uma quantidade insana de opções) que não seja interrompida usando caracteres especiais para simular texto em estilo latino.


1  Você conhece o XKCD sobre a inevitável falha na unificação de padrões ? Bem, o Unicode teve sucesso.
2  ou qualquer que seja o operador vazio da convenção pertinente.
3  Estou ciente de que muito poucos textos matemáticos hoje em dia suportam essa codificação ou algo compatível com ela, mas o ponto é que algum dia eles esperam. O texto que abusar de Unicode ainda pode estar por aí e ser lido.
4  A menos que você esteja localizando para macedônio ou sérvio, no qual obterá resultados diferentes, mas ainda indesejáveis.


Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Journeyman Geek

11
E o terceiro exemplo? Por que o texto em blackletter existe no Unicode e não apenas em algumas fontes?
posfan12

2
@ posfan12: É usado como um alfabeto matemático distinto - como os caracteres do script. (Note que o exemplo de numeração aqui não tem nada a ver com os pontos de bala em questão.)
Wrzlprmft

3
Seu exemplo pequenas CPAs sugere um puzzle / competitoin: Encontre uma frase válida que se torna uma frase diferente quando em itálico ... (ambos interpretados por leitores latino-based humanos, por exemplo)
Hagen von Eitzen

67

O que pode dar errado? Bem, eu vejo isso:

insira a descrição da imagem aqui

no Firefox 50.1.0 no Windows 7.

O problema de falta de glifos , neste caso em um dispositivo móvel, é ilustrado em uma imagem dada pelo usuário Chris Kent em um comentário , que eu recortei e redimensionei do original :

insira a descrição da imagem aqui

E usuário ETAS gentilmente contribuíram com outro exemplo:

insira a descrição da imagem aqui



7
@ Lilienthal Estou impressionado com quantos anos você deve ter passado sem verificar ou instalar atualizações. Quero dizer, ainda estou usando algo baseado no Firefox 3.5 em alguns dispositivos, mas não tenho exatamente a opção (dispositivo muito bom, mas nenhum navegador utilizável mais novo está disponível)
mtraceur

16
@ Lilienthal Em algum momento de 2020, os principais números de versão do Firefox podem exigir números de 64 bits. Logo depois disso, o número da versão ocupará mais espaço do que o programa real. Na tentativa de recuperar a participação de mercado, os números de versão do Chrome precisarão de planetas inteiros para armazená-los.
Andrew Morton

2
Vocês têm alguma idéia de quantas vulnerabilidades de segurança conhecidas e ativas estão expostas ao usar navegadores antigos?
Zach Lipton

3
@Zach Lipton: Você percebe que isso está na lista das minhas prioridades? # 1 está tendo algo que eu realmente posso usar. Embora talvez o pessoal do Firefox (e muitos outros) tenha adotado um novo paradigma: segurança através da inutilização.
Jamesqf

29

Estou tendo um problema XY com isso.

Y e X aparecem menores que o restante do texto

Aqui, vemos que Y e X aparecem menores que o restante do texto. Em certos níveis de zoom, eles parecem ter o mesmo tamanho, mas isso parece ter exposto um problema com esses glifos específicos nessa fonte específica.


Eu posso oferecer três explicações possíveis para o que você está vendo: 1) Dicas ruins . 2) Uma fonte de fallback é usada para tudo, exceto x e y. 3) Design incorreto da fonte: letras minúsculas foram projetadas para serem ligeiramente maiores que as letras minúsculas (o que é uma opção válida) e depois usadas para caracteres fonéticos e cirílicos Unicode - o que não é uma boa escolha, pois, por exemplo, no uso fonético, esses caracteres tem que se harmonizar com caracteres latinos básicos. - De qualquer maneira: os pontos 1) e 3) não são causados ​​por abuso de Unicode. O ponto 2) já foi abordado nas outras respostas.
Wrzlprmft

12
@Wrzlprmft: Por definição, eles são abuso de Unicode porque o Unicode não possui letras maiúsculas. O que o unicode possui são letras que se parecem com letras maiúsculas nos blocos de alfabetos fonéticos e no bloco Latin Extended-D. Especificamente, nem os dois blocos fonéticos nem o latino-D estendido contêm a letra que se parece com letras maiúsculas X , portanto, meu palpite é que o X vem de outro lugar, provavelmente o bloco cirílico. A diferença não é causada por 1, 2 nem 3. É causada pela letra pertencente a outro alfabeto.
slebetman

@slebetman: O small-caps x é apenas um x minúsculo regular (você pode simplesmente copiar o personagem da pergunta e inspecioná-lo). E um x minúsculo precisa se harmonizar com os caracteres fonéticos, porque também é usado como caractere fonético. Ele também deve ter a mesma altura dos caracteres em letras cirílicas, pois você não deseja que palavras cirílicas se destacem do texto em latim (e vice-versa).
Wrzlprmft

19
Voto positivo para as gargalhadas em "XY problem" :)
Andrew Morton

13

O uso de caracteres não latinos, que meio que parecem com os latinos, coloca você na companhia de spammers, vendedores de pornografia e quem sabe o que eles estão fazendo para dissemblers que desejam que seu texto seja pesquisável, indescritível e repudiável. ("Eu nunca disse que era seguro! Eu disse que era sigma-alfa-integral-sinal-epislon !!! Não pode me processar !!!")

Se você é confortável nesse clube, então vá em frente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.