Tatsu still writes something... Fourth season

これからも私はなにかをしてなにかを書く

高DPIディスプレイでないと分からない物

4Kで動かして初めて分かった物

GitHubのIssueを見ると何かと4K等の高DPIでのIssueが目立つようになってきた。

また、職場でも4Kディスプレイを使うようになるとフォント倍率の関係で作業領域が圧倒的に広くなるわけではないけど広くなった画面やきれいさを増したフォントを見てほしくなった。

で、アマゾンプライムデーで4Kディスプレイを即決で購入、DispleyPortがあるマシンがないので、今ある電源の出力の範囲でDispleyPortがあるグラフィックボードも購入する。おかげで、別な遊びも遊べるようになったがドライバで悶絶したのは別な話。

実際に4K等の高DPIにするとそれに応じて見えないけどウインドウ枠とかの初期設定もDPIの分の倍率がかかって増えて、これが原因で一部ソフトの表示が変になるということが計算の結果分かった。

というわけで早速Windowsカスタマイズシリーズの対応を始めた。

前哨戦

まずは、Meiryo UIも大っきらい!!でトライ。Re-MetricsからWindows 8/10/11のプリセットを持ってきてプリセットを設定するときにウインドウの各項目も設定する。それって、なんてRe-Metrics。

で、まとめあげる。この辺は良好。

何かあったときのために

このプリセットの話はネタを持ってきた元のRe-Metricsにも影響するので、こちらの方にも反映する。トラブルの時の予備となるのとこっちはリリースノートの訳を頼んでみなくても良いのでまずこっちを出すことにする。

プリセットを選択したときはシステムDPIに応じて倍率をかける。

さよならVisual C++ 2008

Re-Metricsはプリセットのウインドウ各項目値を画面表示と共用しているので、画面表示用のプリセット値を数値に直して計算している。Windows用ソフトで他国の人からの要望もあったので各国語で表示できるようにしているのだが、UTF-8以前にシングルバイナリで各国語対応したWindowsの不運のため、wchar_t/wstringから計算用にdouble型に変換せざるを得ない。

で、atof関数に相当する関数はと見ると見事にWindows独自。いくらWindows専用とは言え、C/C++規格化された手段があるのであれば後学のためにも標準の手段を使いたい。そこで見てみるとC++ 11か14(最近のVC++の既定)まで来るとwstringからdoubleに変換できるto_double関数という物があった。C++ 11か14で追加された物なので、Visual C++ 2008ではコンパイルできないのは明らかである。また、.NET Framework 3.5のサポート期限の関係からWindows 11にVisual Studio 2008を入れたくないのでコンパイラVisual Studio 2022のVC++に変更した。

Meiryo UIも大っきらい!!で一度VC++ 2019ビルドしたときにWindows Defenderに引っかかった事件を起こしたのでVirusTotalで調べると全然知らないソフトくらいしか引っかからないのでこれで良しとする。

というわけでリリース。

あとはMeiryo UIも大っきらい!!をVisual C++ 2015以降でビルドしてアンチウイルスソフトに引っかからなければVisual C++ 2008を仮想マシン送りにしてきれいな環境を作る事もできるのだが。