code: def combine_modifiers(self, graphemes):
          result = []
          temp = ""
          count = len(graphemes)
          for grapheme in reversed(graphemes):
              count -= 1
              if len(grapheme) == 1 and unicodedata.category(grapheme) == "Lm" \
                      and not ord(grapheme) in [712, 716]:
                  temp = grapheme + temp
                  if count == 0:
                      result[-1] = temp + result[-1]
                  continue
              if len(grapheme) == 1 and ord(grapheme) in [712, 716]:
                  result[-1] = grapheme + result[-1]
                  temp = ""
                  continue
              if len(grapheme) == 1 and unicodedata.category(grapheme) == "Sk":
                  if len(result) == 0:
                      result.append(grapheme)
                      temp = ""
                      continue
                  else:
                      if unicodedata.category(result[-1][0]) == "Sk":
                          result[-1] = grapheme + result[-1]
                          temp = ""
                          continue
              result.append(grapheme + temp)
              temp = ""
          segments = result[::-1]
          i = 0
          r = []
          while i < len(segments):
              if ord(segments[i][-1]) in [865, 860]:
                  r.append(segments[i] + segments[i + 1])
                  i += 2
              else:
                  r.append(segments[i])
                  i += 1
          return r