4D 20でストラクチャファイルをプロジェクトモードに変換した場合,Windows版の過去バージョンで作成したフォームの入力エリアに表示した文字の末端(特に数字など丸みのある文字の曲線部分)が欠けてしまうことがあります。
関連記事
4Dは,19r4以降,高解像度ディスプレイに対応しています。これはGDIスケーリング(画像や文字サイズを引き伸ばすことで高解像度ディスプレイに対応する便宜的な仕組み)ではなく,テキストのレンダリングをGDIからDirectWriteに移行することによって実現した本格的な対応です。
関連記事
GDIを使用していた過去バージョンで作成されたフォームを4D 20のDirectWriteモードで表示した場合,まったく同じようにテキストがレンダリングされることはありません。
バイナリモードには互換性オプションの「フォームでのテキストレンダリングではDirectWriteを使用する」が用意されていますが,プロジェクトモードではこのオプションが表示されません。過去バージョンで作成されたバイナリモードのフォームを4D 20に変換した場合,このオプションを有効化することは任意となっていますが,バイナリモードのフォームを4D 20でプロジェクトモードに変換した場合,このオプションは強制的に有効化されます。アップグレードの原則は「互換性を重視」ですが,プロジェクトモード変換の原則は「最新の仕様に移行」だからです。
もし,どうしても過去バージョンと同じようなテキストのレンダリングを希望し,高解像度ディスプレイ対応を諦めても良いのであれば,直接,settings.4DSettings ファイルを編集することができます。
<?xml version="1.0" encoding="UTF-8"?>
<preferences stamp="…">
<com.4d>
<database>
<misc win_form_text_directwrite="false"/>
</database>
</com.4d>
</preferences>
ただし,4D 19 R4以降は全体として「高解像度ディスプレイ対応アプリケーション」なので,高解像度ディスプレイではフォームの表示が不自然になるかもしれません。その場合,4D.exeと同階層のResources フォルダーにあるinfo.plist ファイルを編集し,高解像度ディスプレイ未対応当時の動作に戻すことができます。
<key>WinDPIAwareness</key>
<string>0</string>
いずれも暫定的な措置であり,GDIモードが将来的にサポートされるわけではありません。過去バージョンで作成したフォームの入力エリアに表示した文字の末端(特に数字など丸みのある文字の曲線部分)が欠けてしまう場合,そのような入力エリアのフォントやサイズを見直すことが勧められています。
ケーススタディ
それぞれのモードでテキスト入力に数字を表示しています。プロパティは下記のとおりです。
- フォント名:
MS Pゴシック
- フォントサイズ:
13
GDIモード
DirectWriteモード
6
および9
の左側が欠けていることに気づきます。
修正案①
スタイルシートのフォントサイズを変更します。オブジェクトの高さは自動的に調整されます。
- フォントサイズ:
16
- フォントサイズ:
20
修正案②
スタイルシートのフォント名をMS Pゴシック
ではなく,よりモダンなものに変更します。
- フォント名:
游ゴシック
- システムフォント