Xterm.js: 絵文字/ユニコードの問題(倍幅と想定?)

作成日 2017年10月12日  ·  24コメント  ·  ソース: xtermjs/xterm.js

現在のv3では、絵文字は2つのセルを占めるようです。 矢印キーを使用すると、1つではなく2つのセルがジャンプします。 削除すると、2つのセルもクリアされます。

kapture 2017-10-12 at 18 34 05

arerenderer duplicate typbug

最も参考になるコメント

Ubuntu18.04のVSCode1.31.1でこの問題が発生します。

矢印キーを使用してコマンド履歴を上下にスクロールすると、実行したいコマンドに到達したときにその可能性が判読できないように、アーティファクトが取得されます。

また、アーティファクトを取得した後、表示される内容がxtermのメモリにあるものと異なるため、コマンドの編集にはバグがあります。

手順:

プロンプトに絵文字を追加しました:
screenshot from 2019-02-21 11-10-15
上矢印を1回押して、コマンドnpm i
screenshot from 2019-02-21 11-10-55

プロンプトに追加された不正なn注意してください。

.bashrcのプロンプトから絵文字を削除し、用語を再読み込みすると、バグはなくなります。

全てのコメント24件

これをmacOS / bashで再現することはできません。 絵文字の幅を微調整(1以外にする)しない限り、このようなことが起こるとは思いません。 再現手順の詳細があれば便利です。

複製(OSX、MacOS High Sierra)

  • v3デモを開始
  • 😀を複数回貼り付けます
  • 左矢印キーを複数回押して、毎回2つのセルをジャンプし、セルの境界にぶつかる様子を確認します。

私がいるので、あなたはすでにMacOS High Sierraを使用していますか? node-ptyにも関連している可能性があります- Terminal.appに絵文字を挿入すると、絵文字の後にスペースが自動的に追加されます。さらに、そのスペースを選択できません。HighSierraが脅威を与えるようです。倍幅の文字として..

MacOS HighSierraのTerminal.app
kapture 2017-10-13 at 22 55 32

これは、ターミナルで絵文字をより良くしようとしたハイシエラのことかもしれませんか? Electronアプリでのレンダリングが台無しになっているため、現在更新できません。

私はアップグレードしたとは言いたくありませんが、今ではこれらすべてのクロムベースのアプリでレンダリングの不具合がたくさん発生しています😤

ええ、シエラでも同様のことが起こったので、更新する前にフィードバックを注意深く追跡しました。

Terminal.appには、適切なワイド文字として扱われる素晴らしい絵文字エクスペリエンスがあることに気付きました。可能であれば、おそらくそれを行うことができます😄

UAX#11東アジアの幅、リビジョン31で絵文字_東アジアの幅_(倍幅)が変更され、wchar.hのwcswidthは文字列の幅を返します。 macOS HighSierraがアップデートをサポートしていたと思います。
xterm.jsのwcwidth内のsrc/CharWidth.tsは、まだサポートしていません。

@ mandel59情報をありがとう!

@ mandel59この問題は絵文字に固有のものだと思います

参照: https

VS Codeの問題: https

どうやらフラッターランはこの振る舞いを示しています

これは、Flutterを必要としない(ただしDartは必要です)、私たちが見ているものの小さなDart再現です:

import 'dart:async';

import 'dart:io';

// Windows console font has a limited set of Unicode characters.
final _animation = Platform.isWindows
    ? <String>[r'-', r'\', r'|', r'/']
    : <String>['🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔'];
final _backspace = '\b' * _animation[0].length;

main() {
  int ticks = 0;
  void update(Timer timer) {
    if (ticks % 50 == 0) {
      stdout.write('\nDoing thing... ');
    }
    stdout.write('$_backspace${_animation[ticks++ % _animation.length]}');
  }

  new Timer.periodic(const Duration(milliseconds: 100), update);
}

.dartファイルとして保存し、 dart xxx.dartます。 このコードは、この文字に対して2つのバックスペースを発行します。これは、標準のmacOS端末では文字を正しく削除します。 ただし、VS Codeターミナルでは、絵文字と別の文字をバックスペースします。 絵文字が行の先頭にある場合、これは何もしませんが、そうでない場合、レンダリングは文字によってゆっくりと左に忍び寄ります(そしてアイコンの右半分はその後に残ります)。

バックスペースから* _animation[0].lengthを削除して、常に単一のバックスペースを実行すると、VS Codeターミナルでは正常に機能しますが、macOSターミナルでは十分なバックスペースがなくなります(したがって、衛星は右に忍び寄ります) !)。

https://github.com/Microsoft/vscode/issues/60470に記載されているように、ヘブライ語/アラビア語にも適用され

Ubuntu18.04のVSCode1.31.1でこの問題が発生します。

矢印キーを使用してコマンド履歴を上下にスクロールすると、実行したいコマンドに到達したときにその可能性が判読できないように、アーティファクトが取得されます。

また、アーティファクトを取得した後、表示される内容がxtermのメモリにあるものと異なるため、コマンドの編集にはバグがあります。

手順:

プロンプトに絵文字を追加しました:
screenshot from 2019-02-21 11-10-15
上矢印を1回押して、コマンドnpm i
screenshot from 2019-02-21 11-10-55

プロンプトに追加された不正なn注意してください。

.bashrcのプロンプトから絵文字を削除し、用語を再読み込みすると、バグはなくなります。

まず最初に、皆さんの素晴らしい仕事に感謝したいと思います。

macOS Mojave10.14.3のVSCode1.31.1でも同じことが起こります。 @juliuseckerが言及したnことは、彼が説明したとおり、私にも起こります。

@juliuseckerが述べたのと同じバグがあります。
VSCodeバージョン1.33.1(1.33.1)51b0b28134d51361cf996d2f0a1c698247aeabd8 2019-04-11T08:14:39.158Z
システムバージョン:macOS 10.14.4(18E226)
zsh 5.7.1(x86_64-apple-darwin17.7.0)

VSCodeとPowershellで再現するのは非常に簡単です。

emojiterminaltest.ps1

"Emoji Normal"
"😊1😊2😊3😊4"
"Emoji with Padding Spaces - What it should look like"
"😊  1😊  2😊  3😊  4"

image

このアイテムに割り当てられているリソースはありますか? この問題のスレッドで見られるように、他のプログラム(Hyperなど)で多くのリグレッションが発生しているように見えます。

@Tyriarはい、ちょっと、pplがそれに直面する可能性が最も高い例です-emojis:smile_cat:

これは問題をよく説明していて、#1709が解決策を詳しく調べているので、両方を開いたままにしておくと思います。さらに、これには多数の賛成票があります。

次のバージョンのWindows10で複製できます。
image

image
上記は、VScodeビルトインターミナルで見たものです。
image
上記は、テキストファイル内の同じテキストをVSコードで開いたときに表示されるものです。

問題は約2年になりますが、更新はありますか?

@jerchはすぐにそれを手にATMをたくさん持っています。 このための大きな障害の1つは、現在リリースされている新しいアドオンシステムでした。

https://github.com/xtermjs/xterm.js/issues/1709は基本的に同じものであり、問​​題のカウントダウンを維持したいので、終了します。

このページは役に立ちましたか?
0 / 5 - 0 評価