Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.awt.Font.getStringBounds在openJdk11和openJdk8上给出了不同的结果_Java_Openjdk 11 - Fatal编程技术网

java.awt.Font.getStringBounds在openJdk11和openJdk8上给出了不同的结果

java.awt.Font.getStringBounds在openJdk11和openJdk8上给出了不同的结果,java,openjdk-11,Java,Openjdk 11,我需要以编程方式呈现PDF文档。我使用的是itext7library和openJdk8。所有操作都很好,但我决定在openJdk11上更改openJdk8,并使用移动的y坐标位置渲染我的文档。 结果是在openJdk8上获得的,结果是在openJdk11上获得的 这是我的代码: public void renderText(Font font, String text, double x, double y, FontRendererContext ctx) { Rectangle2D

我需要以编程方式呈现PDF文档。我使用的是
itext7
library和openJdk8。所有操作都很好,但我决定在
openJdk11
上更改
openJdk8
,并使用移动的y坐标位置渲染我的文档。 结果是在
openJdk8
上获得的,结果是在
openJdk11
上获得的
这是我的代码:

public void renderText(Font font, String text, double x, double y, FontRendererContext ctx) {
    Rectangle2D rect = font.getStringBounds(text, ctx);   // In this place I get a different result.
    pdf.addText(text, x, (pageHeight - y - rect.getY()));
}
我提供的测试示例再现了这个问题:

public static void main(String[] args {
    final String text = "Simple text";
    // load font
    final InputStream arialIs = Main.class.getClassLoader().getResourceAsStream("fonts/arial.ttf");
    Font font = Font.createFont(Font.TRUETYPE_FONT, arialIs);            
    GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(font);
    Font newFont = font;
    newFont = newFont.deriveFont(14);
    
    // getting measuring
    final java.awt.geom.AffineTransform transform = newFont.getTransform();
    FontRenderContext frc = new FontRenderContext(transform, true, true);
    final Rectangle2D stringBounds = newFont.getStringBounds(text, frc);
    System.out.println(stringBounds);
}

如何在
openJdk11
上修复它?

包含一个。
rect
的值有什么不同?@samabcde我总是得到这个结果
java.awt.geom.Rectangle2D$Float[x=0.0,y=-0.0,w=0.0,h=0.0]
@samabcde我添加了一个可重复的示例。如果你必须复制,你应该使用openJdk11这是我用openjdk版本“11”2018-09-25运行的结果:
java.awt.geom.Rectangle2D$Float[x=0.0,y=-0.90527344,w=4.946289,h=1.1499023]
,这是你所期望的吗?