我意识到,在我的某个客户方面,当我使用Graphics2D本身提供的字体,并将尺寸减小1时,它无法正常显示。
private void drawInformationBox(Graphics2D g2, JXLayer<? extends V> layer) {
if (MainFrame.getInstance().getJStockOptions().getYellowInformationBoxOption() == JStockOptions.YellowInformationBoxOption.Hide) {
return;
}
final Font oldFont = g2.getFont();
final Font paramFont = new Font(oldFont.getFontName(), oldFont.getStyle(), oldFont.getSize());
final FontMetrics paramFontMetrics = g2.getFontMetrics(paramFont);
final Font valueFont = new Font(oldFont.getFontName(), oldFont.getStyle() | Font.BOLD, oldFont.getSize() + 1);
final FontMetrics valueFontMetrics = g2.getFontMetrics(valueFont);
/*
* This date font cannot be displayed properly. Why?
*/
final Font dateFont = new Font(oldFont.getFontName(), oldFont.getStyle(), oldFont.getSize() - 1);
final FontMetrics dateFontMetrics = g2.getFontMetrics(dateFont);
其余的字体都可以。这是屏幕截图(见黄色框。黄色框内有3种不同的字体): alt text http://www.investalks.com/attachments/month_1005/10051420318460461ffea5a2f9.jpg
答案 0 :(得分:1)
您没有显示足够的代码来确定尺寸是否实际上是问题...
话虽如此,如果您使用deriveFont()
API,您的代码将更容易阅读,如
final Font dateFont = oldFont.deriveFont((float)(oldFont.getSize() - 1));
这可能会也可能不会解决您的问题。我的钱是在一些语言环境设置,它返回当前字体中没有字形的字符。