<div dir="ltr"><div class="gmail_default" style="font-size:large">Thank you for the hint about ucharclasses! That saves my writing the \XeTeXinterchartoks lines myself and does (rather mysteriously?) seem to avoid the segfault in conjunction with \XeTeXinterwordspaceshaping=2. The \XeTeXlinebreaklocale "my" still looks wrong--it breaks a ligature (i.e. a conjunct consonant) apart at a line break--but this is much closer to what my colleague needs. Thanks again. Hoping someone may be able to add more about the Burmese-specific aspect of all this. All best,<br></div><div class="gmail_default" style="font-size:large">Andrew<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 6, 2023 at 12:33 PM Shree Devi Kumar <<a href="mailto:shreeshrii@gmail.com">shreeshrii@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">You can try <a href="https://github.com/Pomax/ucharclasses" target="_blank">https://github.com/Pomax/ucharclasses</a><div dir="auto"><br></div><div dir="auto">I have used it in past with Devanagari, Tamil, Gujarati scripts and English.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 6, 2023, 11:23 AM Andrew Goldstone <<a href="mailto:andrew.goldstone@gmail.com" target="_blank">andrew.goldstone@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-size:large">Hello: I am attempting to assist a colleague, who is new to TeX, in typesetting a text which includes many passages in which Burmese and Latin scripts are closely intermixed. I wanted to make it possible for my colleague to enter his text fairly naturally, as he is used to doing in Word, by simply mixing the scripts, rather having to type a macro to switch languages/fonts at nearly every word. On tex.stackexchange I found a suggestion to use XeTeX's interchar mechanism for this purpose and adapted the code example to my own purposes.<br><br>Though this works fine on its own, it leads to problems, and sometimes crashes, in conjunction with two other desirable XeTeX features, namely its linebreak-locale and interword space-shaping mechanisms. The example below my signature demonstrates the following three-way interaction:<br><br>(A) XeTeXlinebreaklocale="my"<br>(B) XeTeXinterwordspaceshaping=2<br>(C) XeTeXinterchartokenstate=1 (and accompanying char. class definitions)<br><br>A       some ligatures render incorrectly, e.g. lla လ္ +လ<br>B       ok, but must use explicit \selectlanguage{burmese}<br>C       ok, but Burmese lines only broken on spaces (unidiomatic)<br>A+B     ok, but must use explicit \selectlanguage{burmese}<br>A+C     ligature renders incorrectly<br>B+C     segfault if more than one switch to Burmese<br>A+B+C   segfault if more than one switch to Burmese<br><br>My system is macOS 13.5 on Apple M1 Pro, XeTeX 3.141592653-2.6-0.999995 (TeX Live 2023).<br><br>I can certainly help my colleague work around the crashing bug by postprocessing his source with a script to insert \selectlanguage{} next to the appropriate Unicode range, but the crash is frustrating. I believe this is the same issue as was raised on StackExchange in 2019<br><br><a href="https://tex.stackexchange.com/questions/503498/trouble-with-stacked-consonants-burmese-script" rel="noreferrer" target="_blank">https://tex.stackexchange.com/questions/503498/trouble-with-stacked-consonants-burmese-script</a><br><br>but I couldn't find any further discussion of a fix for the crash.<br><br>Many thanks for any help: perhaps I've come at this all wrong. My own XeTeX experience has almost all been in the Latin alphabet. Best,<br>Andrew Goldstone<br><br>PS my example script--forgive the verbosity. The two Burmese words are just taken at random from my colleague's sample text, with the first repeated to fill out a line.<br><br>\documentclass[draft,12pt]{article}<br>\usepackage[english]{babel}<br>\babelprovide[import]{burmese}<br>\babelfont[burmese]{rm}{Noto Serif Myanmar Regular}<br><br>\XeTeXlinebreaklocale "my"     % (A)<br>\XeTeXinterwordspaceshaping=2  % (B)<br><br>% (C)...<br><br>\newXeTeXintercharclass\burmesesub<br>\newcount\myCount<br>\myCount="1000<br>\loop\ifnum\myCount<"109F<br>  \XeTeXcharclass\myCount=\burmesesub<br>  \advance\myCount by 1<br>\repeat<br><br>\XeTeXinterchartoks 0 \burmesesub = {\begingroup\selectlanguage{burmese}}<br>\XeTeXinterchartoks 4095 \burmesesub = {\begingroup\selectlanguage{burmese}}<br>\XeTeXinterchartoks \burmesesub 0 = {\endgroup}<br>\XeTeXinterchartoks \burmesesub 4095 = {\endgroup}<br><br>\XeTeXinterchartokenstate=1<br><br>% ...(C)<br><br>\begin{document}<br><br><br>ထက်လုလ္လ <br>thak·lulla <br>ထက်လုလ္လ <br>thak·lulla <br>ထက်လုလ္လ <br>thak·lulla <br>ထက်လုလ္လ <br>thak·lulla <br><br>သည် ၊ saññ·|<br><br>\end{document}<br><br><br><br><br></div></div>
</blockquote></div>
</blockquote></div>