Terminal: Tambahkan dukungan emoji ke Konsol Windows

Dibuat pada 23 Mei 2018  ·  68Komentar  ·  Sumber: microsoft/terminal

Harap dukung emoji dalam Konsol Windows.

Sangat berguna saat Anda membuat kode di buletin vim untuk startup atau saat Anda mengkategorikan barang berdasarkan emoji.

Area-Rendering Issue-Feature Product-Conhost

Komentar yang paling membantu

Sudah di backlog :)

Semua 68 komentar

Sudah di backlog :)

Manis! Kasus penggunaan lain: Saya memiliki aplikasi baris perintah yang menampilkan peringatan menggunakan .

@zadjii-msft apakah ini akan mencakup dukungan untuk karakter unicode non-latin? yaitu dapatkah karakter Arab atau Jepang yang tidak ditemukan dalam font konsol yang saat ini digunakan dapat ditampilkan dengan tampilan font yang berbeda?

Secara hipotetis, ya.

Bahasa Arab adalah masalahnya sendiri - hampir tidak ada kemungkinan kami akan menerapkan dukungan bahasa dari kiri ke kanan dalam waktu dekat, tetapi karakternya mungkin dapat dirender dengan benar.

@adiviness dapat berbicara lebih banyak tentang topik tersebut jika ada lebih banyak untuk dibagikan.

Bahasa Arab adalah salah satu yang sulit karena dukungan tambahan yang diperlukan untuk teks dua arah dan ligatur. Sejauh yang saya ketahui saat ini tidak banyak emulator terminal yang mendukungnya.

Ada juga perbedaan antara konsol yang dapat merender emoji dan mendukung penggantian font jika font saat ini tidak memiliki mesin terbang. Mereka berdua adalah item di backlog kami.

+1 Skrip build dan CI kami memiliki emoji untuk sukses ️, peringatan dan kesalahan untuk pengamatan log yang cepat dan produktif.

Bisakah kami tidak memberi +1 pada masalah? Silakan gunakan reaksi atau berlangganan pemberitahuan.

@miniksa , saya tidak akan terlalu terganggu oleh +1. Anda bisa sepenuhnya mengabaikannya. Tujuan utama mengetiknya adalah untuk mengartikulasikan use case. Agaknya pemilik platform/produk harus sangat tertarik dengan kasus penggunaan pelanggan ... pemikiran yang diberikan dalam hal ini tidak terlalu boros.

@SidShetye - hargai komentar Anda - kasus penggunaan Anda tidak biasa, tetapi berguna untuk didengar.

Secara umum, kami meminta orang untuk tidak memberi +1 karena kami ingin menghindari orang yang memberi +1 (terutama tanpa komentar lebih lanjut), yang hanya berakhir sebagai gangguan, dan membuat utas lebih sulit untuk diuraikan dan dikelola.

Berbagi komentar tambahan, konteks, pengamatan, masalah, dll. JAUH lebih berharga daripada +1 ;)

Aneh bahwa tidak ada yang menyebutkannya, tetapi manajer paket Benang menggunakan Emoji dan agak mengganggu karena mereka hanya ditampilkan sebagai kotak :/

Terima kasih @destructive-dragon - ada banyak alat yang berisi/memancarkan emoji, tetapi Konsol belum dapat merendernya.

@bitcrazed Anda menyebutkan di utas twitter ini pada rilis conpty bahwa kita masih perlu menunggu buffer baru dan renderer baru (DirectWrite). Apakah hanya itu dua pemblokir utama yang tersisa?

@kavdev Pada dasarnya, ya. Untuk menampilkan glyph emoji, pertama-tama kita harus dapat menyimpan (berpotensi menggabungkan) titik kode Unicode untuk setiap glyph (Misalnya Ninjacats), tetapi kita juga harus dapat merendernya, yang memerlukan font-fallback, yang GDI tidak ' t mendukung.

Kami akan memperbaiki implementasi buffer teks Konsol, dan juga Renderer di rilis mendatang.

@bitcrazed
Banyak Emoji adalah komposit, yaitu, memiliki beberapa titik kode yang digabungkan (menggunakan ZWJ atau VS, atau apa pun), dan dalam banyak kasus mereka tidak muat dalam satu sel Konsol. Jadi masalah Anda bukan "1 sel ke n karakter" tetapi "m sel ke n karakter"...

image

FWIW, emulator terminal saya dan iTerm2 keduanya membuat emoji dengan memperlakukannya sebagai karakter gaya CJK "lebar penuh" (2 sel). Saya tidak tahu tentang iTerm2 tetapi saya tidak berusaha mendukung "pengubah" unicode pada emoji atau karakter lainnya. Setiap karakter harus menjadi satu titik kode unicode meskipun mungkin lebar normal atau lebar penuh.

@sedwards2009
Solusi utama harus berupa Unicode atau spesifikasi apa pun yang memberi tahu kami cara menangani skrip kompleks pada kisi karakter.

Gagasan terdekat mungkin menerapkan beberapa konsep dari pembenaran (seperti memasukkan spasi di antara karakter Asia Timur, dan memasukkan Kashida saat memasukkan karakter Arab ke dalam kotak), tetapi implementasi pembenaran benar-benar berantakan. AFAIK DWRITE melakukan pekerjaan terbaik sejauh ini, tetapi beberapa implementasi (seperti Kashida) masih sangat rumit.

Hanya satu komentar yang mungkin berguna - emoji dan simbol unicode tertentu digunakan untuk bekerja , saya akan menampilkan beberapa di spanduk masuk WSL saya, misalnya (U+1F370), sejak pembaruan 1809 mereka tidak lagi ditampilkan di terminal mana pun (WSL bash, Hyper, Kode VS)
Namun, beberapa simbol berfungsi pada tahun 1809, seperti (U+2615) tetapi saya pikir mereka berada di bagian yang berbeda dari spektrum Unicode yaitu titik kode yang jauh lebih rendah

Pembaruan Oktober tampaknya membawa kemunduran dalam hal ini daripada kemajuan. Saya sebelumnya dapat menggunakan semua simbol unicode yang telah saya uji di terminal terintegrasi Kode VS (Yang menggunakan PowerShell), namun setelah pembaruan Oktober, semua emoji dan karakter bahasa asing tertentu tidak ditampilkan dengan benar.

Ini sebenarnya tampaknya menjadi masalah font semi-sistem karena bahkan emulator konsol seperti ConEmu sekarang gagal membuat emoji dengan benar.

@Ben-Harapan @noxabellus sama di sini.

Saya memperbarui Windows 10 hingga 1809 dan emoji hilang (PowerShell dan Visual Studio Code; terminal terintegrasi).

Lihat perintah vue ui dari vue-cli sebagai contoh:
Memulai GUI...

Ya, saya merindukan roket kecil itu saat memulai vue-cli

@bitcrazed @zadjii-msft apakah ada masalah melacak regresi yang ditemukan pada tahun 1809? Saya tidak berbicara tentang dukungan emoji penuh, hanya mendapatkan kembali mesin terbang dasar bahasa asing/unicode yang didukung di bawah rilis sebelumnya. Apakah Anda tahu jika masalah tetap ada di rilis beta selanjutnya?

Sama disini. Saya memperbarui Win10 saya dari 1803 ke 1809 beberapa hari yang lalu, dan sekarang semua karakter >= U+10000 (UTF-8 dengan 4 byte atau lebih) tidak lagi ditampilkan. Saya juga sudah mencoba versi insider terbaru (Windows 10 Insider Preview 18358.1 (19h1_release)), sayangnya bug ini masih ada.

Karena 19H1 akan segera dirilis, bisakah Anda memperbaikinya, atau melaporkannya karena itu bisa menjadi bug di proyek lain?

Sama =(

Render emoji tampaknya telah meningkat.

Saya mencoba build terbaru CascadiaPackage (Windows; x64) dan mendapatkan ini (lihat gambar):

terminal

Menjalankan Windows 10, Build 1903.

Apakah ada manfaat untuk memiliki opsi untuk menonaktifkan emoji font warna?

Jadi setiap emoji yang digunakan akan menjadi satu warna menggunakan pengaturan warna font?

@mdtuak ya, sebenarnya itu adalah pengaturan @miniksa dan saya telah membahas menambahkan sebelumnya. Saya baru saja mengajukan #956 untuk melacak pekerjaan itu :)

@MartinMa itu hal yang sama sekali berbeda dari conhost.exe yang ada, jika Anda mencoba menjalankan OpenConsolePackage (yang merupakan conhost OSS), Anda masih harus memiliki masalah.

@MartinMa itu hal yang sama sekali berbeda dari conhost.exe yang ada, jika Anda mencoba menjalankan OpenConsolePackage (yang merupakan conhost OSS), Anda masih harus memiliki masalah.

Jangan terlalu yakin! Renderer DirectWrite yang digunakan di Terminal Windows _juga merupakan bagian dari OpenConsole!_ Anda hanya perlu mengatur kunci registri ( HKCU\Console\UseDx = DWORD(1) ) sebelum digunakan.

@DHowett-MSFT Konsol melempar pengecualian saat menempelkan string emoji.
Itu disini.
https://github.com/microsoft/terminal/blob/2fdcb679ab1f1f1edc542e3b86327dacea78f7ac/src/buffer/out/CharRowCellReference.cpp#L15

@DHowett-MSFT Dustin Howett FTE Konsol memberikan pengecualian saat menempelkan string emoji.
Itu disini.
https://github.com/microsoft/terminal/blob/2fdcb679ab1f1f1edc542e3b86327dacea78f7ac/src/buffer/out/CharRowCellReference.cpp#L15

Saya 80-90% yakin bahwa @adiviness atau saya memiliki bug yang menutupi yang sudah ada di sekitar sini.

Ya, pekerjaan yang saya lakukan di /dev/austdi/NewCookedRead mungkin memengaruhi kerusakan di sana. Kami belum mendukung emoji ditempelkan (atau diketik) di semua shell.

@MartinMa itu hal yang sama sekali berbeda dari conhost.exe yang ada, jika Anda mencoba menjalankan OpenConsolePackage (yang merupakan conhost OSS), Anda masih harus memiliki masalah.

Jangan terlalu yakin! Renderer DirectWrite yang digunakan di Terminal Windows _juga merupakan bagian dari OpenConsole!_ Anda hanya perlu mengatur kunci registri ( HKCU\Console\UseDx = DWORD(1) ) sebelum digunakan.

Aku bahkan tidak tahu. Saya akan pulang untuk mencobanya di malam hari. Tetapi apakah registri ini memengaruhi conhost.exe default?

Pembaruan 2019-07-19 20:47 UTC+8

Meskipun OpenConsole dapat membuka rendering DirectWrite dengan HKCU\Console\UseDx , tampaknya masih tidak dapat menampilkan emoji.

屏幕截图(5)

屏幕截图(6)

Mungkin terkait dengan https://github.com/microsoft/terminal/issues/2053

Ya, hampir pasti karena #2053.

@DHowett-MSFT Akankah perbaikan komit saya sesuai, jika tidak ada masalah, saya akan membuat PR.

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

Saya melihat video Youtube ini dengan @cinnamon-msft. Dia menunjukkan dukungan emoji. Apakah ini tetap? 😄

@innovoix Itu Terminal Windows , ini tentang Konsol Windows .

@ExE-Boss Ah OK, saya buruk.

image

Ketika saya mengatur workstation Windows untuk pertama kalinya dalam 10 tahun, sekarang sangat terbiasa dengan OSX, saya sangat terganggu karena kehilangan emoji tercinta dan sangat berguna. Agak lucu itu belum lama ini default.

Apa yang dikatakan UnfundedPillow2 dan ShutUpCon ? Kita sekarang tidak akan pernah tahu

Juga teriakan besar untuk iTerm . Semoga kami menemukan Anda dan kebesaran Anda di platform ini dalam waktu dekat. Tidak ada panel terpisah? Betapa sakitnya

@jasonhargrove terima kasih atas umpan baliknya. Anda mungkin ingin memeriksa _Windows Terminal_, yang (kebetulan) juga dibuat dari repositori ini. Itu mendukung hal-hal yang Anda cari.

image

@jasonhargrove Kami berencana untuk mengintegrasikan banyak peningkatan pada mesin inti yang mendasari Terminal Windows, dan Konsol Windows kembali ke Konsol Windows di masa mendatang. Area tersebut termasuk buffer teks internal, mesin rendering teks, dll. - hal-hal yang umumnya tidak akan memengaruhi kompatibilitas mundur.

Mengapa peringatan "kompat mundur'"? Tugas Konsol Windows (bersama dengan Cmd), adalah tetap kompatibel ke belakang jika memungkinkan. Dengan demikian, akan ada banyak fitur (misalnya tab, panel split, dll.) yang hanya akan tersedia di Terminal Windows, dan tidak akan pernah kembali ke Konsol.

Kami sangat menyarankan agar pengguna mulai mengevaluasi dan menguji Terminal Windows, mengajukan masalah yang tidak terduga di sini sehingga kami dapat melakukan triase dan memperbaikinya secepat mungkin saat kami mendorong Terminal menuju v1.0 (~Q2 2020).

FWIW, pada v0.7 Windows Terminal TIDAK mendukung panel split , serta banyak tab, UTF-8, emoji, rendering teks yang dipercepat GPU, sejumlah besar opsi konfigurasi, beberapa peningkatan seleksi/salin dan tempel, dll.

Satu hal yang membuat saya gila adalah ketidakmampuan untuk Shift+Insert paste di Terminal Windows.

@jsilvermist Anda dapat menambahkan shift+ins sebagai kunci yang mengikat di pengaturan Terminal Anda.

@jsilvermist Permintaan sopan - harap simpan masalah ke utas yang relevan. Masalah yang Anda jelaskan terkait dengan ikatan kunci, bukan emoji;)

@bitcrazed Benar, saya buruk! Juga, terima kasih @DHowett-MSFT!

Sunting: lupa emoji wajib :wink:

@jsilvermist Tidak masalah - kita semua melakukannya sekarang dan lagi - terima kasih banyak 👍

Mendemonstrasikan emoji dan panel di Terminal Windows:

image

Oke Natal datang lebih awal! Awal yang bagus untuk ini dan lompatan besar ke depan, selamat. Dan terima kasih telah memberi tahu saya tentang itu

Capture

apakah normal untuk melihat ?? jika saya menempelkan emoji. tolong konfirmasi. Terima kasih sebelumnya.

@AmericanY ya, ini adalah masalah dengan PowerShell 5.1.

@DHowett-MSFT itu terjadi di CMD, PowerShell dan windows terminal baru.

WSL saya mencetak beberapa karakter yang tidak biasa setelah membuat string unicode. Saya mencoba membuat game interaktif dan tidak dapat menampilkan karakter karena hal ini. Sepertinya saya harus membatasi diri ke ASCII 128-bit
image

Saya hanya ingin mengatakan, dengan permintaan maaf, bahwa ini terlihat lucu.

Apakah kode src untuk fmt_test.exe tersedia di suatu tempat? (tangkapan layar oleh @fcharlie sebelumnya di utas ini) Saya mengalami kesulitan menduplikasi hasilnya.

Terima kasih!

Hai,
Untuk menambahkan komentar @AmericanY , saat menempelkan di Terminal Windows sebuah emoji (katakanlah dari keluaran yang sudah ada sebelumnya) rusak di masukan dan benar di keluaran.
Juga jika melakukan panah atas tepat setelahnya, maka itu benar dalam input kali ini.

Apakah ini diharapkan?

image

Terminal Windows
Inti Powershell 6.2.1
Meslo LG M untuk Powerline

@AmericanY ya, ini adalah masalah dengan PowerShell 5.1.

Selain itu, ruang antara dua emoji dapat dikonversi menjadi umpan baris di posh 5.1, tetapi tidak di shell lain seperti ash, bash, dan sebagainya:

@remidebette Anda pasti ingin melihat #1503

@zadjii-msft , ini tampaknya cukup sulit, tetapi akan sangat menyenangkan setelah Anda memecahkannya.
Tetap bertahan!

Saya telah menguji emoji pada beberapa shell di bawah Terminal Windows (Versi: 0.11.1191.0) dan inilah hasilnya:

  • cmd
    image
  • Powershell
    image
  • cmder
    image
  • WSL dengan ZSH
    image
  • Cygwin dengan ZSH
    image

Sepertinya satu-satunya shell yang bekerja dengan sempurna sejauh ini adalah WSL (baik bash dan zsh)...

Saya sedang bekerja dengan kumpulan informasi lama, tetapi setidaknya dulu konsol menyimpan baris Prompt dalam buffer terpisah dari buffer output dan itu tidak mendukung lebih dari pengkodean ucs2. WSL berfungsi karena dikodekan dalam utf8. Saya sedang mengerjakan cabang di satu titik yang memperbaiki ini, jika saya menemukan waktu akhir pekan ini saya akan mengintip. Hmm

sunting: WSL juga mungkin berfungsi jika tidak menggunakan bacaan yang dimasak seperti yang lain, saya tidak ingat apakah itu berfungsi atau tidak.

Bagaimana cara memperbaiki emoji?

Saya mengalami masalah yang sama; sepertinya tidak ada solusi yang up-to-date afaik.

image

Manis! Kasus penggunaan lain: Saya memiliki aplikasi baris perintah yang menampilkan peringatan menggunakan .

Output Emoji berfungsi dengan baik dalam pengalaman saya.

Jadi bisa dipastikan masalahnya adalah karakter input tidak ter-render dengan benar di terminal windows. Saya telah mencoba Git Bash (satu jenis untuk shell), Ini bekerja dengan baik dengan Git Bash GUI, tetapi tidak bekerja dengan terminal windows sama seperti bug yang disebutkan seperti yang lain.

  1. Git Bash GUI
    pic08-27-12-45-00
  2. Git Bash dengan Terminal Windows
    pic08-27-12-46-35

Versi terminal windows saya adalah 1.1.2233.0.
Semoga bisa memperbaikinya sesegera mungkin! 👍 Dan apakah ada perkiraan jadwal?

Harap ajukan bug terpisah untuk masalah ini dan sertakan konten file pengaturan Terminal Windows Anda.

Harap ajukan bug terpisah untuk masalah ini dan sertakan konten file pengaturan Terminal Windows Anda.

Saya memiliki masalah yang sama:
{ "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 },
Terminal Windows: v1.3.2651.0
Git: v2.16.2.windows.1

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Wid-Mimosa picture Wid-Mimosa  ·  3Komentar

ghvanderweg picture ghvanderweg  ·  3Komentar

miniksa picture miniksa  ·  3Komentar

TayYuanGeng picture TayYuanGeng  ·  3Komentar

waf picture waf  ·  3Komentar