3

浮动字体大小在 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
4

1 回答 1

0

我就是这么想的^^。这是与您的问题相关的主题:

OpenJDK 与 OracleJDK 中的字体稍宽

于 2018-06-18T13:34:12.433 回答