Por que emoji como 💩 aparece quando uso o Safari, mas não o Chrome?

30

Por que emoji como 💩 aparece quando eu uso o Safari, mas não o Chrome no mesmo MacBook executando o Lion? Ambos os navegadores usam o WebKit, e eu imagino que o suporte à fonte venha do sistema operacional, não do aplicativo.

Para fins de referência, esta é a página renderizada no Chrome 17.0.963.56:

Chrome 17.0.963.56

E esta é a página renderizada no Safari 5.1.3 (7534.53.10):

Safari 5.1.3 (7534.53.10)

Daniel
fonte
9
Eu estou vendo isto em Chrome e eu não vejo a 💩 na pergunta ou título, mas eu faço vê-lo no título da aba no topo da janela.
CajunLuke 22/02/12
Eu raramente passo o mouse sobre as guias para ver o título da página inteira, mas você está certo, de fato faz isso. Isso é muito surpreendente.
21412 Jason Salaz
Pode ser que os plug-ins do Chrome em sua própria paleta de caracteres, que pode ser uma versão híbrida entre a nativa e a proprietária. E eles só precisam atualizá-lo para o OS X. Mas eu sei que emoji não é apenas uma questão de tipo de fonte (você não pode portar emoji para o SL, por exemplo, apenas instalando a respectiva fonte). Portanto, há mais do que apenas ler um novo tipo de fonte. Eu registraria um bug no Google. Ou solicite suporte completo.
14
Como os visitantes do Chrome terão dificuldade em ler o título, voto para alterar o título para "Como produzo turds no Google Chrome?"
Gerry
@cksum Revirei o título porque se tornou uma informação pertinente na pergunta.
Jason Salaz 22/02/12

Respostas:

27

A diferença são os mecanismos de renderização para as janelas do navegador.

Sabemos que o Safari renderiza o conjunto de caracteres de maneira diferente do Chrome. Mas os elementos da interface do usuário do Windows (as guias no Chrome) estão bem. Essa é a nossa maior pista.

Os elementos da interface do usuário da janela são prováveis ​​(com ênfase na probabilidade, talvez eu não esteja correto aqui), todos sendo renderizados pelo sistema operacional. Então, eles recebem o tratamento completo de expansão de emoji no nível do sistema operacional.

Mas o que acontece dentro de uma janela do navegador da Web depende muito do navegador. Os mecanismos de renderização são uma grande parte do molho secreto de cada navegador.

O Safari e o Chrome usam o WebKit, mas as semelhanças entre as instâncias do WebKit que eles usam param em algum lugar ao redor do nome do mecanismo. Ambos são bifurcações da versão principal e são altamente customizados para melhorar o desempenho das maneiras que cada equipe de desenvolvimento de navegador considera significativas para seus usuários finais.

O @JasonSalaz encontrou um ótimo bug no banco de dados de bugs do Chrome, que nos dá a última pista de que se deve aos garfos do WebKit: http://code.google.com/p/chromium/issues/detail?id=90177 - esse bug é falando sobre as diferenças entre a bifurcação no Chrome e a linha principal do WebKit do projeto de código aberto. Existem diferenças de renderização na linha principal que ainda precisam ser incluídas na versão que o Chrome está usando. E parece que eles pretendem mesclar as mudanças em algum momento.

Atualização: Paul Irish tem um ótimo post sobre como o WebKit difere em todos esses navegadores que o usam atualmente . Se você realmente deseja entender o quão diversificado é o ambiente WebKit, é uma ótima leitura.

Ian C.
fonte
Argh. Deveria ter pegado algumas capturas de tela. Oh bem ...
Ian C.
O suporte ao Emoji de rastreamento de tickets de bugs do Chromium é este: crbug.com/62435 O link ao qual você vinculou é uma duplicata.
Mathias Bynens
Para constar: Ainda está quebrado no Chrome 20.0.1132.57.
Oh, ótimo, de acordo com o Comentário 17 no relatório de bug, esse problema foi encerrado. Se alguém quiser reclamar novamente, você precisará registrar um novo relatório de erro.
8188 gentmatt #
1
Ele funciona agora no Chrome 41! Y
yincrash 25/02
12

Você pode usar a extensão Chromoji do Chrome . É uma solução alternativa que substituirá emoji por imagens incorporadas em páginas da web.

Steffi
fonte
2
Totalmente funciona, pelo menos no Twitter, não exclua a resposta.
MarcusJ
2

O problema é que seu navegador está usando uma codificação de caracteres diferente da do documento que você está visualizando.

Então, como o navegador sabe qual codificação de caracteres usar?

  1. Pode ser especificado em HTTP usando o Content-Typecabeçalho.
  2. Pode ser especificado para o documento HTML usando o metaelemento
  3. Pode ser especificado para um elemento HTML específico usando o charsetatributo

Se nada disso for especificado, navegadores diferentes usarão técnicas diferentes para adivinhar a codificação correta de caracteres. Alguns usam heurísticas. Alguns permitem que o usuário especifique uma codificação de caracteres. Alguns selecionam a codificação de caracteres padrão do sistema operacional.

Se nenhuma dessas opções der certo, você terá a tagarelice, também conhecida como mojibake.

Portanto, para responder sua pergunta diretamente: o Safari e o Chrome estão tentando coisas diferentes para encontrar a codificação de caracteres correta.

james.garriss
fonte
3
Exibir -> Codificação de texto no Safari diz 'Padrão'. Ver -> Codificação no Chrome diz 'UTF-8'. Os preferidos do Safari dizem que a codificação padrão é Western (ISO Latin 1). Se eu alterar a codificação no Chrome para Ocidental (ISO-8859-1), Ocidental (Windows-1252) ou Ocidental (Macintosh), ainda não vejo o emoji correto, mas vejo rabiscos em vez de espaço vazio. Não acho que seja tão simples quanto a codificação de caracteres. Eu suspeito que há diferenças de renderização. (continuação ...)
Ian C.
1
(continuação de cima) Isso explicaria a barra de título mostrando o emoji (o texto provavelmente está sendo renderizado pelo mecanismo de renderização do OS X, pois é um elemento gráfico em uma janela) e o corpo da página está sendo renderizado pelo próprio mecanismo de renderização do Chrome.
Ian C.
1
@IanC. isso provavelmente é digno de resposta se você expandir um pouco mais. O Chrome usa o WebKit, mas, caso contrário, não é uma das classes da ObjC / Cocoa que oferecem suporte nativo a emoticons. Afinal, esse é o recurso número 1 do Chrome, rápido demais, o que é invariavelmente alcançado apenas com uma solução personalizada. Portanto, o Chrome precisaria escrever explicitamente o suporte para emoji ou parar de fazer o que as pessoas preferem ao Safari e outros navegadores. (Acho que é mais provável um?)
Jason SALAZ
1
Tropecei
Jason Salaz
@JasonSalaz boa captura com esse relatório de bug. Essa é a peça final. Escrevendo a resposta!
Ian C.
0

Vá para a barra de menus do Chrome, clique em "Mais ferramentas" → "Codificação" e escolha um novo formato de codificação. Eu estou usando "Unicode UTF-8", parece funcionar para mim.

Blake Edmunds
fonte
-1

https://code.google.com/p/chromium/issues/detail?id=62435 foi marcado como corrigido recentemente; a partir da versão 41, os emojis devem aparecer bem no Chrome.

thakis
fonte
1
Embora útil, isso não é realmente uma resposta. Não explica por que estava acontecendo. É melhor deixar como um comentário IMO.
Ian C.
Isso aconteceu porque o suporte a emojis não foi implementado. Portanto, a questão não fará sentido quando o m41 estiver estável.
thakis
-9

O símbolo é um personagem criado pela Apple. O Safari usa seu próprio conjunto de caracteres.

Josh
fonte
5
Na verdade, "pilha de cocô" é um caractere padrão internacional no Unicode - símbolo 1F4A9 e nem mesmo específico da Apple e muito menos algo especial para o Safari. Veja a entrada da Wikipedia sobre Emoji e este PDF para obter detalhes.
bmike
2
Embora o personagem não seja exclusivo da Apple, as cores são. Até agora, não conheço nenhuma outra fonte de cores e acho que a Apple criou seu próprio padrão para fazê-lo (uma tabela sbix proprietária). Vários aplicativos não reconhecerão essa fonte, mas serão exibidos a partir da fonte preto / branco normal Symbola.
226126 Tom Gewecke
1
PS Como há realmente algo "exclusivo da Apple" nessa fonte, acho que essa resposta não está tão longe quanto a classificação negativa pode sugerir.
226126 Tom Gewecke
@ TomGewecke: "O Safari usa seu próprio conjunto de caracteres" é simplesmente falso. Então eu acho que as classificações negativas são merecidas.
jbg