Cheok Yan Cheng
Cheok Yan Cheng

Reputation: 42690

Java Font Display Problem

I realize that, in my certain customer side, when I use the font provided by Graphics2D itself, and decrease the size by 1, it cannot display properly.

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);

Rest of the font is OK. Here is the screen shoot (See the yellow box. There are 3 type of different font within the yellow box) : alt text http://www.investalks.com/attachments/month_1005/10051420318460461ffea5a2f9.jpg

Upvotes: 0

Views: 419

Answers (1)

Jonathan Feinberg
Jonathan Feinberg

Reputation: 45324

You don't show enough code to determine whether the size is actually the problem...

Having said that, your code will be easier to read if you use the deriveFont() API, as in

final Font dateFont = oldFont.deriveFont((float)(oldFont.getSize() - 1));

This may or may not address your problem. My money is on some locale setting, which is returning characters that have no glyphs in the current font.

Upvotes: 1

Related Questions