docs: def normalize(self, text):
          """Run the Normalizer on a string.
  
          :param text: The string to normalize.
          """
          # Normalize to canonical unicode (using NFKC by default)
          if self.form is not None:
              text = unicodedata.normalize(self.form, text)
  
          # Strip out any control characters (they occasionally creep in somehow)
          for control in CONTROLS:
              text = text.replace(control, '')
  
          # Normalize unusual whitespace not caught by unicodedata
          text = text.replace('\u000b', ' ').replace('\u000c', ' ').replace(u'\u0085', ' ')
          text = text.replace('\u2028', '\n').replace('\u2029', '\n').replace('\r\n', '\n').replace('\r', '\n')
  
          # Normalize all hyphens, minuses and dashes to ascii hyphen-minus and remove soft hyphen entirely
          if self.hyphens:
              # TODO: Better normalization of em/en dashes to '--' if surrounded by spaces or start/end?
              for hyphen in HYPHENS | MINUSES:
                  text = text.replace(hyphen, '-')
              text = text.replace('\u00ad', '')
  
          # Normalize all quotes and primes to ascii apostrophe and quotation mark
          if self.quotes:
              for double_quote in DOUBLE_QUOTES:
                  text = text.replace(double_quote, '"')  # \u0022
              for single_quote in (SINGLE_QUOTES | APOSTROPHES | ACCENTS):
                  text = text.replace(single_quote, "'")  # \u0027
              text = text.replace('′', "'")     # \u2032 prime
              text = text.replace('‵', "'")     # \u2035 reversed prime
              text = text.replace('″', "''")    # \u2033 double prime
              text = text.replace('‶', "''")    # \u2036 reversed double prime
              text = text.replace('‴', "'''")   # \u2034 triple prime
              text = text.replace('‷', "'''")   # \u2037 reversed triple prime
              text = text.replace('⁗', "''''")  # \u2057 quadruple prime
  
          if self.ellipsis:
              text = text.replace('…', '...').replace(' . . . ', ' ... ')  # \u2026
  
          if self.slashes:
              for slash in SLASHES:
                  text = text.replace(slash, '/')
  
          if self.tildes:
              for tilde in TILDES:
                  text = text.replace(tilde, '~')
  
          if self.strip:
              text = text.strip()
  
          # Collapse all whitespace down to a single space
          if self.collapse:
              text = ' '.join(text.split())
          return text