我正在尝试在 Mac 上编写包含满文脚本的文档。满文是用蒙古字母书写的,并添加了一些变音符号,但额外的变音符号包含在 Mac OS 附带的标准蒙古字体中。满文/蒙古文脚本的功能类似于阿拉伯文脚本,因为字母是相连的,并且它们的形状会根据它们在单词中的位置而变化。
但是,Mac OS 无法正确输入甚至显示满文/蒙古文,因为它无法处理字母根据其在单词中的位置(独立字母、首字母、中间字母或尾字母)应采取的不同形式。
个人电脑现在能够输入和显示满文/蒙古文。
现在我想知道是否可以在 LaTeX 中输入满文/蒙古文(例如,通过输入字母的 UNICODE 数字),并让排字员生成正确的脚本?
答案1
一般来说,你可以使用 Unicode 数字或相应的字母:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{圈点满文印刷体}% the font name of manchu.ttf}
\begin{document}
abcdefghijklmnopqrst
\char055\char056\char057
\end{document}
您必须使用 platex、lualatex 或 omega 从上到下按照正确的方向书写。
答案2
以下功能可用作
manchuxetex
包裹在 GitHub 上。
一个最小的例子来演示哈立德·霍斯尼将满文/蒙古文破解为从上到下、从左到右的观点:
% !TEX TS-program = xelatex
\documentclass{scrartcl}
\usepackage{fontspec}
\newfontfamily{\dcw}[]{DaicingWhite}%
\begin{document}
\noindent
Line above\\% to demonstrate that the lines are being stacked as normal
\rotatebox{-90}{%
\XeTeXupwardsmode1\\% successive lines will be stacked upwards instead of downwards
\begin{minipage}{4em}% this will be the vertical length of the Mongolian section
{\dcw% Font: Daicing White
1 ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ\\% direct Unicode input of Manchu letters
2 ᠮᠠᠨᠵᡠ ᡤᡳᠰᡠᠨ
}% End font
\end{minipage}
\XeTeXupwardsmode0
}% End rotatebox
\noindent
Line underneath
\end{document}
得出以下结论:
太清白书的字母已经旋转,因此这里不需要使用Vertical=RotatedGlyphs
字体功能。
答案3
Lua(La)TeX 的一个初步解决方案是模拟 XeTeX 向上模式,方法是反转文本行,然后旋转结果。唯一的问题是我无法摆脱段落中断。文本摘录自http://www.cjvlang.com/Writing/writmongol/tradmononsite.html以供比较。蒙古白葡萄可从此处购买:http://www.mongolfont.com/en/font/mnglwhiteotf.html
\documentclass{standalone}
\usepackage{luacode}
\usepackage{fontspec}
\setmainfont{Mongolian White}[Renderer=Harfbuzz,Script=Mongolian]
\begin{luacode*}
userdata = userdata or {}
--Idea taken from chickenize's \boustrophedon
userdata.mongolian = function(head)
rot = node.new(node.id("whatsit"),node.subtype("pdf_literal"))
rot2 = node.new(node.id("whatsit"),node.subtype("pdf_literal"))
for line in node.traverse_id(0,head) do
w = line.width/65536*0.99625
rot.data = "-1 0 0 -1 "..w.." 0 cm"
rot2.data = "-1 0 0 -1 "..-w.." 0 cm"
line.head = node.insert_before(line.head,line.head,node.copy(rot))
node.insert_after(line.head,node.tail(line.head),node.copy(rot2))
end
return head
end
\end{luacode*}
\def\startmongolian{\directlua{luatexbase.add_to_callback("post_linebreak_filter", userdata.mongolian, "mongolian")}}
\def\stopmongolian{%
%Don't remove \par !
\par\directlua{luatexbase.remove_from_callback("post_linebreak_filter", "mongolian")}%
}
\usepackage{graphicx}
\begin{document}
\rotatebox{90}{%
\parbox{8cm}{%
\startmongolian
\begin{flushleft}
ᠣᠢᠷᠠ ᠵᠢᠨ ᠡᠳᠦᠷ᠂ ᠦᠪᠦᠷ ᠮᠣᠩᠭᠣᠯ ᠦᠨ ᠰᠢᠯᠢ ᠵᠢᠨ ᠭᠣᠣᠯ ᠠᠢᠮᠠᠭ ᠦᠨ ᠰᠢᠯᠣᠭᠣᠨ ᠬᠦᠬᠡ ᠬᠣᠰᠢᠭᠣᠨ ᠦ ᠰᠢᠭᠦᠬᠦ ᠬᠣᠷᠢᠶᠠ ᠨᠢᠭᠡᠨ ᠬᠦᠴᠦᠷᠬᠡᠭᠯᠡᠨ ᠨᠦᠵᠢᠳᠯᠡᠭᠰᠡᠨ ᠶᠠᠯᠠᠲᠣ ᠬᠡᠷᠡᠭ ᠲᠦ ᠰᠢᠭᠦᠯᠲᠡ ᠬᠢᠪᠡ᠃ ᠰᠢᠭᠦᠨ ᠲᠠᠰᠣᠯᠣᠯᠳᠠ ᠪᠠᠷ᠂ ᠵᠠᠭᠠᠯᠳᠣᠭᠳᠠᠭᠴᠢ ᠡᠷᠬᠢᠮᠲᠦ ᠵᠢ ᠬᠦᠴᠦᠷᠭᠡᠭᠯᠡᠨ᠂ ᠨᠦᠵᠢᠳᠯᠡᠭᠰᠡᠨ ᠶᠡᠯᠡ ᠪᠡᠷ ᠭᠣᠷᠪᠠᠨ ᠵᠢᠯ ᠦᠨ ᠬᠣᠭᠣᠴᠠᠭᠠ ᠲᠠᠢ ᠬᠣᠷᠢᠬᠣ ᠡᠷᠡᠭᠦᠦ ᠪᠡᠷ ᠰᠢᠳᠬᠡᠭᠰᠡᠨ ᠪᠠᠢᠨᠠ᠃
\end{flushleft}
\stopmongolian
}
}
\end{document}