protected void drawText(final RenderableText renderableText, final long contentX2) { try { if (renderableText.getLength() == 0) { // This text is empty. return; } if (renderableText.isNodeVisible(getParagraphBounds(), isOverflowX(), isOverflowY()) == false) { return; } final String text; final GlyphList gs = renderableText.getGlyphs(); final int maxLength = renderableText.computeMaximumTextSize(contentX2); text = gs.getText(renderableText.getOffset(), maxLength, getCodePointBuffer()); if (text.length() > 0) { xmlWriter.writeText(characterEntityParser.encodeEntities(text)); if (text.trim().length() > 0) { result = true; } clearText(); } } catch (final IOException ioe) { throw new InvalidReportStateException("Failed to write text", ioe); } }