使用德语尖锐 S(ß)和 Bitstream Charter 和 XeLaTeX

使用德语尖锐 S(ß)和 Bitstream Charter 和 XeLaTeX

我的文档中有一个德语尖音 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它不区分被pdflatexXeLaTeX+调用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} 

在此处输入图片描述

相关内容