Terminal: Добавить поддержку эмодзи в консоль Windows

Созданный на 23 мая 2018  ·  68Комментарии  ·  Источник: microsoft/terminal

Пожалуйста, поддержите эмодзи в консоли Windows.

Очень полезно при написании кода в информационных бюллетенях vim для стартапов или при классификации материалов по смайликам.

Area-Rendering Issue-Feature Product-Conhost

Самый полезный комментарий

Уже в очереди :)

Все 68 Комментарий

Уже в очереди :)

Милая! Другой вариант использования: у меня есть приложение командной строки, которое выводит предупреждения с помощью ⚠.

@ zadjii-msft будет ли это включать поддержку нелатинских символов Юникода? т.е. могут ли арабские или японские символы, не найденные в текущем развернутом шрифте консоли, отображаться с другим начертанием шрифта?

Гипотетически да.

Арабский - это своего рода проблема - в ближайшее время мы практически не будем реализовывать поддержку языка слева направо, поскольку символы могут отображаться правильно.

@adiviness может рассказать больше по теме, если есть чем поделиться.

Арабский язык сложен из-за дополнительной поддержки, необходимой для двунаправленного текста и лигатур. Насколько мне известно, сейчас его поддерживают не многие эмуляторы терминала.

Также существует разница между возможностью консоли отображать эмодзи и поддержкой резервного копирования шрифта в случае, если текущий шрифт не имеет глифа. Оба они находятся в нашей очереди.

+1 В наших сценариях сборки и CI есть смайлики для успеха ✔️, предупреждения ⚠ и ошибки ❌ для быстрого и продуктивного просмотра журналов.

Можем ли мы, пожалуйста, не ставить +1? Пожалуйста, используйте реакции или подпишитесь на уведомления.

@miniksa , я бы не стал слишком отвлекаться на +1. Вы можете полностью игнорировать это. Основная цель его напечатать - сформулировать вариант использования. Предположительно, владельцы платформ / продуктов должны быть очень заинтересованы в вариантах использования клиентами ... в данном случае это не слишком экстравагантно.

@SidShetye - оцените ваш комментарий - ваш вариант использования не является необычным, но о нем полезно услышать.

В общем, мы просим людей не ставить +1, потому что мы не хотим, чтобы люди ставили +1 (особенно без дальнейших комментариев), которые заканчиваются шумом и затрудняют анализ и управление потоками.

Обмен дополнительными комментариями, контекстом, наблюдениями, проблемами и т. Д. Намного ценнее, чем +1;)

Странно, что об этом никто не упомянул, но менеджер пакетов Yarn использует Emoji, и немного раздражает, что они отображаются только в виде квадратов: /

Спасибо @ destructive-dragon - есть много инструментов, которые содержат / испускают эмодзи, но консоль еще не может их отображать.

@bitcrazed В этой ветке твиттера о выпуске conpty вы упомянули, что нам все еще нужно дождаться нового буфера и нового средства визуализации (DirectWrite). Остались только два основных блокиратора?

@kavdev По сути, да. Чтобы отображать глифы эмодзи, мы сначала должны иметь возможность хранить (потенциально составные) кодовые точки Unicode для каждого глифа (например, Ninjacats), но мы также должны иметь возможность отображать их, что требует замены шрифта, чего GDI не делает. t поддержка.

Мы будем работать над улучшением как реализации текстового буфера консоли, так и средства визуализации в будущих выпусках.

@bitcrazed
Многие эмодзи являются составными, т. Е. Имеют несколько кодовых точек, соединенных вместе (с использованием ZWJ, VS или чего-то еще), и в большинстве случаев они не помещаются в одну ячейку консоли. Итак, ваша проблема заключается не в «от 1 ячейки до n символов», а «от m ячеек до n символов» ...

image

FWIW, мой эмулятор терминала и iTerm2 визуализируют эмодзи, в основном рассматривая их как символы стиля CJK "полной ширины" (2 ячейки). Я не знаю о iTerm2, но я не пытаюсь поддерживать «модификаторы» Unicode для эмодзи или любых других символов. Каждый символ должен быть одной кодовой точкой Юникода, хотя он может быть нормальной или полной ширины.

@ sedwards2009
Конечным решением должен быть Unicode или любая другая спецификация, которая говорит нам, как обрабатывать сложный скрипт в символьной сетке.

Самая близкая идея может заключаться в применении некоторых концепций из обоснования (например, вставка пробелов между восточноазиатскими символами и вставка Кашиды при размещении арабских символов в сетке), но реализация выравнивания представляет собой полный беспорядок. AFAIK DWRITE пока работает лучше всех, но некоторые реализации (например, Kashida) все еще очень хакерские.

Всего один комментарий, который может быть полезен - некоторые символы эмодзи и юникода, которые использовались для работы , я бы отобразил некоторые на моем баннере входа в WSL, например 🍰 (U + 1F370), с момента обновления 1809 года они больше не отображаются ни в одном терминале (WSL bash, Hyper, VS Code)
Однако некоторые символы работают в 1809 году, например, ☕ (U + 2615), но я думаю, что они находятся в разных частях спектра Unicode, то есть в гораздо более низких кодовых точках.

Октябрьское обновление, похоже, приносит в этом отношении скорее регресс, чем прогресс. Раньше я мог использовать все символы Unicode, которые я тестировал в интегрированном терминале VS Code (который использует powershell), однако после октябрьского обновления все смайлы и некоторые символы иностранного языка отображаются некорректно.

На самом деле это проблема с полусистемными шрифтами, поскольку даже эмуляторы консоли, такие как ConEmu, теперь не могут правильно отображать эмодзи.

@ Бен-Хоуп @noxabellus и здесь.

Я обновил Windows 10 до 1809, и смайликов больше нет (PowerShell и Visual Studio Code; встроенный терминал).

См. В качестве примера команду vue ui vue-cli :
🚀 Запуск графического интерфейса ...

Да, я скучаю по этой маленькой ракете при запуске vue-cli 😢

@bitcrazed @ zadjii-msft есть ли проблема с отслеживанием регрессии, обнаруженной в 1809 году? Я не говорю о полноценной поддержке эмодзи, просто возвращаю базовые глифы иностранного языка / юникода, которые поддерживались в предыдущих выпусках. Вы знаете, сохранится ли проблема в более поздних бета-версиях?

То же самое. Я обновил свой Win10 с 1803 до 1809 несколько дней назад, и теперь все символы> = U + 10000 (UTF-8 с 4 байтами или более) больше не отображаются. Я также пробовал новейшую инсайдерскую версию (Windows 10 Insider Preview 18358.1 (19h1_release)), к сожалению, эта ошибка все еще существует.

Поскольку 19H1 скоро будет выпущен, не могли бы вы исправить это или сообщить об этом, потому что это может быть ошибка в другом проекте?

То же = (

Рендеринг эмодзи, кажется, улучшился.

Я попробовал последнюю сборку CascadiaPackage (Windows; x64) и получил это (см. Изображение):

terminal

Работает под управлением Windows 10, сборка 1903.

Есть ли заслуга в возможности отключить эмодзи с цветным шрифтом?

Значит, любые используемые смайлы будут одноцветными с использованием настроек цвета шрифта?

@mdtuak да, на самом деле это настройка @miniksa, и я ранее обсуждал добавление. Я просто подал № 956, чтобы отследить эту работу :)

@MartinMa - это совсем другое дело, чем существующий conhost.exe. Если вы попытались запустить OpenConsolePackage (который является узлом OSS), проблема все равно должна возникнуть.

@MartinMa - это совсем другое дело, чем существующий conhost.exe. Если вы попытались запустить OpenConsolePackage (который является узлом OSS), проблема все равно должна возникнуть.

Не будь таким уверенным! Средство визуализации DirectWrite, которое используется в Windows Terminal _, также является частью OpenConsole! _ Вам просто нужно установить ключ реестра ( HKCU\Console\UseDx = DWORD(1) ), прежде чем он будет его использовать.

@ DHowett-MSFT Консоль выдает исключение при вставке строки эмодзи.
Это здесь.
https://github.com/microsoft/terminal/blob/2fdcb679ab1f1f1edc542e3b86327dacea78f7ac/src/buffer/out/CharRowCellReference.cpp#L15

@ DHowett-MSFT Dustin Howett FTE Консоль выдает исключение при вставке строки эмодзи.
Это здесь.
https://github.com/microsoft/terminal/blob/2fdcb679ab1f1f1edc542e3b86327dacea78f7ac/src/buffer/out/CharRowCellReference.cpp#L15

Я на 80-90% уверен, что либо у меня, либо у

Да, работа, которую я делаю над /dev/austdi/NewCookedRead вероятно, влияет на сбой там. Мы пока не поддерживаем вставку (или набор) смайлов во всех оболочках.

@MartinMa - это совсем другое дело, чем существующий conhost.exe. Если вы попытались запустить OpenConsolePackage (который является узлом OSS), проблема все равно должна возникнуть.

Не будь таким уверенным! Средство визуализации DirectWrite, которое используется в Windows Terminal _, также является частью OpenConsole! _ Вам просто нужно установить ключ реестра ( HKCU\Console\UseDx = DWORD(1) ), прежде чем он будет его использовать.

Я даже не знал. Я иду домой попробовать ночью. Но влияет ли этот реестр на conhost.exe по умолчанию?

Обновление 2019-07-19 20:47 UTC + 8

Хотя OpenConsole может открывать рендеринг DirectWrite с помощью HKCU\Console\UseDx , кажется, что он по-прежнему не может отображать эмодзи.

屏幕截图(5)

屏幕截图(6)

Возможно, связано с https://github.com/microsoft/terminal/issues/2053

Да, почти наверняка из-за №2053.

@ DHowett-MSFT Подойдет ли моя фиксация фиксации, если нет проблем, я создам PR.

https://github.com/fcharlie/terminal/commit/4c6280ca35fff9eac0041c94385574bedc5f2a27

Я видел это видео на Youtube с @ cinnamon-msft. Она продемонстрировала поддержку смайликов. Это исправлено? 😄

@innovoix Это терминал Windows , речь идет о консоли Windows .

@ ExE-Boss А, ну ладно, плохо.

image

Когда я впервые за 10 лет установил рабочую станцию ​​с Windows, которая теперь очень хорошо знакома с OSX, я был очень обеспокоен тем, что потерял любимые и чрезвычайно полезные смайлы. Вроде забавно, это уже давно не дефолт.

Что говорили UnfundedPillow2 и ShutUpCon ? Теперь мы никогда не узнаем 😢😢

Также большой привет iTerm . Желаю нам в скором времени найти вас и ваше величие на этой платформе. Нет разделенных панелей? Какая боль 😱😱

@jasonhargrove благодарит за отзыв. Вы можете попробовать _Windows Terminal_, который (кстати) также построен из этого репозитория. Он поддерживает то, что вы ищете.

image

@jasonhargrove Мы действительно планируем интегрировать многие улучшения в ядро ​​ядра Windows Terminal и Windows Console обратно в Windows Console в будущем. К таким областям относятся внутренний текстовый буфер, механизм рендеринга текста и т. Д. - вещи, которые обычно не влияют на обратную совместимость.

Почему оговорка о "обратной совместимости"? Задача консоли Windows (вместе с Cmd) - оставаться обратно совместимой везде, где это возможно. Таким образом, будет много функций (например, вкладки, разделенные панели и т. Д.), Которые будут доступны только в Терминале Windows и никогда не вернутся в Консоль.

Мы настоятельно рекомендуем пользователям начать оценку и тестирование Терминала Windows, сообщать о любых неожиданных проблемах здесь, чтобы мы могли отсортировать и исправить их как можно быстрее по мере продвижения Терминала к версии 1.0 (~ 2 квартал 2020 г.).

FWIW, начиная с версии v0.7 Windows Terminal поддерживает разделенные панели , а также несколько вкладок, UTF-8, эмодзи, рендеринг текста с ускорением на GPU, огромное количество параметров конфигурации, несколько улучшений выделения / копирования и вставки и т. Д.

Одна вещь, которая сводит меня с ума, - это невозможность вставки Shift + Insert в Терминале Windows.

@jsilvermist вы можете добавить shift+ins в качестве привязки ключа в настройках вашего Терминала.

@jsilvermist Вежливая просьба -

@bitcrazed Правда моя плохая! Также спасибо @ DHowett-MSFT!

Изменить: забыл обязательные смайлы: подмигнуть:

@jsilvermist Нет проблем - мы все делаем это время от времени - большое спасибо 😜 👍

Демонстрация смайлов и панелей в Терминале Windows:

image

Хорошо, Рождество наступает рано! Отличное начало и большой шаг вперед, поздравляю. И спасибо, что сообщили мне об этом 📈

Capture

нормально ли видеть ?? если я вставляю смайлик. пожалуйста подтвердите. заранее спасибо.

@AmericanY Да, это проблема PowerShell 5.1.

@ DHowett-MSFT, что происходит в CMD, PowerShell и новом терминале Windows.

Мой WSL печатает некоторые необычные символы после отображения строки Unicode. Я пытался создать интерактивную игру, но из-за этого не мог отобразить персонажей. Похоже, я должен ограничиться 128-битным ASCII
image

Я просто хочу сказать, с извинениями, что это выглядит весело.

Есть ли где-нибудь src-код для fmt_test.exe? (снимок экрана, сделанный @fcharlie ранее в этой теме) Мне сложно воспроизвести результат.

Спасибо!

Привет,
Чтобы добавить к комментарию @AmericanY , при вставке в Терминал Windows эмодзи (скажем, из уже существующего вывода) он нарушается на входе и исправляется на выходе.
Кроме того, если сразу после этого сделать стрелку вверх, то на этот раз он будет правильным во вводе.

Ожидается ли это?

image

Терминал Windows
Powershell Core 6.2.1
Meslo LG M для Powerline

@AmericanY Да, это проблема PowerShell 5.1.

Помимо этого, пространство между двумя смайликами преобразуется в перевод строки в шикарном 5.1, но не в других оболочках, таких как ash, bash и т. Д.:

@remidebette Вы хотите увидеть # 1503

@ zadjii-msft, это кажется довольно сложным, но будет действительно приятно, когда вы его взломаете.
Повесить там!

Я тестировал эмодзи на нескольких оболочках под Windows Terminal (версия: 0.11.1191.0) и вот результаты:

  • CMD
    image
  • Powershell
    image
  • Cmder
    image
  • WSL с ZSH
    image
  • Cygwin с ZSH
    image

Похоже, что единственная оболочка, которая пока работает идеально, - это WSL (как bash, так и zsh) ...

Я работаю со старым набором информации, но, по крайней мере, раньше консоль сохраняла строку приглашения в отдельном буфере от буфера вывода и не поддерживала больше, чем кодировку ucs2. WSL работает, потому что он закодирован в utf8. Однажды я работал над веткой, которая исправила это, и если я найду время в эти выходные, я посмотрю. Хм

edit: WSL также может работать, если он не использует приготовленное чтение, как другие, я не помню, работает он или нет.

Как я могу исправить смайлы?

У меня та же проблема; похоже, не актуальное решение afaik.

image

Милая! Другой вариант использования: у меня есть приложение командной строки, которое выводит предупреждения с помощью ⚠.

По моему опыту,

Таким образом, можно быть уверенным, что проблема в том, что входные символы некорректно отображаются в терминале Windows. Я пробовал Git Bash (one kind fo shell), он хорошо работает с графическим интерфейсом Git Bash, но не работает с терминалом Windows, как и другие ошибки.

  1. Git Bash GUI
    pic08-27-12-45-00
  2. Git Bash с терминалом Windows
    pic08-27-12-46-35

Моя версия терминала Windows - 1.1.2233.0.
Надеюсь, что смогу исправить это как можно скорее! 👍 А есть примерный график?

Сообщите об этой проблеме отдельно и включите содержимое файла настроек Терминала Windows.

Сообщите об этой проблеме отдельно и включите содержимое файла настроек Терминала Windows.

У меня такая же проблема:
{ "guid": "{00000000-0000-0000-ba54-000000000002}", "acrylicOpacity": 0.75, "closeOnExit": true, "colorScheme": "Campbell", "commandline": "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l", "cursorColor": "#FFFFFF", "cursorShape": "bar", "fontFace": "Consolas", "fontSize": 10, "historySize": 9001, "icon": "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico", "name": "Bash", "padding": "10, 0", "snapOnInput": true, "startingDirectory": "%USERPROFILE%", "useAcrylic": true },
Терминал Windows: v1.3.2651.0
Git: v2.16.2.windows.1

Была ли эта страница полезной?
0 / 5 - 0 рейтинги