1

Java2D を使用して、テキストを含む画像を生成しています。フォントは、Ubuntu を実行しているサーバーでは不適切なアンチエイリアシングで恐ろしくレンダリングされますが、OSX および Ubuntu ワークステーションでは美しくレンダリングされます。2 つの Ubuntu インストールの違いは、xwindows と xwindows がないことだと思いますか? 多分?とにかく、レンダリングのヒントが無視され、Java 1.6 サブピクセル アンチエイリアシング アルゴリズムがサーバーで使用されていないと思います。

私のレンダリングのヒントは以下のとおりです。縦置きディスプレイ用に最適化しています。

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_VRGB);

レンダリングを改善したttfファイルから直接フォントを作成しています。フォントがマシンにインストールされていないと思うので、デフォルトで別のものに設定されていました。これでフォントは正しくなりましたが、アンチエイリアシングはまだオフになっています。アンチエイリアシングを完全にオフにして画像を生成した場合よりも見栄えが良いので、何かをしていると思いますが、見栄えがよくありません。

Javaプロパティを試しました

-Dawt.useSystemAAFontSettings=lcd

しかし、何も変わりませんでした。

助言がありますか?ありがとう。

4

1 に答える 1

2

あなたはすでにこのようなことを試しましたか?

public void paintComponent(Graphics g){
  @SuppressWarnings("unchecked")
  Map<String, String> desktopHints = (Map<String, String>) Toolkit
    .getDefaultToolkit().getDesktopProperty("awt.font.desktophints");
  Graphics2D g2d = (Graphics2D) g;
  if(desktopHints != null){
    g2d.addRenderingHints(desktopHints);
  }
  g2d.drawString("text", 10, 10);
}

で受信したGraphicsオブジェクトはpaintComponent()、デスクトップのプロパティ(モニターの種類)について何も知らないデフォルトで設定されています。Toolkitにクエリを実行するdesktophintsと、使用されているハードウェアに関する情報が基盤となるオペレーティングシステムから返されます。59ページの「FilthyRichClients」を比較してください。

于 2012-09-22T22:31:42.353 に答える