我想使用 XeLaTeX 排版梵文中的 m̐llo 组合。当我使用正确的 Unicode ल्ँलो 时,ls 没有连字符。当我将 candrabindu 放在连字符上时,o 与连字符没有连接:ल्लँो。
我怎样才能让 XeLaTeX 将 candrabindu 放在连字符上,并且让 o 处于正确的位置?
\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{sanskrit}
\setmainfont{Siddhanta}
\begin{document}
ल्ँलो
ल्लँो
\end{document}
以下是教科书中的一个例子,它应该是这样的:
答案1
捷克 TeXist Zdeněk Wagner 没有足够的积分在 TeX.SX 上发表答案(或者他可能遇到了不同类型的问题),但是,他写下了他的观察结果:
问题不在于
polyglossia
和Language
,这些命令是正确的,问题在于字体加载。如果您没有明确指定脚本,则会假定拉丁脚本,因此非拉丁字符无法正确显示。缺少的是脚本规范,您必须编写\setmainfont[Script=Devanagari]{Siddhanta}
你举的例子是错误的。virama、candrabindu 和 o-matra 这三个字符都是从属元音,你不能用辅音组合它们中的多个。如果你输入 ल्(带有 virama),你不能添加 candrabindu。如果它不是单词的结尾,你只能添加另一个辅音。你可以用 candrabindu 组成连字符(连字),即 ल्लँ,但它后面绝不能跟任何 matra。理论上,你可以添加独立的 ओ,但我无法想象你会如何发音。它看起来真的很奇怪。当然,你可以将 matra 鼻化,例如 ताँ,但如果要将 o-matra 或 ii-matra 鼻化,则使用 anusvara(仅仅是因为图形外观)。
教科书中有一个明显的印刷错误,正确的形式是ताँल्लोकान्。
尝试以下插件来查看 Firefox 使用哪些字体: https://addons.mozilla.org/en-us/firefox/addon/fontinfo/
我添加了一个例子。连字ll
在这三种字体中都没有其 Unicode 代码,因此从xelatex
(左图;所有三种情况)得出的结果是正确的,从lualatex
(右图;第一行)得出的结果也正确。
% run: xelatex mal-chandas.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{fontspec}
\begin{document}
\def\maltext{ताँल्लोकान्\par}
% http://svayambhava.blogspot.cz/p/siddhanta-devanagariunicode-open-type.html
\setmainfont[Script=Devanagari]{Siddhanta} \maltext
\setmainfont[Script=Devanagari]{Chandas} \maltext
\setmainfont[Script=Devanagari]{Sanskrit2003} \maltext
\end{document}
更新:我们可以使用luaotfload
包而不是fontspec
包来获得正确的形式;我在文档主体中lualatex
使用(我输入或在script=devanagari
taaMMllokaan
tAMMllokAn
词典):
% run: lualatex mal-siddhanta.tex
\documentclass[a4paper]{article}
\pagestyle{empty}
\usepackage{luaotfload}
\begin{document}
% http://svayambhava.blogspot.cz/p/siddhanta-devanagariunicode-open-type.html
% taaMMllokaan at Lexilogos
\font\malfont=Siddhanta:script=devanagari \malfont ताँल्लोकान्
\end{document}