我以为 XeTeX 的目的是让 Unicode 开箱即用(除了利用系统字体)。那么,为什么除非我使用 fontspec 包,否则下面的内容不会输出任何内容?
\documentclass{article}
\usepackage{fontspec} % must be present
\begin{document}
éʡ
\end{document}
第一个字符是 U+00E7(存在于 Latin-1 中),第二个字符是 U+02A1。
答案1
XeTeX 允许轻松访问系统字体,但没有一种标准格式(这里是 LaTeX 格式)可以加载这些字体。事实上,无法将系统字体保存为格式:必须在使用时加载它们。因此,运行时您获得的xelatex
预加载代码几乎与使用latex
或时相同pdflatex
(有一些更改来处理将代码分配给扩展字符集)。标准 TeX 字体没有覆盖所有 Unicode,因此您想要打印的字符根本无法使用。
在 XeLaTeX 中使用系统字体并非绝对必要:你可以使用XeTeX 扩展的原语fontspec
直接加载字体。但是,使用会让生活变得轻松很多。使用标准设置,\font
fontspec
fontspec
将加载 Latin Modern 字体,它比 LaTeX 的“开箱即用”字形覆盖范围要广得多。重要的是要注意,您只会看到字体包含的字形:一个典型的问题是大多数西方字体不涵盖中文,ETC。,所以这里需要合适的字体。
答案2
不,您不必使用fontspec
,但您必须更改默认的 Computer Modern 字体。CM 字体不包含这些字符,请改用 Unicode 字体。
例子:
\documentclass{article}
\font\1="Times New Roman" % For windows
\begin{document}
\1
éʡ
\end{document}
答案3
您需要一种具有所需字符的字体,因为与大多数桌面应用程序不同,当当前字体中缺少所需字符时,XeTeX 不会自动回退字体(出于充分的理由)。加载的副作用之一fontspec
是拉丁现代字体成为默认字体,其 Unicode 覆盖范围比原始计算机现代字体更广,但没有(并且不太可能有)字体可以覆盖整个 Unicode。