私はJavaで開発環境を構築してきました(小さな研究プロジェクトとして)。その一環として、次のように Graphics2d を使用してテキスト自体を描画するカスタム テキスト コンポーネントを作成しました。
g2.drawString("some text", 100, 100);
すべてをパッケージ化して Java 1.7 (Oracle 提供) で実行するまで、Eclipse で 1.6 (これは Apple によって提供されていると思います) を使用して問題なく開発できました。明らかに、開発環境ではフォントはかなり重要なので、1.7 での結果を見てがっかりしました。
カスタム フォントをパッケージ化しようとしましたが、すべて粒子が粗く、侵食されて表示されます。上記の比較はそれほど悪くはありませんが、一部のフォント (Monaco など) は見栄えが悪くなります。
これは、Apple が Quartz に接続する方法に関係していると思います。しかし、他のシステムで見栄えが悪くならないように改善する方法はありますか? 誰かがこれに対する戦略を持っていますか?
更新: これはモナコでの比較です:
Monaco の C (paintComponent 内) の拡大比較 (左が 1.7、右が 1.6)。以下を使用して、ローカルの ttf ファイルからフォントをロードしていることに注意してください。
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("monaco.ttf");
Font customFont = null;
try
{
customFont = Font.createFont(Font.TRUETYPE_FONT, is);
customFont = customFont.deriveFont(16.0f).deriveFont(Font.BOLD);
is.close();
ge.registerFont(customFont);
} catch (FontFormatException e1)
{
e1.printStackTrace();
} catch (IOException e1)
{
e1.printStackTrace();
}
this.setFont(customFont);
以下を使用してアンチエイリアシングがオンになっていることにも注意してください。
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);