c'è anche il problema che con il tuo codice, se ci sono due tag <HTML> nella rich, viene colorato solo il primo e non il secondo.

l'hint che ti do è questo:
codice:
basa il tuo algoritmo sulle posizioni che circondano il cursore in un dato momento, non sulla proprietà text nel suo insieme.
Studia il problema e separa un set di caratteri utile per abilitare o meno il colore.
Ogni volta che setti un colore per un dato carattere risetta il colore di default per il determinato carattere+1