如何在 XeLaTeX 中使用带有 fontspec 的 Open Sans,而无需从 Google Fonts 下载 .ttf

如何在 XeLaTeX 中使用带有 fontspec 的 Open Sans,而无需从 Google Fonts 下载 .ttf

OpenSans我在文档中使用时遇到困难,我尝试使用\setsansfont以下命令

\usepackage{fontspec}
\setmainfont{TeX Gyre Termes} % OK
\setsansfont{Open Sans}       % ERROR!

但它给了我以下错误:

Package fontspec Error: The font "Open Sans" cannot be found. ]
Package fontspec Error: The font "Open Sans" cannot be found. ]
Package fontspec Error: The font "Open Sans" cannot be found. ]
Font TU/OpenSans(0)/m/n/45="Open Sans" at 45.0pt not loadable: Metric (TFM) file or installed font not found. ^^I^^I}
Font TU/OpenSans(0)/m/n/28="Open Sans" at 28.0pt not loadable: Metric (TFM) file or installed font not found. ^^I^^I}
Font TU/OpenSans(0)/b/n/28="Open Sans" at 28.0pt not loadable: Metric (TFM) file or installed font not found. ^^I^^I}
Font TU/OpenSans(0)/b/n/11="Open Sans" at 11.0pt not loadable: Metric (TFM) file or installed font not found. ^^I^^I}
...

答案1

你应该能够这样做:

\usepackage[defaultsans]{opensans}

在 LuaLaTeX 或 XeLaTeX 上,文档说这会将 Open Sans 的 OpenType 版本设置为无衬线字体。

如果您希望能够切换到 Open Sans,但设置另一种无衬线字体,您可以按照上述方式加载包,并使用您想要的选项\setsansfont,然后使用\fosfamily命令选择 Open Sans。

答案2

原因是XeLaTeX系统希望安装字体,但找不到。因此,要指定XeLaTeX字体,您需要使用\setsansfont命令中提供的选项列表,如下所示:

\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}

\setsansfont{OpenSans}[
    Extension = .ttf,
    UprightFont=*-Regular,
    BoldFont=*-Bold,
    ItalicFont=*-Italic,
    BoldItalicFont=*-BoldItalic
]

它现在可以工作是因为:

  • Open Sans在我的情况下存储.ttf格式
  • 有时我们需要指定字体文件名,例如:OpenSans-Regular.ttf
  • Open Sans 系列由多种样式组成,因此,为了加载这些样式,您必须指定要加载的样式。

笔记:这个答案假设你正在使用 Overleaf 或 MiKTeXopensans软件包已安装或者使用带有 fonts-extra 的 TeXLive

希望它能帮助你!

答案3

正如其他答案所说,您可以通过文件名访问字体,但如果 xetex 配置适当,原始代码将不会出现错误。

在此处输入图片描述

\documentclass{article}

\usepackage{fontspec}

\setmainfont{TeX Gyre Termes} % OK
\setsansfont{Open Sans}       % No ERROR!

\begin{document}

ABC xyz \textsf{ABC xyz}

\end{document}

正如 texlive 手册中所述,xetex 使用 fontconfig 来定位由内部字体名称调用的字体。默认情况下,fontconfig 会查找系统字体目录,但不知道 texlive 字体。Texlive 附带一个 fontconfig 配置文件,您可以使用它来配置 config。详细信息取决于您的系统字体搜索设置方式,但就我而言,我已将该文件的稍作修改的版本复制到

/etc/fonts/local.conf

因此它包含

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/local/texlive/2021/texmf-dist/fonts/opentype</dir>
  <dir>/usr/local/texlive/2021/texmf-dist/fonts/truetype</dir>
  <dir>/cygdrive/c/windows/fonts</dir>
</fontconfig>

这意味着我的(cygwin)xetex 除了所有 cygwin 提供的字体外,还会找到所有 texlive 和 Windows 系统字体。

相关内容