vce tá verificando, depois decrementando. vce já tem que verificar o anterior.
veja nesse exemplo
:teste
nesse caso, vamos supor que seu while está analisando o "t"
ele vai analisar o T, o T vai passar nos testes das condições, porque é uma letra e então o código ira decrementar o cursor. decrementando o cursor, o ":" será incluído na seleção
no próximo loop o while será finalizado porque aí sim ele irá analizar o ":"
por isso que você tem que analisar o startCursor-1 na condição do while e não somente startCursor
tente assim:
while (startCursor-1 >= 0 && txt.charAt(startCursor-1) != ' ' && txt.charAt(startCursor-1) != '\n' && !txt.charAt(startCursor-1).isPoint()) { startCursor--; }
eu não sei se essas operação "-1" são aceitas dentro do while
se não forem, vce vai ter que criar uma variável auxiliar pra fazer isso.
teste aí.