Large gap: ABCDE\c[char,4]\f[strike,1]12345 Small gap: ABCDE\c[char,4] \f[strike,1]12345 No gap: ABCDE\c[char,4]12345 Large gaps, very broken as it repeatedly crosses the word wrap point: \0\f[name,MS Gothic]We should get pizza for dinner\![quicksection,1]\_w[2000]\c[char,16]\f[strike,1]p\f[strike,0]izza for dinner\_w[100]\c[char,16]\f[strike,1]pi\f[strike,0]zza for dinner\_w[100]\c[char,16]\f[strike,1]piz\f[strike,0]za for dinner\_w[100]\c[char,16]\f[strike,1]pizz\f[strike,0]a for dinner\_w[100]\c[char,16]\f[strike,1]pizza\f[strike,0] for dinner\_w[100]\c[char,16]\f[strike,1]pizza \f[strike,0]for dinner\_w[100]\c[char,16]\f[strike,1]pizza f\f[strike,0]or dinner\_w[100]\c[char,16]\f[strike,1]pizza fo\f[strike,0]r dinner\_w[100]\c[char,16]\f[strike,1]pizza for\f[strike,0] dinner\_w[100]\c[char,16]\f[strike,1]pizza for \f[strike,0]dinner\_w[100]\c[char,16]\f[strike,1]pizza for d\f[strike,0]inner\_w[100]\c[char,16]\f[strike,1]pizza for di\f[strike,0]nner\_w[100]\c[char,16]\f[strike,1]pizza for din\f[strike,0]ner\_w[100]\c[char,16]\f[strike,1]pizza for dinn\f[strike,0]er\_w[100]\c[char,16]\f[strike,1]pizza for dinne\f[strike,0]r\_w[100]\c[char,16]\f[strike,1]pizza for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0] hotdogs for dinner\![quicksection,1]\_w[2000]\c[char,18]\f[strike,1]h\f[strike,0]otdogs for dinner\_w[100]\c[char,18]\f[strike,1]ho\f[strike,0]tdogs for dinner\_w[100]\c[char,18]\f[strike,1]hot\f[strike,0]dogs for dinner\_w[100]\c[char,18]\f[strike,1]hotd\f[strike,0]ogs for dinner\_w[100]\c[char,18]\f[strike,1]hotdo\f[strike,0]gs for dinner\_w[100]\c[char,18]\f[strike,1]hotdog\f[strike,0]s for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs\f[strike,0] for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs \f[strike,0]for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs f\f[strike,0]or dinner\_w[100]\c[char,18]\f[strike,1]hotdogs fo\f[strike,0]r dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for\f[strike,0] dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for \f[strike,0]dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for d\f[strike,0]inner\_w[100]\c[char,18]\f[strike,1]hotdogs for di\f[strike,0]nner\_w[100]\c[char,18]\f[strike,1]hotdogs for din\f[strike,0]ner\_w[100]\c[char,18]\f[strike,1]hotdogs for dinn\f[strike,0]er\_w[100]\c[char,18]\f[strike,1]hotdogs for dinne\f[strike,0]r\_w[100]\c[char,18]\f[strike,1]hotdogs for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0] chicken for dinner.\![quicksection,1]\_w[2000]\c[char,19]\f[underline,1]c\f[underline,0]hicken for dinner.\_w[100]\c[char,19]\f[underline,1]ch\f[underline,0]icken for dinner.\_w[100]\c[char,19]\f[underline,1]chi\f[underline,0]cken for dinner.\_w[100]\c[char,19]\f[underline,1]chic\f[underline,0]ken for dinner.\_w[100]\c[char,19]\f[underline,1]chick\f[underline,0]en for dinner.\_w[100]\c[char,19]\f[underline,1]chicke\f[underline,0]n for dinner.\_w[100]\c[char,19]\f[underline,1]chicken\f[underline,0] for dinner.\_w[100]\c[char,19]\f[underline,1]chicken \f[underline,0]for dinner.\_w[100]\c[char,19]\f[underline,1]chicken f\f[underline,0]or dinner.\_w[100]\c[char,19]\f[underline,1]chicken fo\f[underline,0]r dinner.\_w[100]\c[char,19]\f[underline,1]chicken for\f[underline,0] dinner.\_w[100]\c[char,19]\f[underline,1]chicken for \f[underline,0]dinner.\_w[100]\c[char,19]\f[underline,1]chicken for d\f[underline,0]inner.\_w[100]\c[char,19]\f[underline,1]chicken for di\f[underline,0]nner.\_w[100]\c[char,19]\f[underline,1]chicken for din\f[underline,0]ner.\_w[100]\c[char,19]\f[underline,1]chicken for dinn\f[underline,0]er.\_w[100]\c[char,19]\f[underline,1]chicken for dinne\f[underline,0]r.\_w[100]\c[char,19]\f[underline,1]chicken for dinner\f[underline,0].\_w[100]\c[char,19]\f[underline,1]chicken for dinner.\f[underline,0]\_w[100]\_w[500]\![quicksection,0] Small gap, again gets very broken as it crosses the word wrap point: \0\f[name,MS Gothic]We should get pizza for dinner\![quicksection,1]\_w[2000]\c[char,16] \f[strike,1]p\f[strike,0]izza for dinner\_w[100]\c[char,16]\f[strike,1]pi\f[strike,0]zza for dinner\_w[100]\c[char,16]\f[strike,1]piz\f[strike,0]za for dinner\_w[100]\c[char,16]\f[strike,1]pizz\f[strike,0]a for dinner\_w[100]\c[char,16]\f[strike,1]pizza\f[strike,0] for dinner\_w[100]\c[char,16]\f[strike,1]pizza \f[strike,0]for dinner\_w[100]\c[char,16]\f[strike,1]pizza f\f[strike,0]or dinner\_w[100]\c[char,16]\f[strike,1]pizza fo\f[strike,0]r dinner\_w[100]\c[char,16]\f[strike,1]pizza for\f[strike,0] dinner\_w[100]\c[char,16]\f[strike,1]pizza for \f[strike,0]dinner\_w[100]\c[char,16]\f[strike,1]pizza for d\f[strike,0]inner\_w[100]\c[char,16]\f[strike,1]pizza for di\f[strike,0]nner\_w[100]\c[char,16]\f[strike,1]pizza for din\f[strike,0]ner\_w[100]\c[char,16]\f[strike,1]pizza for dinn\f[strike,0]er\_w[100]\c[char,16]\f[strike,1]pizza for dinne\f[strike,0]r\_w[100]\c[char,16]\f[strike,1]pizza for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0] hotdogs for dinner\![quicksection,1]\_w[2000]\c[char,18] \f[strike,1]h\f[strike,0]otdogs for dinner\_w[100]\c[char,18]\f[strike,1]ho\f[strike,0]tdogs for dinner\_w[100]\c[char,18]\f[strike,1]hot\f[strike,0]dogs for dinner\_w[100]\c[char,18]\f[strike,1]hotd\f[strike,0]ogs for dinner\_w[100]\c[char,18]\f[strike,1]hotdo\f[strike,0]gs for dinner\_w[100]\c[char,18]\f[strike,1]hotdog\f[strike,0]s for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs\f[strike,0] for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs \f[strike,0]for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs f\f[strike,0]or dinner\_w[100]\c[char,18]\f[strike,1]hotdogs fo\f[strike,0]r dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for\f[strike,0] dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for \f[strike,0]dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for d\f[strike,0]inner\_w[100]\c[char,18]\f[strike,1]hotdogs for di\f[strike,0]nner\_w[100]\c[char,18]\f[strike,1]hotdogs for din\f[strike,0]ner\_w[100]\c[char,18]\f[strike,1]hotdogs for dinn\f[strike,0]er\_w[100]\c[char,18]\f[strike,1]hotdogs for dinne\f[strike,0]r\_w[100]\c[char,18]\f[strike,1]hotdogs for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0] chicken for dinner.\![quicksection,1]\_w[2000]\c[char,19] \f[underline,1]c\f[underline,0]hicken for dinner.\_w[100]\c[char,19]\f[underline,1]ch\f[underline,0]icken for dinner.\_w[100]\c[char,19]\f[underline,1]chi\f[underline,0]cken for dinner.\_w[100]\c[char,19]\f[underline,1]chic\f[underline,0]ken for dinner.\_w[100]\c[char,19]\f[underline,1]chick\f[underline,0]en for dinner.\_w[100]\c[char,19]\f[underline,1]chicke\f[underline,0]n for dinner.\_w[100]\c[char,19]\f[underline,1]chicken\f[underline,0] for dinner.\_w[100]\c[char,19]\f[underline,1]chicken \f[underline,0]for dinner.\_w[100]\c[char,19]\f[underline,1]chicken f\f[underline,0]or dinner.\_w[100]\c[char,19]\f[underline,1]chicken fo\f[underline,0]r dinner.\_w[100]\c[char,19]\f[underline,1]chicken for\f[underline,0] dinner.\_w[100]\c[char,19]\f[underline,1]chicken for \f[underline,0]dinner.\_w[100]\c[char,19]\f[underline,1]chicken for d\f[underline,0]inner.\_w[100]\c[char,19]\f[underline,1]chicken for di\f[underline,0]nner.\_w[100]\c[char,19]\f[underline,1]chicken for din\f[underline,0]ner.\_w[100]\c[char,19]\f[underline,1]chicken for dinn\f[underline,0]er.\_w[100]\c[char,19]\f[underline,1]chicken for dinne\f[underline,0]r.\_w[100]\c[char,19]\f[underline,1]chicken for dinner\f[underline,0].\_w[100]\c[char,19]\f[underline,1]chicken for dinner.\f[underline,0]\_w[100]\_w[500]\![quicksection,0] Aosora code that makes the above (note the commented section which can be uncommented to get the second result): talk OnTest { \f[name,MS Gothic]We should get {style("strike","pizza for dinner")} {style("strike","hotdogs for dinner")} {style("underline","chicken for dinner.")} } function style(type, word, wait, strokewait, newwait) { if (type.IsNull()) return; if (word.IsNull()) return; local pause = "\_w[2000]"; if (!wait.IsNull()) pause = "\_w[{wait}]"; local strokepause = "\_w[100]"; if (!strokewait.IsNull()) strokepause = "\_w[{strokewait}]"; local newpause = "\_w[500]"; if (!newwait.IsNull()) newpause = "\_w[{newwait}]"; local len = word.length; local erase = "\c[char,{len}]"; local output = ""; output += word; output += "\![quicksection,1]"; output += pause; for (local i = 0; i < len; i++) { output += erase; //if (i == 0) output += " "; //Uncomment to get the small gaps version output += "\f[{type},1]"; output += word.Substring(0,i + 1); output += "\f[{type},0]"; output += word.Substring(i + 1); output += strokepause; } output += newpause; output += "\![quicksection,0]"; return output; } Alternate version of the tester script with \n tags, which get erased when they shouldn't: talk OnTest { \f[name,MS Gothic]We should get {style("strike","pizza for dinner")}\n{style("strike","hotdogs for dinner")}\n{style("underline","chicken for dinner.")} } Which produces this: \0\f[name,MS Gothic]We should get pizza for dinner\![quicksection,1]\_w[2000]\c[char,16] \f[strike,1]p\f[strike,0]izza for dinner\_w[100]\c[char,16]\f[strike,1]pi\f[strike,0]zza for dinner\_w[100]\c[char,16]\f[strike,1]piz\f[strike,0]za for dinner\_w[100]\c[char,16]\f[strike,1]pizz\f[strike,0]a for dinner\_w[100]\c[char,16]\f[strike,1]pizza\f[strike,0] for dinner\_w[100]\c[char,16]\f[strike,1]pizza \f[strike,0]for dinner\_w[100]\c[char,16]\f[strike,1]pizza f\f[strike,0]or dinner\_w[100]\c[char,16]\f[strike,1]pizza fo\f[strike,0]r dinner\_w[100]\c[char,16]\f[strike,1]pizza for\f[strike,0] dinner\_w[100]\c[char,16]\f[strike,1]pizza for \f[strike,0]dinner\_w[100]\c[char,16]\f[strike,1]pizza for d\f[strike,0]inner\_w[100]\c[char,16]\f[strike,1]pizza for di\f[strike,0]nner\_w[100]\c[char,16]\f[strike,1]pizza for din\f[strike,0]ner\_w[100]\c[char,16]\f[strike,1]pizza for dinn\f[strike,0]er\_w[100]\c[char,16]\f[strike,1]pizza for dinne\f[strike,0]r\_w[100]\c[char,16]\f[strike,1]pizza for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0] hotdogs for dinner\![quicksection,1]\_w[2000]\c[char,18] \f[strike,1]h\f[strike,0]otdogs for dinner\_w[100]\c[char,18]\f[strike,1]ho\f[strike,0]tdogs for dinner\_w[100]\c[char,18]\f[strike,1]hot\f[strike,0]dogs for dinner\_w[100]\c[char,18]\f[strike,1]hotd\f[strike,0]ogs for dinner\_w[100]\c[char,18]\f[strike,1]hotdo\f[strike,0]gs for dinner\_w[100]\c[char,18]\f[strike,1]hotdog\f[strike,0]s for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs\f[strike,0] for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs \f[strike,0]for dinner\_w[100]\c[char,18]\f[strike,1]hotdogs f\f[strike,0]or dinner\_w[100]\c[char,18]\f[strike,1]hotdogs fo\f[strike,0]r dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for\f[strike,0] dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for \f[strike,0]dinner\_w[100]\c[char,18]\f[strike,1]hotdogs for d\f[strike,0]inner\_w[100]\c[char,18]\f[strike,1]hotdogs for di\f[strike,0]nner\_w[100]\c[char,18]\f[strike,1]hotdogs for din\f[strike,0]ner\_w[100]\c[char,18]\f[strike,1]hotdogs for dinn\f[strike,0]er\_w[100]\c[char,18]\f[strike,1]hotdogs for dinne\f[strike,0]r\_w[100]\c[char,18]\f[strike,1]hotdogs for dinner\f[strike,0]\_w[100]\_w[500]\![quicksection,0]\nchicken for dinner.\![quicksection,1]\_w[2000]\c[char,19] \f[underline,1]c\f[underline,0]hicken for dinner.\_w[100]\c[char,19]\f[underline,1]ch\f[underline,0]icken for dinner.\_w[100]\c[char,19]\f[underline,1]chi\f[underline,0]cken for dinner.\_w[100]\c[char,19]\f[underline,1]chic\f[underline,0]ken for dinner.\_w[100]\c[char,19]\f[underline,1]chick\f[underline,0]en for dinner.\_w[100]\c[char,19]\f[underline,1]chicke\f[underline,0]n for dinner.\_w[100]\c[char,19]\f[underline,1]chicken\f[underline,0] for dinner.\_w[100]\c[char,19]\f[underline,1]chicken \f[underline,0]for dinner.\_w[100]\c[char,19]\f[underline,1]chicken f\f[underline,0]or dinner.\_w[100]\c[char,19]\f[underline,1]chicken fo\f[underline,0]r dinner.\_w[100]\c[char,19]\f[underline,1]chicken for\f[underline,0] dinner.\_w[100]\c[char,19]\f[underline,1]chicken for \f[underline,0]dinner.\_w[100]\c[char,19]\f[underline,1]chicken for d\f[underline,0]inner.\_w[100]\c[char,19]\f[underline,1]chicken for di\f[underline,0]nner.\_w[100]\c[char,19]\f[underline,1]chicken for din\f[underline,0]ner.\_w[100]\c[char,19]\f[underline,1]chicken for dinn\f[underline,0]er.\_w[100]\c[char,19]\f[underline,1]chicken for dinne\f[underline,0]r.\_w[100]\c[char,19]\f[underline,1]chicken for dinner\f[underline,0].\_w[100]\c[char,19]\f[underline,1]chicken for dinner.\f[underline,0]\_w[100]\_w[500]\![quicksection,0]