我在使小型大写字母在我的(XeLaTeX 编译的)文档中正确呈现时遇到了困难。我想使用不同于默认文档字体的字体和小型大写字母来呈现特定级别的标题。对于我的情况来说,棘手的部分是我正在使用土耳其语,即使对于小型大写字母,它也需要正确区分 i→İ 和 ı→I。
工作原理如下:
- 设置文档语言
- 将主文档字体设置为正确支持小型大写的字体。
- 用于
\scshape
切换到小型大写字母
以下是不起作用的内容:
- 设置文档语言
- 将主文档字体设置为我实际想要使用的字体
- 添加其他字体
- 对于任何需要使用小型大写字母的情况,请切换到该字体
下面是一个可以说明该问题的 MWE:
\documentclass[20pt]{scrartcl}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\setmainfont{Libertine Serif}
\newfontface\reffont{Libertine Serif}[Letters=SmallCaps]
\begin{document}
Elçilerin İşleri
{\scshape Elçilerin İşleri}
{\reffont Elçilerin İşleri}
\end{document}
这会产生类似这样的结果:
我的问题是,我实际上需要第二种格式才能工作,因为我想将我的正文字体设置为深红色。
\setmainfont{Crimson}
当我这样做时,上面的例子如下所示:
当然,第二个实例预计不会起作用,因为该字体没有好的小型大写字母字形。但第二个示例需要起作用。
我尝试了多种组合,包括使用\scshape
open-type 字体功能、将字体设置为内联字体而不是提前设置字体等。在任何组合中,我都无法将主字体设置为 Crimson,并且仍然使用 Libertine Serif 和土耳其小写字母设置一些标题。我遗漏了什么?
答案1
我不太确定我是否理解了你的问题。但我认为你只是在你的 中缺少语言设置\reffont
:
\documentclass[20pt]{scrartcl}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{turkish}
\setmainfont{Linux Libertine O}
\newfontface\reffont{Linux Libertine O}[Language=Turkish,Letters=SmallCaps]
\begin{document}
Elçilerin İşleri
{\scshape Elçilerin İşleri}
{\reffont Elçilerin İşleri}
\end{document}