如何避免在 ConTeXt 中音译俄语文本?

如何避免在 ConTeXt 中音译俄语文本?

在 Mac OS 上使用 TexShop 我尝试编译代码:

 \setupbodyfont[dejavu]
 \enableregime[utf]
 \mainlanguage[russian]

 \starttext
 Немного русского текста для пробы.
 \stoptext

但它给了我一个音译页面

音译文本

有办法修复它吗?

答案1

音译文本是使用 8 位 ConTeXt MkII (pdfTeX) 而未正确设置字体的“症状”。Unicode 字母被映射到 256 个字形,除非您将编码切换为 T2A,否则您将获得带有拉丁字母的 T1/EC 编码。

以下是使用 Gentium 的正确 MkII 设置:

\usetypescriptfile[type-gentium]
\usetypescript[gentium][t2a]
\setupbodyfont[gentium]
\enableregime[utf-8]
\mainlanguage[russian]

\starttext
Немного русского текста для пробы.
\stoptext

不过我强烈建议你尝试使用 MkIV (LuaTeX) 来学习俄语。在 MkIV 中你不需要使用,\enableregime因为默认编码已经是 UTF-8。

您得到空白页的原因再次是由于错误的字体设置。默认的 Latin Modern 字体不包含西里尔字母,因此您基本上会从 LM 得到“空字母”。如果您没有正确设置其他字体,例如如果您尝试使用\setupbodyfont[nonexistentname],ConTeXt 不会发出任何警告,只是默默地忽略切换并坚持使用 LM 而不显示任何西里尔字母。

如果您切换到另一种不支持西里尔文的字体,您将得到与 LM 相同的结果:大量字形缺失。一个值得注意的例子可能是\setupbodyfont[times]切换到TeX 环流一开始还可以用,但后来由于质量太差,西里尔文支持被删除,而且没有人愿意介入修复它。整个 TeX Gyre 字体系列也是如此。

有效的 MkIV 设置如下:

\setupbodyfont[gentium]
\mainlanguage[russian]

\starttext
Немного русского текста для пробы.
\stoptext

“俄罗斯民族主义运动的兴起。”罗马天主教

您可以[gentium]通过 typescript 用 ConTeXt 支持的任何字体进行替换,只要该字体支持西里尔文即可。示例包括[dejavu][iwona][antykwa-torunska]、...

如果你想使用 ConTeXt 中未预定义的字体,你要么需要编写自己的字体打字稿或者使用simplefontsWolfgang 编写的模块,该模块最近已集成到 ConTeXt 中。以下示例使用系统安装的 Comic Sans,但\definefontfamily仅适用于 TeX Live 2014 或独立发行版:

\definefontfamily[comic][serif][Comic Sans MS]
\setupbodyfont[comic]
\mainlanguage[russian]

\starttext
Немного русского текста для пробы.
\stoptext

“俄罗斯民族主义运动的兴起。”采用 Comic Sans

该示例不适用于 TL 2013。如果您无法升级发行版并想要使用系统字体,则需要编写 typescript 或加载模块simplefonts。但您的 dejavu 示例应该可以立即使用,即使使用 TL 2013 也是如此。只需删除\enableregime并确保使用 LuaTeX 而不是 pdfTeX 编译示例即可。

相关内容