我的文档中有一个德语尖音 S (ß)。当我使用 XeLaTeX 编译文档时,ß
会更改为SS
。它适用于默认字体,但不适用于 Charter(使用 XCharter 包):
\documentclass{article}
\usepackage{fontspec}
\usepackage{XCharter}
\begin{document}
Text: ä ö ü ß
\end{document}
这是输出:
我也尝试用 pdfLaTeX 编译类似的文档,并且ß
在输出中正确显示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{XCharter}
\begin{document}
Text: ä ö ü ß
\end{document}
如何才能从 XeLaTeX 获得正确的输出,而无需用 替换ß
每个\ss
?
答案1
与其他字体包相反,XCharter.sty
它不区分被pdflatex
XeLaTeX+调用fontspec
,因此最终使用 T1 编码定义传统字体。
在 T1 编码中,与 Latin-1 中的 ß 对应的位置(UTF-8 尊重该位置)具有 eszet 的大写形式“SS”。这就是您得到那个奇怪输出的原因。
另一方面,XCharter 可以在 TeX Live 中使用 OpenType 格式。根据你的系统,你可以使用
\setmainfont{XCharter}
(如果 TeX Live 中的 OpenType 字体可供操作系统使用)或者您需要明确指定关联
\setmainfont{XCharter}[
Extension=.otf,
UprightFont=*-Roman,
ItalicFont=*-Italic,
BoldFont=*-Bold,
BoldItalicFont=*-BoldItalic,
]
不要XCharter.sty
与 XeLaTeX 或 LuaLaTeX 一起加载。
答案2
pdflatex
与使用\usepackage[utf8]{inputenc}\usepackage{xcharter}
或者 xelatex
使用\usepackage{fontspec}\setmainfont{XCharter}
。两者都有效(字体以 opentype 格式存在):
\documentclass{article}
%\usepackage[utf8]{inputenc}
%\usepackage{xcharter}
\usepackage{fontspec}
\setmainfont{XCharter}
\begin{document}
Text: ä ö ü ß
\end{document}