/setmainfont パス 2 レベルの深さでエラーが発生しましたか?

/setmainfont パス 2 レベルの深さでエラーが発生しましたか?

すべてのカスタマイズとフォントをアセット フォルダーに格納して、複数のドキュメントで使用し、同じスタイルを維持できるようにしようとしています。残念ながら、フォントを 2 レベル深いパスに配置しようとすると、ドキュメントをコンパイルできません。次のエラーが発生します。

! error:  (type 2): cannot find file ''
!  ==> Fatal error occurred, no output PDF file produced!

以下の作品:

\newcommand{\fontmercury}{\setmainfont[Path = ./fonts/,
  BoldFont=mercurybd.ttf,
  ItalicFont=mercuryi.ttf,
  BoldItalicFont=mercurybi.ttf
  ]{mercury.ttf}
}

これは動作しません:

\newcommand{\fontmercury}{\setmainfont[Path = ./assets/fonts/,
  BoldFont=mercurybd.ttf,
  ItalicFont=mercuryi.ttf,
  BoldItalicFont=mercurybi.ttf
  ]{mercury.ttf}
}

パスは正しいのですが、1 レベル以上深く行くとエラーが発生します。

編集: 解決しました。ここで説明されているキャッシュの問題でした。私の場合は、otl フォルダーを削除するとコンパイルできるようになりました。LuaTeX は既存のフォントを見つけることができません

答え1

古くなったotlディレクトリを削除することに加えて、 の別の設定を使用することも検討する必要があります\fontmercuryfontspecパッケージは ディレクティブを提供します\newfontfamily。 この場合、ディレクティブ\newfontfamilyを発行するよりも を使用する方が効率的であると思われます\setmainfont。 プリアンブルに次の命令を挿入できます。

\newfontfamily{\mercury}{mercury.ttf}%
      [Path           = ./fonts/,
       BoldFont       = mercurybd.ttf,
       ItalicFont     = mercuryi.ttf,
       BoldItalicFont = mercurybi.ttf]
\newcommand{\fontmercury}[1]{{\mercury #1}}

そして、文書の本文には次のように書きます。

\fontmercury{...}

答え2

これを回答としてマークする方法がわからないため、回答として投稿することにしました。しかし、投稿後すぐに解決しました。私は TeXLive + TeXWorks を使用しています。そのため、パス内の otl フォルダーを削除しましたC:\texlive\2017\texmf-var\luatex-cache\generic\fonts\otl。その後、ドキュメントをビルドするときに機能しました。

詳細:LuaTeX は既存のフォントを見つけることができません

関連情報