code: def render_ents(self, text, spans, title):
          
          markup = ""
          offset = 0
          for span in spans:
              label = span["label"]
              start = span["start"]
              end = span["end"]
              entity = escape_html(text[start:end])
              fragments = text[offset:start].split("\n")
              for i, fragment in enumerate(fragments):
                  markup += escape_html(fragment)
                  if len(fragments) > 1 and i != len(fragments) - 1:
                      markup += "</br>"
              if self.ents is None or label.upper() in self.ents:
                  color = self.colors.get(label.upper(), self.default_color)
                  ent_settings = {"label": label, "text": entity, "bg": color}
                  if self.direction == "rtl":
                      markup += TPL_ENT_RTL.format(**ent_settings)
                  else:
                      markup += TPL_ENT.format(**ent_settings)
              else:
                  markup += entity
              offset = end
          markup += escape_html(text[offset:])
          markup = TPL_ENTS.format(content=markup, dir=self.direction)
          if title:
              markup = TPL_TITLE.format(title=title) + markup
          return markup
docs: Render entities in text.
  
          text (unicode): Original text.
          spans (list): Individual entity spans and their start, end and label.
          title (unicode or None): Document title set in Doc.user_data['title'].