![ConTeXt:在 \definefontfamily 中指定字体的路径](https://linux22.com/image/404568/ConTeXt%EF%BC%9A%E5%9C%A8%20%5Cdefinefontfamily%20%E4%B8%AD%E6%8C%87%E5%AE%9A%E5%AD%97%E4%BD%93%E7%9A%84%E8%B7%AF%E5%BE%84.png)
我是非常我是 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/
目录中,但是当这不可能时(例如出于可移植性原因),上述方法应该有效。