gpt4 book ai didi

java - 在Java中绘制段落时更改字体

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:31 26 4
gpt4 key购买 nike

我正在渲染一个段落,为了自动换行,我使用了 LineBreakMeasurerTextLayout 类。这是我正在使用的代码片段,可以轻松在线获取:

 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() 时,它按预期工作。

请帮我解决这个问题。提前谢谢您。

最佳答案

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

关于java - 在Java中绘制段落时更改字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com