LuaLaTeX
我正在做一个需要(TeX Live) 和字体的项目Noto Serif Myanmar
。我需要几句话缅甸语仅。MWE 可以很好地与 配合使用XeLaTeX
。但LuaLaTeX
连字有问题。有没有办法让它LuaLaTeX
与使用的Noto Serif Myanmar
字体配合使用(除了将它们设置为XeLaTeX
并将它们作为图形包含,例如https://ctan.org/pkg/standalone)?
\documentclass[landscape]{memoir}
\usepackage{fontspec,polyglossia,url}
\newfontfamily{\burmeseFamily}{NotoSerifMyanmar-Regular.ttf}
\newfontfamily{\burmeseFamilyDecom}{MyanmarMN}
\newcommand{\burmeseTest}[1]{
{\burmeseFamily{} #1}
\hfill
{\burmeseFamilyDecom{} #1}}
\begin{document}
\burmeseTest{င်းကွန်းင်းလောင်းတော်ကြီး}
\bigskip
\burmeseTest{မ္မတီခေါင်းလောင်းကြီး}
\vfill
Might be usefull: \url{https://r12a.github.io/pickers/burmese/}
\end{document}
RHS 只是为了比较,LHS 才是我真正需要的。
网站https://r12a.github.io/pickers/burmese/可能对连字分析有用。感谢 ShreevatsaR 在下面的评论,该网站https://en.wikipedia.org/wiki/Complex_text_layout可能会提供一些相关信息。如果你不熟悉这些Noto
字体,你可能需要阅读https://en.wikipedia.org/wiki/Noto_fonts。
更新。版本 2.7b (2019/02/12)https://ctan.org/pkg/fontspec添加(实验性)对其他渲染引擎的支持,例如Harfbuzz
或Graphite
。我无法正确设置这些引擎,但另请参阅https://tex.stackexchange.com/a/441914/128553以下。
后来,帖子如何在 TeXLive 上安装 HarfTeX?,什么是“latex-dev”?, 和https://tex.stackexchange.com/a/515934/128553导致一种新的、更简单的方法来获得所需的结果。我感谢所有参与解决问题的人,也感谢我的系统管理员慷慨地更新了系统。
如何在乳胶中书写缅甸语?相关的。
答案1
我没有你的第二个字体。但是使用引擎 luahbtex 和 luaotfload 版本 > 3.11,你的示例如下所示:
\documentclass[landscape]{memoir}
\usepackage{fontspec,polyglossia,url}
\newfontfamily{\burmeseFamily}
{NotoSerifMyanmar-Regular.ttf}[Renderer=Harfbuzz,Script=Myanmar]
\begin{document}
\burmeseFamily
င်းကွန်းင်းလောင်းတော်ကြီး
မ္မတီခေါင်းလောင်းကြီး
\end{document}
二进制 luahbtex 已在 texlive 2019 和当前 miktex 中可用。目前可以使用 lualatex-dev 格式(什么是“latex-dev”?),在texlive 2020中它将成为lualatex使用的标准引擎。
答案2
这是使用我的一个示例Luatex-harfbuzz-shaper:
\documentclass[landscape]{memoir}
\usepackage{harfbuzz}
% \usepackage{fontspec,polyglossia,url}
\usepackage{url}
\font\burmeseFamily={Noto Sans Myanmar:+script=mymr;+language=mya} at 12pt
\font\burmeseFamilyDecom={Noto Sans Myanmar:+script=dflt;+language=dflt} at 12pt
\newcommand{\burmeseTest}[1]{
{\burmeseFamily{} #1}
\hfill
{\burmeseFamilyDecom{} #1}
}
\begin{document}
\burmeseTest{င်းကွန်းင်းလောင်းတော်ကြီး}
\bigskip
\burmeseTest{မ္မတီခေါင်းလောင်းကြီး}
\bigskip
Might be usefull: \url{https://r12a.github.io/pickers/burmese/}
\end{document}
请注意,它要求您的系统上已安装 Noto Sans Myanmar。您还需要安装路哈夫巴兹在您的系统上。
结果如下:
答案3
目前,LuaTeX 不支持世界上大多数文字,包括缅甸语和其他婆罗米语衍生文字。这是因为它仅支持字符一个接一个排列的简单文字;不支持需要复杂的文本布局。
据我所知,它对梵文和马拉雅拉姆语提供了一些基本的支持,但对缅甸语则没有。如果你需要使用这种“不受支持”的脚本,你可以选择:
只需使用 XeTeX(或带有适合您的脚本/语言的包的 pdfTeX,如果存在)而不是 LuaTeX(例如,如果您使用 LaTeX,则使用
xelatex
而不是进行编译lualatex
)。在另一个应用程序(如 XeTeX 或其他)中生成文本,并将其作为图像插入到您的 LuaTeX 文档中。
使用 LuaTeX 库 (Harfbuzz) 的“实验性”方法之一进行文本整形。以下是一些链接(您必须自己理解):tatzetwerk/luatex-harfbuzz,deepakjois/luatex-harfbuzz,michal-h21/luatex-harfbuzz-shaper(联系邮件列表帖子),两位 LuaTeX 开发人员最近发表的文章。
弄清楚 LuaTeX 如何支持天城文,并模仿它支持缅甸语(和其他文字)。(我不知道这有多容易:一方面,Harfbuzz 是一个长期运行的项目,非常复杂;另一方面,粗略一看,LuaTeX 中对天城文的少量支持代码似乎足以满足一些常见用途……尽管我还没有进行任何详细测试。)
您还应该在 LuaTeX 邮件列表上询问:几个月前有人声称从来没有人要求 LuaTeX 开发人员支持此类脚本!
答案4
这篇文章已经过时了,但可能是解决类似问题的备用方案,请参阅https://tex.stackexchange.com/a/515934/128553特别是对于那些无法使用更精密引擎的人来说。
@ShreevatsaR 给出了一些很好的想法。但是,由于我只需要两个词,所以我添加了 as 这两个词PDF
。这种方法合理且经济,因为我不需要投入太多时间来尝试使他的建议奏效,因为我从未使用过他建议的工具,也尝试过其他建议https://tex.stackexchange.com/a/434933/128553和https://tex.stackexchange.com/a/441914/128553以失败告终。
如果有人对细节感兴趣:
Burmese.tex
我们使用以下命令编译以下文件XeLaTeX
:
\documentclass[11pt,tikz,border=0ex]{standalone}
\usepackage{fontspec,polyglossia,url}
%This is necessary to scale the Burmese font. On a larger project, you can also simply load the same style file in which the definitions are found.
\setmainfont{texgyrepagella-regular.otf}
%You may want to choose NotoSerifMyanmar-Medium.ttf or a different font for a better optical match
\newfontfamily{\burmeseFamily}{NotoSerifMyanmar-Regular.ttf}[Scale=MatchLowercase]
%There might be simpler ways to get equivalent results.
\newcommand{\burmeseFont}[1]{\tikz \node[inner sep=0pt] {\burmeseFamily{}#1};}
\begin{document}
\burmeseFont{င်းကွန်းင်းလောင်းတော်ကြီး}
\burmeseFont{မ္မတီခေါင်းလောင်းကြီး}
\end{document}
我们可以按如下方式使用该文件:
\documentclass[11pt]{memoir}
\usepackage{fontspec,polyglossia,url,pdfpages}
\setmainfont{texgyrepagella-regular.otf}
%Lowering the PDF gives matching baselines
\newcommand{\burmeseA}
{\mbox{\lower 1.00ex\hbox{\includegraphics[page=1]{Burmese.pdf}}}}
\newcommand{\burmeseB}
{\mbox{\lower 1.00ex\hbox{\includegraphics[page=2]{Burmese.pdf}}}}
\begin{document}
Lorem ipsum \burmeseA{} dolor sit manet.
Et \burmeseB{} nil nisi colloquor.
\end{document}
Burmese.tex
两个文件中的字体大小和主字体匹配很重要。如果需要不同的字体,可以改变文件中的字体大小和样式。请注意:第二个文件中的缅甸文字母PDF
不可复制。