Ticket #45493

Reverse (SGR 7) 属性の文字色と背景色が反転しない

Open Date: 2022-08-28 12:57 Last Update: 2022-09-17 22:30

Reporter:
Owner:
Type:
Status:
Closed
Component:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
2
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

文字色と背景色が反転しないので Normal と同じに見える。

https://osdn.net/ticket/download.php?group_id=1412&tid=45482&file_id=10189

手元のスナップショット r10185 では表示されて r10194 では表示されないので、r10192 の修正によるものと思われる。

4-stable では問題ない。https://mirrors.gigenet.com/OSDN//ticket/g/t/tt/ttssh2/45482/10188/4_106.png

Ticket History (3/16 Histories)

2022-08-28 12:57 Updated by: nmaya
  • New Ticket "Reverse (SGR 7) 属性の文字と背景色が反転しない" created
2022-08-28 14:03 Updated by: nmaya
  • Details Updated
  • Summary Updated
2022-08-29 00:07 Updated by: zmatsuo
Comment

r10203 で修正しました。

DECSCNM (echo -en "\033[?5h" と echo -en "\033[?5l") を使って動作をチェックしていました。

Tera Term 4 では、ANSI Color属性が入っているとDECSCNMでは反転しません。 マウスで文字を選択と SGR 7 では反転します。

修正前はANSI Color属性が入っていると反転しませんでした。

今回の修正で、DECSCNM ,マウスで文字選択, SGR 7 すべてで反転するようになりました。

2022-08-30 08:52 Updated by: nmaya
Comment

反転するようになりました。ありがとうございます。

2022-09-09 23:23 Updated by: nmaya
Comment

TODO

  • 4.106 からの問題なら変更履歴に入れた方がいい。記述はまだなはず
  • 4-stable では「ANSI Color属性が入っていると反転しない」とのこと。4-stable も修正する?もういい?
2022-09-10 01:14 Updated by: zmatsuo
Comment

4仕様の反転ということで、いいかなと勝手に思っていました。

理想の反転属性がどんな表示であるのがよいか、 5は理想のどうさにしたい。 4はできればしたい、 という感じでしょうか。

反転の動作をまとめてみますね。

2022-09-11 00:39 Updated by: zmatsuo
Comment

ANSI Colorを表示した状態で、反転表示(DECSCNM)したときの表示が xterm と Tera Term 4 が同じなので、 意図した動作ではないかと思いました。

Tera Term 5(r10256) は putty と同じ動作になっています。

テストプログラムに機能を追加して r10257 にいれました。 実行したときの画像を添付しました。20220911_reverse.zip

反転表示にはいくつかの流派というか実装がありそうです。 どうしたものか悩ましいです。

追試、他の実装での動作について、意見などいただければと思います。

(Edited, 2022-09-11 00:40 Updated by: zmatsuo)
2022-09-13 22:14 Updated by: nmaya
Comment

RLogin は結構ややこしいことやってるみたいですね。

SGR7反転時

  • 文字色=背景色
  • 背景色=文字色の各RGB値を1/2?

DECSCNM

パッと見では0-7,1-6,2-6,3-4を入れ替えているように見えるが、各RGB値の255-値

FG/BG反転時の色
standardblack00,0,0255,255,255
red1196,64,6459,191,191
green264,196,64191,59,191
yellow3196,196,6459,59,191
blue464,64,196191,59,59
magenta5196,64,19659,191,59
cyan664,196,196191,59,59
white7196,196,19659,59,59
brightblack8128,128,128127,127,127
red9255,96,960,159,159
green1096,255,96159,0,159
yellow11255,255,960,0,159
blue1296,96,255159,159,0
magenta13255,96,2550,159,0
cyan1496,255,255159,0,0
white15255,255,2550,0,0

マウス選択時

文字色と背景色を反転?

(Edited, 2022-09-14 00:38 Updated by: nmaya)
2022-09-13 22:44 Updated by: nmaya
Comment

DECSCNM

  • xterm / Tera Term 4 ... DECSCNM では反転せず、ANSI 指定色のままになる。ドラッグ選択では文字色と背景色が反転する。
  • PuTTY / Tera Term 5 ... DECSCNM で ANSI 指定色が反映された文字色と背景色が反転する。ドラッグ選択しても DECSCNM と同じ色になる。
  • RLogin ... DECSCNM で ANSI 指定色の各色に対する反転色になる。ドラッグ選択では文字色と背景色が反転する。

https://vt100.net/docs/vt510-rm/DECSCNM.html

dark characters on a light background

light characters on a dark background

この2つの切り替えなので「ANSI Color の設定があったらどうなるべき」のような仕様はなく、実装依存なのでしょうかね。

「DECSCNM してから ANSI Color を反映」あるいは「ANSI Color がある部分においては DECSCNM は無視する」と考えると xterm のようになる

「ANSI Color を反映してから DECSCNM」と考えると PuTTY のようになる

ここはいわもとさんのご意見を伺いたいところです。

2022-09-13 23:42 Updated by: zmatsuo
Comment

rloginのマウスで選択時の反転は、(R,G,B)->(255-R,255-G,255-B)になっていて、 Win10_consoleと同じ感じがします。

2022-09-14 00:53 Updated by: nmaya
Comment

zmatsuo への返信

rloginのマウスで選択時の反転は、(R,G,B)->(255-R,255-G,255-B)になっていて、

確かに255-値でした。RLoginのDECSCNM時ですね。

Win10_consoleと同じ感じがします。

松尾さんの gif を見ると、Win10 は DECSCNM に対応していないようで。こちらはマウス選択時ですね。

Tera Term 4 Tera Term 5 PuTTY xterm Win10(conhost) RLogin
DECSCNM *1ANSI色のまま *2ANSI色反転 *2 *1 未対応 *3(255-値)
マウス選択 *2 *2 *2 *2 *3 *4(文字=背景・背景=文字*1/2)
2022-09-15 01:48 Updated by: nmaya
Comment

SGR 7 単体が動作しない問題は修正済みなので close します。

ANSI Color と DECSCNM が組み合わさったときの件は #45648 へ移行します。

2022-09-15 01:51 Updated by: doda
Comment

DECSCNM set時は、カラー時でも前景色/背景色を入れ替える(PuTTY/Tera Term5の動作)でOKだと思います。

Tera Termの主なエミュレーション対象はDEC VTシリーズですが、VTシリーズでカラーが扱えるVT525の動作はDECSCNMで前景色と背景色が入れ替わります。

他に特別な理由が無い限りはVT525に合わせたいです。

2022-09-17 22:30 Updated by: zmatsuo
  • Status Update from Open to Closed

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login