据我从邮件列表中了解到,LuaTeX 目前无法正确渲染天城文,因为它无法理解其中复杂的连字符规则。这也是我对测试文档的体验。
我能做些什么来解决这个问题?
- 我能否以某种方式自己添加正确的梵文渲染,而无需深入研究 LuaTeX 的核心?我对代码很在行,但我怀疑这里的核心流程远远超出了我的能力范围。
- 由于第一个问题的答案可能是“非常否定”,有人可以建议一个临时解决方案,将小块准确的天城体文字放入以英语为主的文档中吗?
现在,我使用 perl 脚本将最低限度标记的文档转换为 (Xe)LaTeX。最终,我想将我的流程转换为 ConTeXt-mkiv,但天城文支持是一项硬性要求。
更新:
phg 的评论让我相信我只是做错了什么。我仍在努力理解 typescript,尤其是它。
下面的例子:
\definefontfeature[dev][devanagari-two][script=dev2]
\starttypescript [serif] [devanagarimt]
\definefontsynonym [DevanagariMT-Light] [name:DevanagariMT] [features=dev]
\stoptypescript
\starttypescript [serif] [devanagarimt]
\usetypescript[serif][fallback]
\definefontsynonym [Serif] [DevanagariMT-Light] [features=dev]
\stoptypescript
\starttypescript [DevanagariMT]
\definetypeface [DevanagariMT] [rm] [serif] [devanagarimt] [default]
\stoptypescript
\usetypescript[DevanagariMT]
\setupbodyfont[DevanagariMT,11pt]
\starttext
श्रेयो हि ज्ञानमभ्यासाज्ज्ञानाद्ध्यानं विशिष्यते ।
ध्यानात्कर्मफलत्यागस्त्यागाच्छन्तिरनन्तरम् ॥
\stoptext
产生这个:
但它应该产生这个(来自 XeTeX):
我怀疑这里正在进行一些特定于天城文的处理,因为有些事情确实有效:
第二个单词:ह + ि 产生 हि(应该如此),但是
第一个单词的第一个字形:श + ् + र + े 应该产生 श्रे 但却没有。
这可能只是一个尚未完成的实现,但我希望我的代码中有一个错误。这里有什么明显的错误吗?我尝试了几种不同的字体,结果都差不多。
答案1
更新一下,天城体在最近的测试版中运行良好。在处理 opentype 功能时有一个错误,但已修复。
要使用天城文,只需定义一个具有天城文功能集的字体:
\definefont [Deva][file:chandas.ttf*devanagari-one]
\starttext
\Deva श्रेयो हि ज्ञानमभ्यासाज्ज्ञानाद्ध्यानं विशिष्यते । \crlf ध्यानात्कर्मफलत्यागस्त्यागाच्छन्तिरनन्तरम् ॥
\stoptext
或者,为了避免字体切换,可以为适当的 unicode 范围定义支持天城文的后备字体:
\definefontfallback
[deva_fallback][file:chandas.ttf*devanagari-one]
[0x0900:0x097F][force=yes]
\definefontsynonym[Baskerville]
[file:Baskerville120Pro-Regular][fallbacks=deva_fallback]
\definefont[GeneralPurposeFont][Baskerville]
\starttext
\GeneralPurposeFont Switch scripts श्रेयो हि ज्ञानमभ्यासाज्ज्ञानाद्ध्यानं विशिष्यते with total impunity.
\stoptext
答案2
对于那些没有适当支持 CTL(无论是在 Tex 发行版还是操作系统中)的人,您仍然可以使用devanagari
Velthuis 的软件包。但您必须将所有 UTF-8/Unicode 编码的梵文转换为 velthuis 音译。