XeLaTeX:如果找不到则设置替代字体

XeLaTeX:如果找不到则设置替代字体

我正在与不熟悉 LaTeX 的人一起为共享项目设置软件包。我想使用一些本地字体。我使用了 XeLaTeX,效果很好。但是,我们还将使用可能无法使用这些字体的笔记本。

因为我打算尽量减少对所加载包的修改需要,所以我想知道是否有办法在 XeLaTeX 找不到第一个字体的情况下指定替代字体(例如在 HTML/CSS 中所做的那样)。

以下是一个 mwe:

\documentclass[11 pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\setmainfont{Adobe Garamond Pro}
\begin{document}
This should be in \textit{Adobe Garamond Pro} if available.
\end{document}

答案1

这在 xelatex 和 lualatex 中都有效,并为我设置了 Pagella 中的文档:

\documentclass[11 pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\ExplSyntaxOn
\NewDocumentCommand{\onlywarniffontnotfound}{}
 {
  \suppressfontnotfounderror = \c_one 
  %\font_suppress_not_found_error:
  \msg_redirect_name:nnn {fontspec}{font-not-found}{warning}
 }
\ExplSyntaxOff

\onlywarniffontnotfound
\setmainfont{Adobe Garamond Pro}
\expandafter\ifx\the\font\nullfont
  \setmainfont{TeX Gyre Pagella}
  \expandafter\ifx\the\font\nullfont
    \typeout{hmm your document might be a bit white, sorry}
  \else
    \typeout{TeX Gyre Pagella}
  \fi
\else
\typeout{you have Adobe Garamond Pro}
\fi



\begin{document}
\showoutput
This should be in \textit{Adobe Garamond Pro} if available.
\end{document}

\onlywarniffontnotfound由@egreg 提供)

相关内容