(2019.03.20 追記:Windows7 の Chrome では Unicode の合字が表示されないので、合字を画像に変えました)
という文字を nyagos に貼り付けると、文字化けするだけでなく、カーソル位置もおかしくなるという問題
これは2つ問題がある
- という文字が合字である
- 1コードポイントではなくて、「👨(U+1F468)」+ゼロ幅接合子(U+200D)+ 「👩(U+1F469)」という3コードポイントからなっている
- nyagos は合字を想定していない
- ゼロ幅接合子の単体の桁数は0桁である点は、go-runewidth で把握できている
- 👨と👩各文字ともサロゲートペアで表現される
ということで「サロゲートペアな文字」も「ゼロ幅文字」もきちんと表示するのは無理とわかったので、nyagos の一行入力では <UUUUU>
みたいな形で表現するようにした。^I
とかと同じ扱いで、表示上は5桁になっているがバックスペース1回で削除できるし、コマンドに出力する時は元の文字に直して出力される
(一応、この動作は --output-surrogate-pair
というオプションで抑制する(=そのまま表示するようにする)ことが出来るようにはしておいた)
将来的にこういった文字もコマンドプロンプトで表示できるといいんですが。絵文字が使えないというのはさびしいので…(というか、将来、実用上も困るシーンが出てきそう)
本件、ご協力いただいた tsuyoshicho さん、ありがとうございました。