Vi essa pergunta na proposta do site Typography e me incomodou por não saber a resposta. Eu sempre tratei 'glifo' e 'caráter' como intercambiáveis.
Depois de ler uma explicação na página Modelo de codificação de caracteres Unicode , meu entendimento é aproximadamente o seguinte:
- Os caracteres são definidos pelo seu significado na linguagem, glifos, pela aparência . Portanto, a ligadura para combinar esteticamente
fi
é um glifo, mas dois caracteres.
Então, minha crença é (por favor, corrija-me se estiver errado) que a diferença prática seria:
- Analisadores de texto que não estão interessados na estética do texto lerão glifos como seus respectivos caracteres. Tão:
- Se você copiar e colar texto contendo glifos em um editor de texto sem formatação, os glifos serão convertidos em seus respectivos caracteres (um
fi
glifo de ligadura se tornaráf
ei
) - Qualquer sistema automatizado bem elaborado com base na análise de texto (por exemplo, rastreadores de mecanismo de pesquisa, leitores de tela, corretores ortográficos) interpretaria os glifos como seus respectivos caracteres.
- Um caractere pode ter muitos glifos ou conjuntos de glifos. Quero dizer que um glifo pode ter apenas um caractere, mas isso claramente não está certo, pois há um exemplo no artigo vinculado de 3 glifos e conjuntos de glifos que parecem corresponder a um caractere e a um conjunto de caracteres. Não vejo bem como isso poderia funcionar: certamente isso significa que haverá inconsistência ou ambiguidade na maneira como esses glifos são interpretados, variando de acordo com o interpretador. (ou varia por idioma ou fonte?)
- Enquanto os navegadores de glifos (por exemplo, o do Illustrator) contêm o conjunto completo de fontes, os mapas de caracteres (por exemplo, o mapa de caracteres do Windows) contêm apenas caracteres, não glifos com vários caracteres, como ligaduras (algo que eu nunca havia notado antes)
- Se você copiar e colar texto contendo glifos em um editor de texto sem formatação, os glifos serão convertidos em seus respectivos caracteres (um
Sinto que estou quase lá, mas claramente entendi mal algo em algum lugar ao longo da linha: não apenas a coisa "Um glifo com vários caracteres", mas também, copiar e colar o comportamento com ligaduras não é exatamente o que eu esperava:
- Copie a ligadura
fi
do Illustrator para esta caixa de entrada: cola comofi
(dois caracteres) conforme o esperado. - Cole o código HTML para it (
fi
) - exibido como a ligadura quando não estiver em um bloco de código (fi - que nesta fonte não se parece muito com uma ligadura, mas você verá um se tentar selecionar apenas metade ) e o código quando em um bloco de código (fi
), conforme o esperado. - Copie e cole a ligadura renderizada sem bloco de código de volta na caixa de entrada: cola como o caractere da ligadura e renderiza como a ligadura, independentemente de estar ou não em um bloco de código (fi e
fi
). Da mesma forma, as palavras que contêm: ajuste incorreto (fit misfits
) cola como ajuste incorreto (fit misfits
). Talvez dependa se o local em que está sendo colado compreende a codificação usada?
Quão errado está minha compreensão disso? Alguém pode me corrigir: declarando uma definição clara da diferença entre glifos e caracteres (se o meu está errado ou pode ser melhorado) e dar exemplos mais claros / precisos do que o meu do que isso significa na prática ?
fonte
Respostas:
Os glifos se relacionam com a forma como o texto é renderizado, os caracteres com a forma como ele é interpretado. Quando você copia e cola, o aplicativo de origem geralmente oferece uma escolha de vários formatos. O texto sem formatação decomporá a ligadura em f e i, o formato HTML pode traduzi-lo para a entidade char que você citou ou também decompor em f e i.
Em geral, a relação entre caracteres e glifos é n: m. Nos idiomas índicos, alguns caracteres se dividem em dois glifos que são colocados em locais diferentes da palavra. Em latim, o mais próximo dessa situação seria render é como dois glifos (e e ´). Em árabe, cada caractere possui glifos diferentes, dependendo de sua posição em uma palavra: inicial, intermediária, final ou isolada.
A tradução de caracteres para glifos é específica para cada aplicativo e os recursos tipográficos que ele suporta. Para o texto em latim, essa tradução costumava ser simples, mas as fontes OpenType introduziam recursos adicionais como ligaduras, swashes, formas alternativas, letras maiúsculas etc.
Por motivos práticos, você só se preocupa com glifos quando implementa como um aplicativo renderiza texto, ou quando cria uma fonte ou quando deseja aplicar um recurso OpenType que substitui alguns glifos por outros (por exemplo, ligaduras). Caso contrário, os pontos de código Unicode são seus amigos.
fonte
Não acho que seu entendimento esteja incorreto, você está apenas vendo sistemas que tentam ajudar o usuário colando o que eles acham que desejam. Como algumas ligaduras ('fi', 'fl') são bastante comuns fora dos sistemas de digitação, o software reconhece que o usuário provavelmente não inseriu esse glifo, mas outro aplicativo transformou seus caracteres digitados.
Em resumo: caráter refere-se a uma unidade linguística. Glifo refere-se a uma instância projetada dessa unidade, seja em maiúsculas, minúsculas, letras minúsculas, histórico ou variante estilística.
fonte
Há algumas respostas aqui que fornecem boas informações sobre glifos x caracteres, mas elas realmente não tratam da fonte de sua confusão com relação a copiar e colar.
Primeiro de tudo, seu entendimento é fundamentalmente correto:
Vale ressaltar que a lista de caracteres é definida pelo padrão Unicode, que é publicado pelo Unicode Consortium, devido ao fato de serem a autoridade na codificação de texto em um formato legível por máquina. A definição acima é essencialmente a principal diretriz que os membros do Unicode Consortium usam para determinar se alguma adição proposta ao Unicode é ou não um caractere e, portanto, digna de inclusão, ou um glifo e deve ser tratada pelos representantes de fontes.
Menciono isso porque a confusão que você experimentou acima se deveu ao fato de existirem vários caracteres de ligadura (não glifos ) no Unicode. Por exemplo,
U+FB01
é o caractere para a fi latura: http://unicode.org/charts/PDF/UFB00.pdfTer caracteres de ligadura no Unicode não é realmente o espírito da definição acima, para que tipos de coisas devem ser incluídos no padrão Unicode como caracteres, pois as ligaduras não têm um significado independente da composição de dois outros caracteres. O pessoal do Unicode está naturalmente ciente disso, e as Perguntas frequentes do Unicode sobre ligaduras admitem o seguinte:
A existência desse personagem é, em última análise, a fonte de sua confusão.
No software implementado corretamente, a cópia de texto deve sempre copiar os caracteres especificados, não os glifos , e é exatamente isso que está acontecendo nos seus três exemplos.
1) No primeiro exemplo, você digitou
f
ei
para o Illustrator, o que tornou a única ligadura glifo . Quando você selecionou e copiou o glifo renderizado, o Illustrator copiou corretamente os caracteresf
(U+0066
) ei
(U+0069
) para a área de transferência.2) No segundo exemplo, você digitou o código HTML do caractere de ligadura (
fi
) na caixa de entrada e obteve corretamente o glifo de ligadura que representa o caractere de ligadura (. Como o caractere subjacente é realmente o caractere de ligadura obscuro e relativamente inútil que mencionei acima, selecionar esse glifo copiará um único caractereU+FB01
.3) No terceiro exemplo, você está copiando o caractere de ligadura renderizado
U+FB01
que foi renderizado na parte 2, que sempre será colado como esse caractere. Sua principal confusão parece estar relacionada à diferença entre códigos e caracteres de entidade HTML, principalmente no que diz respeito à maneira como eles são renderizados dentro e fora dos blocos de código.O código da entidade HTML
fi
é uma sequência de 8 caracteres distintos. O renderizador HTML do seu navegador substitui esses 8 caracteresU+0026 U+0023 U+0036 U+0032 U+0035 U+0037 U+0023
pelo único caractere UnicodeU+FB01
, que é renderizado adequadamente. No entanto, a<code>
tag em HTML desativa esse comportamento, deixando esses 8 caracteres como estão.Ao copiar o HTML renderizado, você copia os caracteres renderizados (que são diferentes dos glifos renderizados ). Assim, quando você copia sua entidade HTML renderizada, o
U+FB01
caractere único é copiado para a área de transferência.Quando você cola o
fi
U+FB01
caractere novamente no HTML, nenhuma substituição precisa ocorrer, o que significa que o caractere é renderizado como uma ligadura, independentemente de estar ou não dentro de um<code>
bloco.fonte
Caracteres são os que são armazenados em arquivos de texto, processados por aplicativos e movidos, enquanto os glifos são sua representação visual.
Para ter uma imagem clara, vamos ver o que acontece quando um aplicativo tenta renderizar uma sequência de texto na tela (de uma maneira um pouco simplificada):
f
ei
com o glifo de ligadura defi
) e posicionamento (como kerning).file
correspondem dois ao primeiro glifo (afi
ligadura), o terceiro caractere ao segundo glifo e o quarto caractere ao terceiro glifo.fonte