ACS の 5250 表示で画面レイアウトが崩れる
ACS の 5250 表示で画面レイアウトが崩れるケースが発生しています。こんな感じになります。
入力項目が下線に対して正しくないだけでなく、ちょっと見にくいですが、縦にそろっているはずのピリオドが揃っていません。
IBM は Java の動きによるもので ACS では対応できないと文書で表明
これに対して IBM から文書が出ました。
Why does IBM i ACS 5250 emulator character alignment vary with different versions of Java?
ACS は 画面描画を Java に任せているので ACS では対応できない、Java 側での対応が必要とのことです。
the IBM i Access Client Solutions (IBM i ACS) 5250 Emulator does not have direct control of this behavior, so any code changes address this would have to be pursued with the Java provider.
発生条件
下記の3つの条件が重なるとき、発生するのを確認しています。ただし、これ以外にも発生する可能性はあります。
ACS で「フォント拡大縮小」を「はい」にしている
Windows のディスプレイで拡大縮小が100%でない
Java が 9 以上
2020-04-25 追記:フォントによってはJava 8でも発生します。下部に追記しました
Java 8 では発生しません。Oracle/Open問わず Java 9 以降で発生します。
Java 9 から Windows のディスプレイで拡大縮小への対応するようになりました。前項の発生条件を考えると、このHiDPI対応が完全でないのかもしれません。
Windows HiDPI Graphics support
回避方法
上記の条件で発生しているのであれば、どれか一つを変えてやれば、回避できます。
ACS で「フォント拡大縮小」を「いいえ」にする
ただし、横がスカスカになったりします。
ACS で「固定フォント」を「はい」にする 2020-04-25 追記
ただし、セッションウインドウのサイズを変えても、文字の大きさが変わらなくなります。
Windows のディスプレイで拡大縮小が100%にする
Windows環境全体の変更であり、高解像度の環境では他のアプリケーションの表示・文字が小さくなりすぎるかもしれません。
Java を OpenJDK 系の Java 8 にする
Java プロバイダーによっては OpenJDK ベースのJava 8 を長期サポートしているものもあります。
例えば AdoptOpenJDK の場合、少なくとも2023年9月まで Java 8 をサポートすると言っています。
ただし、こちらで呼べたように、横向き用紙に画面印刷やJPS印刷ができません。
Oracle 8 を使う
一番制約のない回避策はOracle 8 を使うことです。
Oracle が有償化したのは新規ダウンロードで、以前にダウンロードしたものは使い続けられるそうです。
セキュリティが心配なら、Oracle と有償サポート契約を結ぶこともできます。
下記の方法で、古いJavaの安全度を高めることもできます。
2020-04-25 追記: Oracle Java 8 でもフォントによっては発生することを確認
Oracle Java 8 でもフォントによっては発生することを確認しました。
Monospaced や MSゴシックなど標準的なフォントを使っている場合、Java 8 では発生せずに Java 9 以降で発生するため、Java 9 以降であることが条件のひとつと思っていましたが、フォントによっては Oracle Java 8 でも発生することが確認しました。
問題のフォントは Google と Adobe が共同で行っているオープンなフォントの中で漢字が使え DBCS:SBCS の幅が 2:1 の等倍フォントである「Noto Sans CJK Nono JP」です。
Google Noto Fonts から「JP」で検索される「Noto Sans CJK JP」のなかの NotoSansMonoCJKjp-Regular.otf を導入してテストしました。
ACS 1.1.8.4 を Oracle Java 8 u201 で動かしています。
フォント設定は、こちら。
ディスプレイ設定で 150% の拡大を設定しています。
WRKACTJOB のプロンプトで見ると、レイアウトの崩れが確認できます。
今回の場合、下記の回避策では改善されませんでした。
- ACS の「フォント拡大縮小」を「いいえ」に設定
- Windows のディスプレイ設定で 拡大縮小を 100% に設定
改善されたのは、下記の設定です。この場合、ディスプレイ設定で 拡大縮小が 150% に設定されていても改善されました。
ただし、セッションウインドウのサイズを変えても、文字の大きさが変わらない設定です。
- 「固定フォント」を「はい」に設定
2019-07-12 Java を ACS 専用にして安全にするの情報とリンクを追加
2020-04-25 Java 8での発生を追記。回避策として固定フォントの利用を追記
「All About ACS」では IBM i に対する新しいクライアント「IBM i Access Client Solutions」の情報をいろいろ提供していきます。
記事一覧はこちらで確認いたけます。
許可の無い転載を禁じます。
この記事は筆者の個人的な責任で無保証で提供しています。
当記事に関してIBMやビジネスパートナーに問い合わせることは、固くお断りします。