2017-02-22 17 views
1

段落をレンダリングしていますが、語の折り返しのためにLineBreakMeasurerTextLayoutクラスを使用しています。 これは私がオンラインに容易に入手可能である、使用してい抜粋されています。しかし、私はフォントを変更しようとしていたときに、問題をJavaで図面の段落中にフォントを変更する

void drawParagraph(Graphics2D g, String paragraph, float width) { 
    LineBreakMeasurer linebreaker = new LineBreakMeasurer(new AttributedString(paragraph) 
     .getIterator(), g.getFontRenderContext()); 

    int y = 0; 
    while (linebreaker.getPosition() < paragraph.length()) { 
     TextLayout textLayout = linebreaker.nextLayout(width); 

     y += textLayout.getAscent(); 
     textLayout.draw(g, 0, y); 
     y += textLayout.getDescent() + textLayout.getLeading(); 
    } 
    } 

直面しています。 私はg.setFont(new Font(...))を呼び出してフォントを変更していますが、段落はそのフォントでレンダリングされていません。ただし、g.drawString()を使用しようとすると、期待どおりに動作しています。

この問題で私を助けてください。事前に感謝します。

答えて

0

AttributedStringでフォントを設定します。例えば:

AttributedString text = new AttributedString(paragraph); 

Font emphasis = new Font(Font.SERIF, Font.BOLD, 12); 
int emphasisStart = 30; 
int emphasisEnd = 42; 
text.addAttribute(TextAttribute.FONT, emphasis, emphasisStart, emphasisEnd); 

LineBreakMeasurer linebreaker = 
    new LineBreakMeasurer(text.getIterator(), g.getFontRenderContext()); 
関連する問題