yuru7/HackGen

ターミナル上でギリシャ文字入力時にカーソル位置がずれる

mashiton opened this issue · 4 comments

Hackgen を使って Windows Terminal上でギリシャ文字を入力すると、それ以降のカーソルの表示位置がずれてしまいます。

>αβγ12345

と入力した場合、カーソル表示が「3」の位置になってしまいます。(その場合でも新たに入力される位置は「5」の右隣)
また、CUI版の vim/nvim でも同じ現象が起こりますが、GUI版vim/nvimやメモ帳では問題はありませんでした。
以下、いくつかのフォントで試してみた結果です
x Hackgen v2.8.0
o Hackgen Console NFJ v2.8.0
x PlemolJP v1.4.0
x PlemolJP Console NFJ v1.4.0

windows 10 Home 21H2
windows terminal 1.16.10261.0
Powershell 7.2.9
vim kaoriya 8.2
nvim 0.8.3

yuru7 commented

これは、フォントを表示するソフトウェアが一部の文字の幅をフォント内で定義されている幅を無視してしまうことに起因しています。この問題は割りとポピュラーなものなので、ご興味があれば「East Asian Ambiguous Width コンソール」などのキーワードで調べてみてください。

ご報告のとおり、Windows Terminalでもこの問題が起きていることを確認しました。Windows Terminalの挙動から察するに、Windows TermianalではEast Asian Ambiguous Widthに当てはまる文字を半角幅とみなして、カーソル位置を計算しているものと思われます。ただし挙げていただいたフォントのなかでHackGen Console NFJだけは αβγ が半角幅のグリフとなっているため、この問題を回避できているようです。

East Asian Ambiguous Width問題は、以下のいずれかで対処するしかありません。

  1. 不具合の起こりづらい (=East Asian Ambiguous Widthに当てはまる文字が半角幅になっている) フォントを使う
  2. East Asian Ambiguous Width問題の起きないソフトウェアを使う
  3. East Asian Ambiguous Width問題というものがあるのだな、と割り切って目を瞑る

日本語利用を第一に想定したソフトウェアはこのあたりの挙動は敏感に対処されている印象ですが、ターミナルのような英語利用が基本となるものは全角文字の優先度は下がるためEast Asian Ambiguous Width問題が起きやすいです。

フォントではなくアプリケーション側のポピュラーな問題だとは知らず失礼しました。
PlemolJPが正しく表示されないのは残念ですが Hackgen Console NFJ を引き続き使わせていただきます。
詳細な説明をありがとうございました。

yuru7 commented

@mashiton PlemolJP Console v1.5.0 にて、一部の曖昧幅記号を半角にしてみました。以前より本件関連の問題は起きづらくなったかと思います。よかったら試してみてください。

対応してくださってありがとうございます。早速使わせてもらいます。