Luatex 中字体的相对路径

Luatex 中字体的相对路径

我遇到了和某人曾经描述过的问题完全一样的问题这里,但不是在 Lyx-Context 中,因此那里显示的解决方案似乎不起作用。考虑以下设置:

在 texfile 中我使用了一些来自本地字体文件的字体:

\setmainfont[
   Path          = fonts/,
   Ligatures     = TeX,
   UprightFont   = Calibri.ttf,
   BoldItalicFont= Calibri_Bold_Italic.ttf,
   BoldFont      = Calibri_Bold.ttf,
   ItalicFont    = Calibri_Italic.ttf
]{Calibri}
\newfontfamily[
   Path          = fonts/,
   Ligatures     = TeX,
   UprightFont   = Calibri_Light.ttf,
   ItalicFont    = Calibri_Light_Italic.ttf
]{Calibri_Light}

文件结构是

/texfolder
  |
  --texfile.tex
  --/fonts
     |
     --Calibri.ttf
     --...etc

我使用以下命令(bash)来渲染它:

 lualatex "\input{/texfolder/texfile.tex}"

如果从文件夹中调用上述命令,则可行文件夹。但如果我从其他地方调用它,它就会无法找到字体文件,因为 lualatex 编译器会在调用它的文件夹中搜索它,而不是 tex 文件所在的文件夹中。我无法在 tex 文件中写入绝对路径,因为这是程序包的一部分,它在文件系统中的位置取决于用户。

我能做些什么?

  • 是否有机会在这种情况下使用 \input@path 或等效项?
  • 或者:有没有办法告诉 lualatex 命令它必须使用哪个工作目录?
  • 或者:我可以用某种方式使用路径变量吗(而不是相对路径,如字体/)并在命令中提供此信息?

感谢您的帮助!


编辑1:

根据@Ulrike Fischer 的一些建议,我尝试了以下操作:

\usepackage[abspath]{currfile}
\message{path is \currfileabsdir}
\setmainfont[
  Path          = \currfileabsdir,
  Ligatures     = TeX,
  UprightFont   = calibri/Calibri.ttf,
  BoldItalicFont= calibri/Calibri_Bold_Italic.ttf,
  BoldFont      = calibri/Calibri_Bold.ttf,
  ItalicFont    = calibri/Calibri_Italic.ttf
]{Calibri}
\newfontfamily[
  Path          = \currfileabsdir,
  Ligatures     = TeX,
  UprightFont   = calibri/Calibri_Light.ttf,
  ItalicFont    = calibri/Calibri_Light_Italic.ttf
]{Calibri_Light}

然后运行命令-录音机。这似乎是正确的跟踪,但仍然不起作用。我收到以下错误,但我不知道这意味着什么:

luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: "Font P not found.".

答案1

感谢@Ulrike Fischer 的提示,我可以解决这个问题:

\usepackage{fontspec}
\usepackage[abspath]{currfile}
\usepackage[english]{babel}
\setmainfont[
  Path          = \currfileabsdir,
  Ligatures     = TeX,
  UprightFont   = calibri/Calibri.ttf,
  BoldItalicFont= calibri/Calibri_Bold_Italic.ttf,
  BoldFont      = calibri/Calibri_Bold.ttf,
  ItalicFont    = calibri/Calibri_Italic.ttf
]{Calibri}
\newfontfamily\CalibriLight[
  Path          = \currfileabsdir,
  Ligatures     = TeX,
  UprightFont   = calibri/Calibri_Light.ttf,
  ItalicFont    = calibri/Calibri_Light_Italic.ttf
]{Calibri_Light}

然后运行命令-录音机。起初我犯了一个错误,没有提供一个合适的名字新字体系列

相关内容