重新映射小型大写字母中的单个字形(Linux Libertine)

重新映射小型大写字母中的单个字形(Linux Libertine)

我正在尝试将德语尖音 s (Eszett) 的默认样式重新映射到另一个 Linux libertine。这在添加时有效

 U+00DF <> U+E04C

到 tex-text.map(并编译此映射文件)。问题是这有副作用,小写尖锐 s 也被 U+E04C 替换,而它应该保留为 U+E092(Linux Libertine 私有区域中的小写德语尖锐 s)。

有人能帮助我实现这个目标吗?

提前谢谢了

雷纳

答案1

您不应该修改标准tex-text.map。相反,将更改添加到新文件(我将其命名为change-ss.map)并在此文件上运行teckit_compile

然后,您可以将其加载为主字体,并为小型大写字体传递不同的选项。

\documentclass{article}
\usepackage{fontspec}

\defaultfontfeatures{}

\setmainfont{Linux Libertine O}[
  Mapping=change-ss,
  SmallCapsFont={Linux Libertine O},
  SmallCapsFeatures={Mapping=tex-text,Letters=SmallCaps},
]

\begin{document}

This is a ß

\textsc{This is a ß}

\end{document}

在此处输入图片描述

相关内容