{
// create an trailing margin element. This way, it can collapse with
// the next element.
if (forceLinebreak)
{
final RenderableText text = new RenderableText
(TextUtility.createBaselineInfo('\n', fontMetrics), new Glyph[0], 0,
0, lastLanguage, forceLinebreak);
text.appyStyle(layoutContext, layoutProcess.getOutputMetaData());
words.add(text);
}
else if (produced == true)
{
final SpacerRenderNode spacer = new SpacerRenderNode(leadingMargin, 0, false);
spacer.appyStyle(layoutContext, layoutProcess.getOutputMetaData());
words.add(spacer);
}
}
else
{
// ok, it does.
final Glyph[] glyphs = (Glyph[]) glyphList.toArray(new Glyph[glyphList.size()]);
if (leadingMargin > 0)// && words.isEmpty() == false)
{
final SpacerRenderNode spacer = new SpacerRenderNode(leadingMargin, 0, false);
spacer.appyStyle(layoutContext, layoutProcess.getOutputMetaData());
words.add(spacer);
}
// todo: this is cheating ..
final int codePoint = glyphs[0].getCodepoint();
final RenderableText text = new RenderableText
(TextUtility.createBaselineInfo(codePoint, fontMetrics), glyphs, 0,
glyphs.length, lastLanguage, forceLinebreak);
text.appyStyle(layoutContext, layoutProcess.getOutputMetaData());
words.add(text);
glyphList.clear();
}
leadingMargin = 0;
}