LuaLaTeX:使用还是不使用经典字体包?

LuaLaTeX:使用还是不使用经典字体包?

在 lualatex-doc 中我正在阅读“从 LaTeX 切换到 LuaLaTeX”:

  1. 不要加载inputenc,只需以 UTF-8 编码您的源。
  2. 不要加载fontenc,而是加载fontspec
  3. 不要使用任何改变字体的包,而是使用fontspec命令。

请考虑以下示例:

% !Mode:: "TeX:UTF-8"
\documentclass[paper=a4]{scrartcl}
\usepackage{fontspec}
\usepackage{lmodern}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
Hellöö! ßßäü
\end{document}

它编译得非常好,并且与 TeXLive 2012 中的 lualatex 看起来完全一样。它与上面列表中的 (1) 和 (2) 点一致。但是,我想知道:

  • 这不\usepackage{lmodern}违反上面第(3)点吗?

如果是:

  • LuaLaTeX 的使用方式是怎样的lmodern
  • 那么它为什么能起作用呢?在哪些情况下它预计会失效?

我只是举lmodern个例子,这个问题适用于所有这类字体包。

答案1

您的示例可以正常工作,因为包中存在适用于 EU2 字体编码的“lmr”和“lmss”系列的字体定义文件euenc。(如果您查看日志文件,您将看到已eu2lmss.fd加载)。

如果您将其替换lmodern为 eg,times它将不再起作用。您会在日志文件中看到一条警告:

LaTeX Font Info:    No file EU2phv.fd. on input line 14.

LaTeX Font Warning: Font shape `EU2/phv/m/n' undefined
(Font)              using `EU2/lmr/m/n' instead on input line 14.

并且该文档不会使用 helvet 而是使用 fallback lmr。

为了能够使用 helvet 字体,您必须将字体编码切换为存在 helvet 字体定义的编码,例如 T1 编码。但使用此编码,您将无法再直接输入非 ASCII 字符:

\documentclass[paper=a4]{scrartcl}
\usepackage{fontspec}
\usepackage{times}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
¼½¾ Hellöö! ßßäü
% this gives helvet, but some chars are wrong:
\fontencoding{T1}\selectfont ¼½¾ Hellöö! ßßäü \ss
\end{document}

相关内容