-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
East Asian Ambiguous Character #412
Comments
ご報告ありがとうございます。 Windows10 の 21H1 と 20H2 で確認しました。症状は違うのですが、何かしらおかしいのは確認しました。 従来の Windows だと East Asian Ambiguous をコマンドプロンプトで表示すると、基本2セル幅をとっていたのが、文字によっては1セル幅になっているケースがあるように見えます。└─ と ─┐ を入力してみると、両方とも何か表示がおかしいのですが、20H2 の方がより酷いようです。 逆に WindowsTerminal では East Asian Ambiguous は常に1セル幅なので(たぶん仕様)、nyagos (go-readline-ny) も Windows Terminal 上では1セル前提で動作するようになっており、└─ も ─┐も正常に扱えているように見えます( Windows Terminal では再現せず、正常動作をしている ) WindowsTerminal でもあった「本当は2セル必要なのに、表示しても1セル分しかカーソルが移動してくれない」というターミナルの不具合が、コマンドプロンプト環境に逆輸入されてしまったのかもしれません。 ( そして、Windows 8.1 のコマンドプロンプトだと、安定の2セル表示で、カーソル位置もまったく大丈夫ですね… ) |
…n the legacy terminals East Asian Ambiguous Character ・ Issue #412 ・ zetamatta/nyagos nyaosorg/nyagos#412
Windows10以降の「標準コンソール (not WindowsTerminal)」で U+2500 ~ U+257F の罫線文字を表示した時、カーソルが2セル分移動したり1セル分しか移動しなかったりと環境によって違う可能性があるので、常に無理やり2セル分移動させるようにしました。たぶん、これで表示は直っているのではないかと存じます。
対応としては過去に近い事例があり、WindowsTerminal 下の「🏳」U+1F3F3(Waving White Flag) と同じことを行いました(「🏳」単品ではなく「SPC SPC ESC 7 BS BS 🏳 ESC 8」と出力する:ESC 7 はカーソル位置を記憶し、ESC 8 は記憶した場所を復元する) WindowsTerminal の場合は、East Asian Ambiguous Character は常に1セルなので、本修正の影響は受けません。 他にも同様の文字があるかもしれません。その場合、追加で対応が必要になると思われます。 |
ご連絡とご対応,たいへんありがとうございます. OS: Windows10 (21H1)
単独では2セル幅(1全角幅)にみえますが, UAX#11ではUnicode のテキストを東アジアの従来文字コードの文脈で扱う場合,特性値A(曖昧)を持つ文字は全角の文字として扱う,とされているようですが,日本語版Windows10のcmd.exeではこれには従っていないということかもしれません. ※Nyagosとcmd.exeの役割分担を理解できていないのでピントが外れているかもしれませんが. |
「表示」とは具体的に、どのような手順で表示させた場合でしょうか? 今回、nyagos で対応したのは「コマンドライン(=プロンプトのある行)の入力上の取り扱い」となります。ここで文字幅・カーソル位置などが狂ってしまうと「入力したコマンドの編集」が不能になってしまうため、カーソル位置を微調整するなどして無理やりにでも対応する必要がありました。 が、それ以外についてはターミナル側、もしくはターミナル上で動く各個別のアプリケーションの領域になるため、基本的には nyagos ではどうしようもありません( nyagos もまたターミナルの上で動く1アプリケーションに過ぎないので、自分の表示は調節できても他のアプリは… ) 以下は、nyagos のコマンドラインから この例でいうと、コマンドライン上では罫線文字を表示させる時に、罫線1文字あたり画面の領域2セルを使うようにカーソル位置を調整しています。罫線文字は2つあるので、コマンドライン上では結果4セル分:8ピクセル×2セル = 32ピクセルをしめています。 一方で echo コマンドの出力についてはそういう調整がないので、2文字表示しているのに24ピクセル=3セル分しか使われないという「おかしな症状」が出ています。こちらは基本的にもう対応範囲外だと思っていただいた方がよいと思います。 以上、ご確認のほど、よろしくお願いいたします。 |
ていねいなご説明,ありがとうございます. |
本件、一旦クローズさせていただきます。よろしくお願いいたします。 |
最近気づいたのですが,罫線などの"East Asian Ambiguousな文字"の表示がおかしくなっていませんでしょうか?
例えば,
└─ (U+2514, U+2500)
はOKなのですが,
─┐ (U+2500, U+2510)
では表示が乱れます.以前のNyagos+Cmderではうまく表示されていました.
テスト環境
NYAGOS: 4.4.10_2
OS: Windows10 (21H1)
フォント: MeiryoKe_Console
ターミナル:
Cmder Version 1.3.18
Windows Terminal
cmd.exeコンソ-ル
(※三者三様の乱れ方)
コードページ: 65001
もっともcmd.exeコンソール+cmd.exeシェルでもおかしいので,East Asian Ambiguousな文字は難しいのかもしれませんが.
ただ,以前のNYAGOS+Cmderでは完璧だったのでここに報告しました.
The text was updated successfully, but these errors were encountered: