LuaTeX 中的天城文/印度文

LuaTeX 中的天城文/印度文

据我从邮件列表中了解到,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

产生这个:
损坏的样本(来自 LuaTeX)

但它应该产生这个(来自 XeTeX):
工作示例(来自 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 发行版还是操作系统中)的人,您仍然可以使用devanagariVelthuis 的软件包。但您必须将所有 UTF-8/Unicode 编码的梵文转换为 velthuis 音译。

相关内容