在 lualatex-doc 中我正在阅读“从 LaTeX 切换到 LuaLaTeX”:
- 不要加载
inputenc
,只需以 UTF-8 编码您的源。 - 不要加载
fontenc
,而是加载fontspec
。 - 不要使用任何改变字体的包,而是使用
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}