java.awt.Font.getStringBounds 在 openJdk11 和 openJdk8

问题描述

我需要以编程方式呈现 PDF 文档。我正在使用 itext7 库和 openJdk8。一切正常,但我决定在 openJdk8 上更改 openJdk11 并且我的文档以移动 y 坐标位置呈现。

This

结果在 openJdk8 获得,

this

结果在 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 上修复它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)