code: public void characters(char[] ch, int start, int length) {
  
          if (ignore)
              return;
  
          String content = new String(ch, start, length);
          // System.err.println("'" + content + "'");
  
          if (content.trim().length() == 0 && content.indexOf(' ') < 0) {
              return;
          }
  
          StringBuffer buf = new StringBuffer();
          int len = content.length();
          char character;
          boolean newline = false;
          for (int i = 0; i < len; i++) {
              switch (character = content.charAt(i)) {
              case ' ':
                  if (!newline) {
                      buf.append(character);
                  }
                  break;
              case '\n':
                  if (i > 0) {
                      newline = true;
                      buf.append(' ');
                  }
                  break;
              case '\r':
                  break;
              case '\t':
                  break;
              default:
                  newline = false;
                  buf.append(character);
              }
          }
          if (currentChunk == null) {
          	if (bf == null) {
          		currentChunk = new Chunk(buf.toString());
          	}
          	else {
          		currentChunk = new Chunk(buf.toString(), new Font(this.bf));
          	}
          } else {
              currentChunk.append(buf.toString());
          }
      }
docs: This method gets called when characters are encountered.
  
  @param ch
  an array of characters
  @param start
  the start position in the array
  @param length
  the number of characters to read from the array