浮动字体大小在OpenJDK中不起作用。 似乎在计算字符串边界时将字体大小四舍五入 例如11.4 - > 11& 11.5 - > 12 但是在oracle jdk中它工作得很好。
知道如何在OpenJDK 8中解决这个问题吗?
程序:
import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
public class TestFont {
public static void main(String []args){
FontRenderContext frc = new FontRenderContext(null, true, true);
Font font = new Font("Courier New",0,(int)11.5);
font = font.deriveFont(11.5f);
Rectangle2D bound = font.getStringBounds("PAGE",0,4, frc);
System.out.println("Char width:"+ bound.getWidth() / 4);
Font2D font2D = FontUtilities.getFont2D(font);
System.out.println("Font2D:" + font2D.toString());
}
}
结果:
OpenJDK 7,8,9:
Char width:7.201171875
Font2D:** TrueType Font: Family=Courier New Name=Courier New style=0 fileName=C:\windows\Fonts\cour.ttf
Oracle JDK 8:
Char width:6.901123046875
Font2D:** TrueType Font: Family=Courier New Name=Courier New style=0 fileName=C:\windows\Fonts\cour.ttf