1 回答
TA贡献2016条经验 获得超9个赞
我对这个问题的理解:目标是为段落的每一行添加随机边距,以便在使用类似手写的字体时,它看起来仍然像手动编写的文本。也应该使用连字符,因此是尝试将文本分成段落的原始方法。
不过,解决方案可以更简单。我们可以将即将绘制的段落的线条在绘制之前稍微移动一下。将保留包括连字符在内的所有功能。
可以通过以下方式使用自定义渲染器完成:
private static class CustomParagraphRenderer extends ParagraphRenderer {
public CustomParagraphRenderer(Paragraph modelElement) {
super(modelElement);
}
@Override
public void drawChildren(DrawContext drawContext) {
Random r = new Random();
if (lines != null) {
for (LineRenderer line : lines) {
int leftMargin = r.nextInt(10);
line.move(leftMargin, 0);
line.draw(drawContext);
}
}
}
@Override
public IRenderer getNextRenderer() {
return new CustomParagraphRenderer((Paragraph) modelElement);
}
}
将其应用于段落很容易:
Paragraph paragraph = new Paragraph(longStr);
paragraph.setHyphenation(new HyphenationConfig("en", "US", 2, 2));
paragraph.setNextRenderer(new CustomParagraphRenderer(paragraph));
我得到的结果是这样的:
添加回答
举报