Я строил среду разработки на Java (как небольшой исследовательский проект). В рамках этого я создал пользовательский текстовый компонент, который рисует сам текст, используя Graphics2d следующим образом:
g2.drawString("some text", 100, 100);
Все работало отлично, развивая вещи в Eclipse, используя 1.6 (я предполагаю, что это предоставлено Apple), пока я не упаковал все и не работал в java 1.7 (предоставлен Oracle). Очевидно, что в средах разработки шрифты очень важны, поэтому я был недоволен, увидев результаты в 1.7.
Я пробовал упаковывать пользовательские шрифты, но все они кажутся зернистыми и размытыми. Сравнение выше не так уж плохо, но некоторые шрифты (например, Монако) выглядят ужасно.
Я предполагаю, что это связано с тем, как Apple перехватывает вещи в Quartz. Но есть ли способ улучшить ситуацию, чтобы он не выглядел ужасно в других системах? У кого-нибудь есть стратегия для этого?
Обновление: Это сравнение в Монако:
и увеличенное сравнение 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);