Почему замена эмодзи Apple заменяет все фруктовые эмодзи?

#javascript #replace #unicode #v8 #emoji

#javascript #заменить #юникод #v8 #эмодзи #Юникод #версия 8

Вопрос:

Я читал это сообщение в блоге V8 о новом, String.prototype.replaceAll где они показывают этот пример:

 console.log(
  '🍏🍏🍋🍋🍊🍊🍓🍓'.replace(/🍏/g, '🥭')
)  

Почему заменяются все фрукты, а не только зеленое яблоко?

скриншот

Комментарии:

1. Я вижу только заменяемое Яблоко.

2. Для меня это тоже всего лишь замена яблок. Какой браузер / ОС вы используете?

3. Смелый 64-битный v1.11.104 Chromium 84.0.4147.105 на Windows 10.

4. Странно, я только что установил brave, и он отображается по желанию, не могли бы вы поделиться скриншотом?

5. Я добавил скриншот.

Ответ №1:

Это почти наверняка вопрос о том, какие шрифты вы установили в своей системе.

Когда я впервые увидел этот вопрос, я видел только квадратные коробки, до и после замены. Установка шрифта «Noto Emoji» и перезапуск моего браузера исправили это для меня: теперь я вижу фрукты, в том числе помидор вместо яблока.

JavaScript (и V8) выполняет то, что вы ожидаете; вам просто нужно заставить вашу систему правильно отображать эмодзи для вас.

Комментарии:

1. Что странно, так это то, что я могу видеть (некоторые) эмодзи перед заменой, но ни один из них после, даже те, которые не изменились.