none
Windows10の日本語コンソールで罫線文字列の表示がおかしい。Windows10のバグだ

    質問

  • Windows10の日本語コンソール(コマンドプロンプト、DOS窓, PoweShellも)が最近おかしくなりました。

    横罫線をコンソールに表示すると短く表示されるため、表示が崩れます。

    もとはCのprintfで見つけましたが、単なるtypeでも発生します。
    PowerShell上でも同じ


    プログラム言語に関係なさそうですが、ここで質問させてください。


    [いつから?]
    ・以前は問題なし。少なくともWindows10の最初のころはOKだった筈。
    ・1709からかどうかは今となっては確認できません。(環境がない)
    ・Windows8.1でも再現するかは未確認。(環境がない)
    ・もちろんWindows7では問題なし。

    [現象]
    横罫線をコンソールに表示すると短く表示されるため、表示が崩れます。

    Windows10のバグと判断しています。日本語というかコード・ページ932
    のみの異常のようです。

    ・コンソールのフォントはMSゴシックでも、ラスタにしても同様です。
      IPAゴシックなどWindows組み込みでないフォントでも同様の結果。
    ・コードページ932でのみの異常です。chcp 437すると文字化けはするも
      のの、ズレは生じません。
    ・プログラム言語を介さず単にtypeしても発生します。
    ・買ってきたばかりの他に何も入れていないPCでも再現
    ・PowerShell上でも同じ

    [再現手順1]
     1. 以下の「ここから」~「ここまで」のあいだをテキストファイル(a.txt)に保存する。
        等幅のフォントであれば罫線でかいた田のような形になります。
     2. type a.txtとして表示してみる
        ここで異常がわかる。

     3. chcp 437
     4. type a.txtとして表示してみる
        文字化けするものの、表示は乱れず。

     5. chcp 932
     6. type a.txtとして表示してみる
        ここで異常がわかる。


    ------------------------------ ここから

    12345678901234567
      ┌──┬───┐
      │    │      │
      │    │      │
      ├──┼───┤
      │    │      │
      └──┴───┘
      ┏━━┳━━━┓
      ┃    ┃      ┃
      ┃    ┃      ┃
      ┣━━╋━━━┫
      ┃    ┃      ┃
      ┗━━┻━━━┛
      +-----+-------+
      I     I       I
      I     I       I
      +-----+-------+
      I     I       I
      +-----+-------+

      +--+----+
      |     |       |
      |     |       |
      +--+----+
      |     |       |
      +--+----+
    12345678901234567
    ------------------------------ ここまで


    2018年1月19日 11:44

すべての返信

  • プログラム言語に関係なさそうですが、ここで質問させてください。

    「質問したい」と書かれていますが、質問内容は書かれていないように見受けられます。
    不具合だと断定しているのであれば、フィードバック Hub で上げた方が良いでしょう。

    2018年1月19日 12:27
  • このバグの回避手段はないか、という意味でした。

    とりあえずフィードバックHubにあげました。

    2018年1月30日 6:09
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    追試
    ┌a
    ─a
    ─a
    ┬a
    ─a
    ─a
    ─a
    ┐a
    の結果
    表示幅は
    全角幅になっているのに、入力幅が半角幅になっている。
    したがって、
       ┌ ─ ─ ┬ ─ ─ ─ ┐
       │     │       │
       │     │       │
       ├ ─ ─ ┼ ─ ─ ─ ┤
       │     │       │
       └ ─ ─ ┴ ─ ─ ─ ┘
       ┏ ━ ━ ┳ ━ ━ ━ ┓
       ┃     ┃       ┃
       ┃     ┃       ┃
       ┣ ━ ━ ╋ ━ ━ ━ ┫
       ┃     ┃       ┃
       ┗ ━ ━ ┻ ━ ━ ━ ┛
    半角空白を全角の後ろに追加する。

    2018年1月31日 14:17
  • 参考意見です。

    フォントにおける 罫線文字の 字幅 が、欧米系のものは半角ベースになっている事、日本語は全角ベースが原因と思われます。  Mistaken of rendering engine localization.

    同一文字列を画像処理ソフトで表示させ、フォントを和洋で切り替えるとそれが確認出来ます。

    因みに、Unicode 配列の前後である 囲み英数やブロック要素 では問題は無いですね。

    Microsoft Windows [Version 10.0.16299.192]
    (c) 2017 Microsoft Corporation. All rights reserved.
    
    C:\WINDOWS\system32>echo ""
    ""
    
    C:\WINDOWS\system32>echo "─" U+2500
    "─" U+2500
    
    C:\WINDOWS\system32>echo "─ " U+2500 U+0020
    "─ " U+2500 U+0020
    
    C:\WINDOWS\system32>echo "①" U+2460
    "①" U+2460
    
    C:\WINDOWS\system32>echo "▀" U+2580
    "▀" U+2580
    
    C:\WINDOWS\system32>rem IME mode is OFF! Never ON !

    コピペしたら、普通になっていますが、cmd.exe 上では異なります。


    2018年2月7日 15:41