浮动字体大小在 OpenJDK 中不起作用
Posted
技术标签:
【中文标题】浮动字体大小在 OpenJDK 中不起作用【英文标题】:Float font size is not working in OpenJDK 【发布时间】:2018-11-26 12:34:46 【问题描述】:。 似乎在计算字符串边界时字体大小被四舍五入 例如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
【问题讨论】:
您能否在每种情况下显示完整的字体定义:打开 jdk 和 oracle 没有可用的相同字体,因此如果找不到您的字体 jdk 将使用可以完全使用的默认字体不同。 我在结果中添加了字体信息。两者都使用相同的字体文件。在调试时我注意到两个 jdk 都使用不同的字体缩放器 Oracle JDK:T2KFontScaler Open JDK:FreetypeFontScaler 我不确定这是否会影响 Fonts slightly wider in OpenJDK vs OracleJDK的可能重复 不幸的是,我也用 Oracle JDK(jdk-8, jdk-8u5, jdk-8u102, jdk-8u201) 做了很多测试,同样,浮动大小没有考虑。每个小于 11.5 的值都舍入为 11,大于 11.5 的值舍入为 12。我以前用 Graphics2D 编写文本。有人找到解决方案了吗? 【参考方案1】:我就是这么想的^^。这是与您的问题相关的主题:
Fonts slightly wider in OpenJDK vs OracleJDK
【讨论】:
以上是关于浮动字体大小在 OpenJDK 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章