Чому емоджи, як 💩, з’являються, коли я використовую Safari, але не Chrome?


30

Чому емоджи, як 💩, з’являються, коли я використовую Safari, а не Chrome на тому ж MacBook під управлінням Lion? Обидва браузери використовують WebKit, і я думаю, що підтримка шрифту надходить з ОС, а не з програми.

Для довідкових цілей це сторінка, відображена в Chrome 17.0.963.56:

Chrome 17.0.963.56

Це сторінка, представлена ​​в Safari 5.1.3 (7534.53.10):

Сафарі 5.1.3 (7534.53.10)


9
Я перегляд цього в Chrome , і я не бачу 💩 в питанні або назві, але я робити бачити в закладці заголовку поверх вікна.
CajunLuke

Я рідко коли-небудь клацніть на вкладках, щоб побачити заголовок повної сторінки, але ви маєте рацію. Це дуже дивно.
Джейсон Салаз

Можливо, Chrome підключає власну палітру символів, яка може бути гібридною версією між рідною та фірмовою. І їм просто потрібно оновити його для OS X. Але я знаю, що емоджи - це не лише питання типу шрифту (ви не можете передати емоджи в SL, наприклад, просто встановивши відповідний шрифт). Тож для них є більше, ніж просто читання нового типу шрифту. Я б подав помилку в Google. Або вимагайте повної підтримки.

14
Оскільки відвідувачам Chrome буде важко читати заголовок, я голосую за те, щоб змінити назву на "Як створити козирки в Google Chrome?"
Геррі

@cksum Я відмінив заголовок, тому що він став актуальною інформацією у питанні.
Джейсон Салаз

Відповіді:


27

Різниця - це двигуни візуалізації вікон браузера.

Ми знаємо, що Safari надає набір символів інакше, ніж Chrome. Але елементи інтерфейсу Window (вкладки в Chrome) нормально. Це наша найбільша підказка.

Вірогідні елементи інтерфейсу вікна (наголос на, мабуть, я тут не можу бути правильним), всі вони передаються ОС. Таким чином, вони отримують повне лікування емодзі-розширення на рівні ОС.

Але те, що відбувається всередині вікна веб-браузера, дуже залежить від браузера. Двигуни візуалізації - це значна частина секретного соусу кожного браузера.

І Safari, і Chrome використовують WebKit, але схожість між екземплярами WebKit, які вони використовують, зупиняється десь біля назви движка. Вони обидва вилки від основної версії, і обидва вони спеціально налаштовані на підвищення продуктивності таким чином, який кожна команда розробників браузера вважає важливим для своїх кінцевих користувачів.

@JasonSalaz знайшов велику помилку в базі даних про помилки Chrome, яка дає нам остаточну підказку, що вона переходить до виделок WebKit: http://code.google.com/p/chromium/isissue/detail?id=90177 - ця помилка говорять про відмінності між вилкою в Chrome і основною лінією WebKit від проекту з відкритим кодом. Існують відмінності в рендерингу основного рядка, які ще не внесли його у версію, яку використовує Chrome. І схоже, що вони мають намір об'єднати зміни в якийсь момент.

Оновлення: Пол Ірландський має чудову публікацію в блозі про те, як WebKit відрізняється для всіх цих браузерів, які зараз ним користуються . Якщо ви дійсно хочете зрозуміти, наскільки різноманітне середовище WebKit, це чудове прочитання.


Арг. Повинні були схопити кілька знімків екрана. Ну добре ...
Ян C.

Підтримка Emoji для відстеження квитків Chromium - це ця: crbug.com/62435 Той, з яким ви пов’язали, є дублікатом.
Mathias Bynens

Для запису: вона все ще зламана в Chrome 20.0.1132.57.

О, чудово, згідно з коментарем 17 у звіті про помилку, ця проблема закрита. Якщо хтось хоче знову скаржитися, вам потрібно подати новий звіт про помилку.
gentmatt

1
Він працює зараз як у Chrome 41! 🚀🚀🚀🚀🚀🚀🚀
yincrash

12

Можна використовувати розширення Chrome Chromoji . Це рішення, яке замінить емоджи на вбудовані зображення на веб-сторінках.


2
Загалом працює, щонайменше для Twitter, відповідь не видаляйте.
MarcusJ

2

Проблема полягає в тому, що ваш веб-переглядач використовує інше кодування символів від того, який ви переглядаєте в документі.

То як браузер знає, який кодування символів використовувати?

  1. Його можна вказати в HTTP за допомогою Content-Typeзаголовка.
  2. Його можна вказати для документа HTML за допомогою metaелемента.
  3. Його можна вказати для конкретного елемента HTML за допомогою charsetатрибута.

Якщо жодне з них не вказано, то різні браузери використовують різні методи, щоб відгадати правильне кодування символів. Деякі використовують евристику. Деякі дозволяють користувачеві вказати кодування символів. Деякі вибирають кодування символів за замовчуванням операційної системи.

Якщо нічого з цього не вийшло, ви отримаєте гнучко, також відомий як моджибаке.

Тож, щоб відповісти прямо на ваше запитання: Safari та Chrome намагаються різні речі, щоб знайти правильне кодування символів.


3
Перегляд -> Кодування тексту в Safari говорить "За замовчуванням". Перегляд -> Кодування в Chrome пише "UTF-8". Налаштування Safari кажуть, що за замовчуванням кодування є західним (ISO Latin 1). Якщо я зміню кодування в Chrome на Western (ISO-8859-1), Western (Windows-1252) або Western (Macintosh), я все одно не бачу правильних емоджи, але я бачу хитрість замість порожнього місця. Я не думаю, що це так просто, як кодування символів. Я підозрюю, що існують відмінності у візуалізації. (продовження ...)
Ян Ч.

1
(продовження зверху) Це пояснювало б заголовковий рядок із зображенням емоджи (текст, ймовірно, відображається засобом візуалізації OS X, оскільки це графічний елемент у вікні), а тіло сторінки рендерується власною системою візуалізації Chrome.
Ян Ч.

1
@IanC. це, мабуть, гідно відповіді, якщо розгорнути на нього лише трохи більше. Chrome використовує WebKit, але в іншому випадку не є одним із класів ObjC / Cocoa, які в основному підтримують смайли. Це все-таки функція Chrome №1, злий швидкість якої незмінно досягається лише за допомогою спеціального рішення. Отже, Chrome повинен буде або явно написати підтримку для смайлів, або перестати робити те, що змушує людей віддавати перевагу їм над Safari та іншими браузерами. (Здогадайтесь, хто з них більш імовірний?)
Джейсон Салаз


@JasonSalaz приємно спіймати цей звіт про помилку. Ось фінальний твір. Складання відповіді!
Ян Ч.

0

Перейдіть до рядка меню Chrome, натисніть "Додаткові інструменти" → "Кодування" та виберіть новий формат кодування. Я використовую "Unicode UTF-8", він, здається, працює для мене.


-1

https://code.google.com/p/chromium/isissue/detail?id=62435 позначено фіксованим нещодавно; починаючи з версії 41, емодзі повинні відображатись добре в Chrome.


1
Хоча це корисно, це насправді не відповідь. Це не пояснює, чому це сталося. Це краще залишити як коментар ІМО.
Ян Ч.

Це сталося тому, що підтримка емоджи не була реалізована. Тож питання не матиме сенсу, коли m41 буде стабільним.
thakis

-9

Символ - символ, зроблений Apple. Сафарі використовує власний набір символів.


5
Насправді "купа пу" - це міжнародний стандартний символ у Unicode - символ 1F4A9 і навіть не конкретний Apple, не кажучи вже про щось особливе для Safari. Докладніше див. Запис Вікіпедії на Емоджі та цей PDF .
bmike

2
Хоча характер не характерний для Apple, кольори є. Я ще не знаю жодного іншого кольорового шрифту, який існував досі, і я думаю, що Apple створила свій власний стандарт для цього (власна таблиця sbix). Різні програми не розпізнають цей шрифт, але відображатимуться зі звичайного чорно-білого шрифту Symbola.
Том Гевке

1
PS Оскільки у цьому шрифті дійсно є щось "унікальне Apple", я думаю, що ця відповідь не така вже й далека, як мінливий рейтинг може підказати.
Том Гевке

@TomGewecke добре, що "Сафарі використовує власний набір символів" просто помилково. Тому я вважаю, що мінусові оцінки заслужені.
jbg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.