O problema, acredito, é o que o XML do Paratext especifica e o que ele não especifica. Ele especifica um trecho de texto, gloss-id (referenciando o arquivo Lexicon.xml) e a posição do texto original em alguma representação do fluxo de entrada. Ele não preserva a ordem de ocorrência. Os versículos também não estão em sequência.
Uma palavra ou frase específica pode ser glosada como palavra(s) ou raiz e morfemas, (é claro, com glosas diferentes) e a única maneira de saber qual homógrafo é qual ou qual nível de glosa o usuário espera é via dados de posicionamento. O arquivo de glosas parece ignorar maiúsculas/minúsculas, pontuação e marcas SFM, e provavelmente outras coisas também.
Assim, se o arquivo de glosas corresponder à entrada, então, assumindo que Martin tenha entendido a maneira não documentada pela qual o Paratext conta caracteres em sua representação interna do arquivo, a coisa certa a fazer é cortar a unidade de palavra/frase pela posição e substituir pela glosa, possivelmente fazendo alguma transposição de maiúsculas/minúsculas conforme apropriado.
Se o versículo mudou, então isso não funciona. Se a representação interna do arquivo estiver errada, então não funciona.
Qualquer busca e substituição sem restrições vai obter correspondências falsas em homógrafos, então isso não pode ser usado como uma abordagem geral. Poderia ser feita alguma suposição, procurando correspondências aproximadas mais ou menos alguns caracteres, quebrando em espaços entre palavras, por exemplo. Isso custaria um investimento bastante grande de tempo de programador, mas poderiam haver problemas. Se o espaçamento mudou porque alguém reordenou as palavras no versículo, o homógrafo deslocado em 3 caracteres pode não ser a mesma palavra. Por exemplo, o romani tem uma ordem de palavras bastante livre:
O Del te del tut haro
(the) God SUBJ give you grace
"May God give you grace"
vs
Te del o Del tut haro
SUBJ give (the) God you grace
"May God give you grace"
O PTXprint não pode entrar nas regras linguísticas da língua. Nem mesmo o Paratext lembra / pergunta quais são as classes gramaticais das coisas. A única maneira confiável de obter dados interlineares confiáveis é o usuário aprovar as glosas.