Kod:Jak poprawić jakość tekstu w grafice Java?
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
public class TextRectangle extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] a) {
TextRectangle f = new TextRectangle();
f.setSize(300, 300);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(
RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("Calibri", Font.BOLD, 18));
g2d.drawString("Why does this text look so ugly?", 30, 150);
}
}
Wynik:
Jak widać odstępy między literami jest nierówna. Czasami jest to 1 piksel, czasem 2 lub 3 piksele. Inną kwestią jest to, że kropka powyżej "i" jest szersza niż dolna część.
Ten sam tekst napisany w edytorze tekstu i wygląda o wiele lepiej. Czy wiesz, jak rozwiązać ten problem?
Moje środowisko to Windows 8.1, Java 1.8.
Może ma to związek z czcionkami wektorowymi? – npinti
Może to (https://today.java.net/article/2005/07/21/lcd-text-anti-aliasing-fringe) może pomóc – MadProgrammer