バグ: 游明朝での「ーム」を含むテキストのレンダリングに失敗する

Issue #623 resolved
k4nagatsuki repo owner created an issue

今週、私の開発機でWindowsの大型アップデートがあったのですが、その後JUDGMENTの宿の背景にあるチーム名のレンダリングがエラーを起こすようになりました。

調べてみると、以下のような事が起きていました。

  1. フォントのレンダリングでは、レンダリングサイズを計測し、その後計測した領域に描画した文字列のイメージを貼り付けます。
  2. 計測領域と文字列イメージのサイズは同じになるはずですが、なぜか幅が1ピクセル食い違う事があります。
  3. 游明朝で「ーム」という文字列を描画すると、時によって「ー」の計測幅が1ピクセル増えたり減ったりするようです。
    • 他のフォントでは未確認ですが、游明朝Lightでは起こらないようです。
    • サイズは18~20・36~40ピクセルで変動する事を確認しました。他のサイズは未確認です。
    • 「ー」のあとに来る文字はなんでもいいという事ではないようです。私が調べた範囲では「ム」だけがこの現象を起こします。
  4. そのため、サイズの食い違いによりエラーが発生します。

どうやらWindows APIが「ー」の幅をランダム(?)に変動させているようです。全く異なる仕組みでテキストをレンダリングしているcwxeditorも、当該テキストをテキストセルに置いて再描画を繰り返すと「ム」の位置が左右に揺れ動きます。

ただ、NotepadやMS Paintといった他のアプリケーションでは今のところ同じ現象を確認できていません。文字サイズをピクセルで指定していないからかもしれません。

同じ文字列を同じ条件で描画した時に結果が変動するというのは、最近入ったWindowsのバグだと思います。アップデートで直るかもしれません。少し様子を見させてください。

来週末(というか年末)までに変化が無ければ、対策を入れます。2.3もリリースする必要があります。

Comments (10)

  1. k4nagatsuki reporter

    OSは以下の通りです。

    • Windows 10 Pro (64-bit)
    • バージョン 1709
    • ビルド番号 16299.125
  2. 暗黒 騎士

    2.3を出す場合、一応yado2.xmlのテキストセル指定フォントも変えた方がいいでしょうか?

  3. k4nagatsuki reporter

    その場合はサイズが変動しても大丈夫なようになんとかするので、変えなくても大丈夫です。

    フィードバックHubでバグレポートを送ったので、反応があればまたここに書きます。

  4. k4nagatsuki reporter

    いまだに直る気配も、フィードバックへの反応も無いので、今後の行動について期限を切っておきます。

    • 1月27日までに対処コードを入れたテスト版を作っておきます。
    • 2月1日までに直っていなければ対処コードを入れた2.3をリリースします。
  5. k4nagatsuki reporter

    pull request #2142

    defaultブランチに対処コードを入れました。

    エラーで落ちはしなくなりましたが、同じ文字列を描画しても結果が微妙に変わる事があります。これはOSの返してくる結果がランダムに変わるのでどうしようもありません。

    2.3のテスト版もこれから作ります。

  6. k4nagatsuki reporter

    今日累積的Updateが入ったのですが、この不具合は依然として残っていました。

    予定通り2.3をリリースしました。

  7. k4nagatsuki reporter

    ビルド1803ことWindows 10 April 2018 Updateをインストールしたところ、この現象は発生しなくなりました。

    フィードバックHubにはいまだに応答が無いので確信は持てませんが、どうも直ったようです。しばらく待って再発しないようなら、解決としていいと思います。

  8. Log in to comment