code: def _drawBullet(canvas, offset, cur_y, bulletText, style):
      
  
      tx2 = canvas.beginText(style.bulletIndent, cur_y + getattr(style, "bulletOffsetY", 0))
      tx2.setFont(style.bulletFontName, style.bulletFontSize)
      tx2.setFillColor(hasattr(style, 'bulletColor') and style.bulletColor or style.textColor)
      if isinstance(bulletText, basestring):
          tx2.textOut(bulletText)
      else:
          for f in bulletText:
              if hasattr(f, "image"):
                  image = f.image
                  width = image.drawWidth
                  height = image.drawHeight
                  gap = style.bulletFontSize * 0.25
                  img = image.getImage()
                  # print style.bulletIndent, offset, width
                  canvas.drawImage(
                      img,
                      style.leftIndent - width - gap,
                      cur_y + getattr(style, "bulletOffsetY", 0),
                      width,
                      height)
              else:
                  tx2.setFont(f.fontName, f.fontSize)
                  tx2.setFillColor(f.textColor)
                  tx2.textOut(f.text)
      canvas.drawText(tx2)
      #AR making definition lists a bit less ugly
      #bulletEnd = tx2.getX()
      bulletEnd = tx2.getX() + style.bulletFontSize * 0.6
      offset = max(offset, bulletEnd - style.leftIndent)
      return offset
docs: draw a bullet text could be a simple string or a frag list