Проблема, как я полагаю, в том, что Paratext XML специфицирует, а что нет. Он специфицирует фрагмент текста, gloss-id (перекрестные ссылки на файл Lexicon.xml) и позицию исходного текста в некотором представлении потока ввода. Он не сохраняет порядок появления. Стихи также не идут последовательно.
Данное слово или фраза может быть глоссирована как слово(а) или корень и морфемы, (конечно, с разными глоссами), и единственный способ определить, какой омограф есть какой или какой уровень глоссирования ожидает пользователь, – это через данные о позиционировании. Файл глоссирования, похоже, игнорирует регистр, пунктуацию и метки SFM, и, вероятно, другие вещи тоже.
Таким образом, если файл глоссирования соответствует вводу, то, предполагая, что Мартин понял задокументированный способ, которым Paratext подсчитывает символы в его внутреннем представлении файла, правильным действием будет вырезать единицу слова/фразы по позиции и заменить ее глоссой, возможно, выполнив некоторую транспозицию регистра, где это уместно.
Если стих изменился, то это не работает. Если внутреннее представление файла неверно, то это не работает.
Любой неограниченный поиск и замена будет давать ложные совпадения на омографах, поэтому его нельзя использовать как общий подход. Можно было бы сделать некоторые догадки, ища приблизительные совпадения плюс-минус несколько символов, разбивая на границах слов, например. Это стоило бы довольно больших затрат времени программиста, но могли бы быть проблемы. Если пробелы изменились, потому что кто-то переставил слова в стихе, омограф со сдвигом на 3 символа может быть не тем же словом. Например, в романи довольно свободный порядок слов:
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"
PTXprint не может входить в лингвистические правила языка. Даже Paratext не помнит / не спрашивает, какие части речи у вещей. Единственный надежный способ получить достоверные межстрочные данные – это когда пользователь одобряет глоссы.