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