別のフォント、具体的にはTimes New Roman(私が使用しているiMacで利用可能)を描きたい
フォントを正しく設定して文字列を描画します。FontMetricsこれを使用すると、フォントが正しく測定されますが、正しいフォントが描画されません。代わりに、描画されるのはArialだと思います。
その下でGraphics2Dオブジェクトを使用していますが、通常のGraphicsオブジェクトでも機能しません。
    // FONTS
    Font fBank = new Font("Times New Roman", Font.PLAIN, 9);
    Font fPrice = new Font("Times New Roman", Font.PLAIN, 17);
    Font fnormalText = new Font("Times New Roman", Font.PLAIN, 13);
    Font fHeadlineText = new Font("Times New Roman", Font.PLAIN, 27);
    Font fPayAndDiagnose = new Font("Times New Roman", Font.PLAIN, 12);
    Font fHeadlineNumber = new Font("Times New Roman", Font.PLAIN, 17);
    // FONTMETRIC
    FontMetrics fMetric = _parent.getFontMetrics(fnormalText);
    // LOGO
    int imgPosX = (int) pageFormat.getImageableX() + 30;
    int imgPosY = (int) pageFormat.getImageableY() + 30;
    Image logo = new ImageIcon(getClass().getResource("/at/corgler/images/Print_Header_Plain.jpg")).getImage();
    g.drawImage(logo, imgPosX, imgPosY, 184, 117, null);
    // BILLDATE
    String dateText = "XX, " + new SimpleDateFormat("dd. MMMM yyyy").format(_billDate);
    int datePosY = imgPosY + 105;
    int datePosX = (int) pageFormat.getImageableWidth() - fMetric.stringWidth(dateText);
    g.setFont(fnormalText);
    g.drawString(dateText, datePosX, datePosY);
    // HEADLINE WITH NUMBER
    String headlineText = "Honorarnote";
    String numberText = "Nr. " + _payNumber + "/" + new SimpleDateFormat("yy").format(new Date());
    fMetric = _parent.getFontMetrics(fHeadlineText);
    int headlineWidth = fMetric.stringWidth(headlineText);
    fMetric = _parent.getFontMetrics(fHeadlineNumber);
    int numberWidth = fMetric.stringWidth(numberText);
    int headlinePosY = datePosY + 65;
    int headlineTextPosX = (int) ((pageFormat.getImageableWidth() / 2) - ((headlineWidth + numberWidth) / 2));
    int headlineNumberPosX = headlineTextPosX + headlineWidth + 3;
    g.setFont(fHeadlineText);
    g.drawString(headlineText, headlineTextPosX, headlinePosY);
    g.setFont(fHeadlineNumber);
    g.drawString(numberText, headlineNumberPosX, headlinePosY);
    g.drawLine(headlineTextPosX - 1, headlinePosY + 2, headlineTextPosX + headlineWidth, headlinePosY + 2);
    g.setStroke(new BasicStroke(0.5f));
    g.dispose();
