如何正确使用otf字体?

如何正确使用otf字体?

我使用的是 Linux。我发现可以运行lualatex并使用我的系统字体。好吧,我正在尝试看看它们是什么样子。

这是我的示例:

\documentclass[11pt,a4paper]{amsart}
\usepackage[math]{fontspec}
\usepackage{unicode-math}
\setmathfont{Asana-Math.otf}
\usepackage{fontenc}
\setmainfont{Droid Serif}
\begin{document}
\[(D_e\Phi_{\gamma(s)})^{-1}(\gamma'(s))=\varphi'(s)(D_e\Phi_{\alpha(\varphi(s))})^{-1}(\alpha'(\varphi(s)))\]
\end{document}

运行后,fc-list我只需复制一些字体名称并将其使用它\setmainfont,就像上面一样。

我的问题是:如何确保我对文本和数学字体都进行了同样的操作?当我按上述方法更改时,数学字体是否会相应更改?如何测试数学字体?如何列出otf要使用的所有其他字体\setmathfont

答案1

fontspec正如我在评论中提到的,你应该只使用或之一fontenc。基本上是与和fontspec一起使用的,而是与其他引擎一起使用的(,,...)。LuaLaTeXXeLaTeXfontencLaTeXpdfLaTeX

关于您的系统上有哪些字体可用,它仅为您提供已知的fc-list字体列表(和中的字体),即您的 Linux 发行版可以看到的字体。但是,它不会列出您的 LaTeX 发行版附带的字体,因为通常,TeX 发行版不会将这些字体添加到系统路径中。这就是为什么它不会向您显示 Asana Math。fontconfig/usr/share/fonts/~/.fonts/fc-list

但是,有一个命令LuaLaTeX可以扫描您的系统并找出哪些字体是可访问的:mkluatexfontdb。您可以自己运行此命令,它将创建一个文件:~/.texlive2012/texmf-var/luatex-cache/generic/names/otfl-names.lua其中列出了可以看到的所有字体(系统字体或非系统字体)LuaLaTeX。(LuaLaTeX 会在您第一次运行它时以及每次您尝试使用它不认识的字体时自动运行此命令(以防您后来添加了它)。

对于 LuaLaTeX,最好不要使用字体文件名,而是使用实际的字体名称。这是因为在大多数情况下,不同的形状和系列位于不同的文件中。虽然 Asana Math 不是这种情况,但我认为这是一个好习惯。(不过这里要注意的是,如果您想使用 TeX 发行版提供的字体,目前在使用 XeLaTeX 时必须通过其文件名调用,而 LuaLaTeX 则不是这种情况)

就你的情况而言,你可以轻松地拨打

\usepackage{unicode-math} %as noted in the comments this will load fontspec as well
\setmathfont{Asana Math}
\setmainfont{Droid Serif}

请注意,[math]fontspec 包的选项不是必需的,因为它是默认选项。但是,由于您正在使用,unicode-math您可能希望使用该[no-math]选项。事实上,fontspec 文档说

默认情况下,fontspec 会调整 LATEX 的默认数学设置,以便在罗马字体更改时保持正确的 Computer Modern 符号。但是,如果加载了另一个数学字体包(例如 mathpazo 或 unicode-math 包),它将尝试避免这样做。如果您发现 fontspec 错误地更改了数学字体(而它应该保持原样),请应用 [no-math] 包选项手动抑制其数学字体。

虽然我确实觉得这unicode-math很好,并且很好地简化了使用 OTF/TTF 进行数学排版的过程,但我还应该指出,这实际上并不是必需的,因为fontspec还有\setmathrm\setmathsf和命令。但由于您计划使用的字体包含所有这些,因此使用\setmathtt是一个更好的解决方案。\setboldmathrm\setmathfont

相关内容