由于Java 7u13,每当字体的字符/字形宽度大于其高度的4倍时,就根本不会使用图形2D进行渲染。抽绳(例如,字形4001em宽,基本字号1000em):
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setFont(new Font("myFontWithWideGlyphForX", Font.PLAIN, 12));
g2.drawString("XXXX", 10, 10);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
g2.setFont(new Font("myFontWithWideGlyphForX", Font.PLAIN, 12));
g2.drawString("XXXX", 10, 10);
}
在设置子像素atialiasig并正确渲染字体后,渲染算法的工作方式似乎有所不同。
如果切换到Java 7u11或更早版本,则文本渲染不会出现任何问题,也不会设置值\u text\u antialas\u LCD\u HRGB。
http://www.fontspace.com/digital-magic/hdgems5
-它可以用Java 7u11渲染,但不能用比它更新的任何东西渲染。
设置子像素抗锯齿值_TEXT\u antialas\u LCD\u HRGB只是为了呈现字体似乎有点粗糙、难看,而且并不总是可能(例如,在使用第三方libs时)。有谁知道自7u13以来awt没有呈现这样的角色的原因是什么?这样的字体不受支持吗?或者这是一个bug?