在 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 中未预定义的字体,你要么需要编写自己的字体打字稿或者使用simplefonts
Wolfgang 编写的模块,该模块最近已集成到 ConTeXt 中。以下示例使用系统安装的 Comic Sans,但\definefontfamily
仅适用于 TeX Live 2014 或独立发行版:
\definefontfamily[comic][serif][Comic Sans MS]
\setupbodyfont[comic]
\mainlanguage[russian]
\starttext
Немного русского текста для пробы.
\stoptext
该示例不适用于 TL 2013。如果您无法升级发行版并想要使用系统字体,则需要编写 typescript 或加载模块simplefonts
。但您的 dejavu 示例应该可以立即使用,即使使用 TL 2013 也是如此。只需删除\enableregime
并确保使用 LuaTeX 而不是 pdfTeX 编译示例即可。