ConTeXt:在 \definefontfamily 中指定字体的路径

ConTeXt:在 \definefontfamily 中指定字体的路径

我是非常我是 ConTeXt 的新手,所以请原谅我的问题。我正尝试从文件中加载字体。这些.otf文件存储在名为的目录中,该目录位于我尝试编译的文件fonts/的目录中。.tex

此代码不起作用,并恢复为默认字体:

\definefontfamily [mainface][serif] [My Font]
                  [tf=file:./fonts/MyFont.otf,
                   it=file:./fonts/MyFont-It.otf,
                   bf=file:./fonts/MyFont-Bd.otf,
                   bi=file:./fonts/MyFont-BdIt.otf]

\setupbodyfont[mainface]                   

\starttext
\title{Hello, world!}

Hello World! \emph{Hi!}

\stoptext

但是,如果我将.otf文件复制到与文件相同的目录中.tex,并写入tf=file:MyFont.otf等,那么一切都正常。

如何在.tex文件内指定字体的相对路径?

在 LaTeX 中,我将使用fontspec包并执行以下操作:

\setmainfont {MyFont.otf}
             [Path        =./fonts/,
              ItalicFont  = MyFont-It.otf]

\definefontfamily但是,我在 ConTeXt 中找不到等效的语法。

顺便提一下,我在 Manjaro Linux 上使用 ConTeXt 版本:2019.03.21 21:39 作为 TeX Live 的一部分。

答案1

根据评论中的建议,我在 ConTeXt 邮件列表中提出了这个问题,并得到了 Hans Hagen 的回复。解决方案是添加:

\ctxlua{os.setenv("RUNTIMEFONTS","./fonts")}

在那之后

\definefontfamily [mainface][serif] [My Font]
                  [tf=file:MyFont.otf,
                   it=file:MyFont-It.otf,
                   bf=file:MyFont-Bd.otf,
                   bi=file:MyFont-BdIt.otf]

按预期工作。

但是,我还被警告说,这会在缓存中留下垃圾,从而影响使用同名不同字体的其他项目,因此解决方案是清除缓存或将字体重命名为具有唯一名称。但是,理想情况下,字体应该安装在texmf/fonts/目录中,但是当这不可能时(例如出于可移植性原因),上述方法应该有效。

相关内容