У меня возникли проблемы с тем, чтобы некоторые согласные, сложенные в стопку, отображались правильно в выводе — они прекрасно отображаются в редакторе Texworks, MS Word может их отображать, как и любой другой движок, способный выбрать шрифт, который я нашел. Как вы можете видеть на изображении ниже, проблема не повсеместна. Слева два символа ဂ, которые должны отображаться как ဂ္ဂ, вместо этого размещены рядом друг с другом, однако два символа တ размещены правильно. Есть еще два примера неправильного отображения, а затем я также включил правильный пример, чтобы продемонстрировать, что TeX действительно иногда может правильно отображать согласные, сложенные в стопку.
Я перепробовал множество разных шрифтов, но это не решило проблему. Я бы сказал, что это может быть движок рендеринга (XeLaTeX), хотя мне это тоже кажется маловероятным, поскольку существуют противоречивые случаи, когда один и тот же набор символов отображается правильно в одном случае и неправильно в другом, несмотря на то, что находится в одном документе. Я также пробовал копировать и вставлять рабочие символы в проблемные области, но безуспешно.
Удаление строки XeTeXlinebreaklocale из кода исправляет проблему стекирования, но заставляет каждую строку выходить на поля и, к сожалению, не является приемлемым решением для того, что будет опубликованной книгой. Я продолжу экспериментировать с этим и посмотрю, не смогу ли я придумать что-то связанное с этой строкой кода.
И наконец, немного кода для справки:
\documentclass{book}
%packages
\usepackage{fontspec} %To use non-standard fonts
%style
\XeTeXlinebreaklocale "my" %Myanmar line and character breaks
\XeTeXlinebreakskip = 0pt plus 2.5pt minus 1pt %2.5pt because at 2 and below still goes past margins.
\setmainfont[Script=Myanmar]{Padauk Book}
\begin{document}
Filler text အဂ္ဂပေမေတ္တာ ဗတ္တိဇံ သင်္ဂြုဟ် အတ္ထုပ္ပတ္တိ
\end{document}
Обновление: следуя другой идее, которая сработала для кхмерских лигатур, я добавил \XeTeXinterwordspaceshaping=2
, хотя затем он сообщает мне "Процесс аварийно завершился". Тестируя с помощью приведенного ниже примера для упрощенного рабочего пространства, я обнаружил, что удаление любой из трех команд XeTeX позволит движку скомпилироваться. Однако все три необходимы для того, чтобы лигатуры отображались правильно, а текст помещался в поля. С другой стороны, приведенный ниже пример показывает, что это не конфликт с другим пакетом, а скорее проблема во взаимодействии между этими командами.
\documentclass{article}
\usepackage{fontspec} %To use non-standard fonts
\XeTeXlinebreaklocale "my" %Myanmar line and character breaks
\XeTeXlinebreakskip = 0pt plus 2pt minus 1pt %2.5pt because at 2 and below still goes past margins.
\XeTeXinterwordspaceshaping=2
\setmainfont[Script=Myanmar]{Padauk Book}
\begin{document}
တစ်နှစ်သုံးဟဲလိုကမ္ဘာကြီး
အပြစ်ဖြေခြင်းသည် ဒေသနာတစ်ခုဖြစ်ပါသည်သို့သော် အပြစ်ဖြေခြင်းပုံစံသည် ပုံသေနည်းတစ်ခုတည်းမဟုတ်ပါ။
ပုစ္ဆာတစ်ပုဒ်ကိုဖြေရှင်းသည်ထက် ထိုအပြစ်ဖြေခြင်းကို ပို၍ခံစားရမည်၊ စိစစ်မှုမဟုတ်၊ နှလုံးသွင်းရပါမည်။
ယေရှူခရစ်တော်၏အပြစ်ဖြေခြင်းသည် လောကနှင့် စကြဝဠာများ၏သိမ်မွေ့နူးညံ့ခြင်း၊ မျက်စိပွင့်စေခြင်း၊ အဂ္ဂပေမေတ္တာ ဒေသနာတစ်ခုဖြစ်သောကြောင့် ထိုဒေသနာကိုရှာဖွေရန် မိမိ၏လုပ်နိုင်စွမ်း အကုန်ပါရမည်။
\end{document}
Ошибка, выдаваемая этим тестовым документом, выглядит следующим образом: ("C:\Users--\AppData\Local\Programs\MiKTeX 2.9\tex/latex/fontspec\fontspec-xetex.sty"
("C:\Users--\AppData\Local\Programs\MiKTeX 2.9\tex/latex/base\fontenc.sty"
("C:\Users--\AppData\Local\Programs\MiKTeX 2.9\tex/latex/base\tuenc.def"))
("C:\Users--\AppData\Local\Programs\MiKTeX 2.9\tex/latex/fontspec\fontspec. cfg"))) (test.aux)
Похоже, это сводится к проблеме взаимодействия с fontspec, независимо от того, какой шрифт я использую.