根据其手册,Fontspec 包含一个选项
[VerticalPosition=Ordinal]
用于将数字(1、2、3)后面的字母设置为上标。但是,当我尝试使用该选项时,它不起作用。文档编译时字母不变,控制台显示
Fontspec 软件包警告:
OpenType 功能“VerticalPosition=Ordinal”不适用于字体“Times New Roman”等。
有谁知道如何解决这一问题?
%preamble
\documentclass[symmetric]{tufte-handout}
\usepackage[LY1]{fontenc}
\usepackage{fontspec}
\usepackage{xltxtra}
\usepackage{lettrine}
\defaultfontfeatures{Mapping=tex-text}
\setromanfont{Times New Roman}
\setsansfont{Gill Sans}
\setmonofont{Monaco}
\fontspec[VerticalPosition=Ordinal]{Times New Roman}
\begin{document}
1st 2nd 3rd
\end{document}
答案1
当字体(例如 Times New Roman)不支持您想要的 OpenType 功能时,会生成此警告,这种情况有两种情况:
- 字体为 TrueType (
.ttf
) 格式,而不是 OpenType (.otf
)。 - 字体的创建者没有包含该特定的 OpenType 功能。
就我个人而言,我从未在 OpenType 中见过 Times New Roman,因此我认为第一个适用于您的情况。
解决方案如下:
- 获取具有所需 OpenType 功能的字体的 OpenType 版本。
- 获取具有所需 OpenType 功能的 OpenType 格式的替代字体。
- 不要使用该功能。
因为你想要的功能很难找到,所以我建议使用选项 3。它需要更多工作,但至少它确实有效:
\documentclass[symmetric]{tufte-handout}
\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}
\setmainfont{Times New Roman}
\begin{document}
1\textsuperscript{st} 2\textsuperscript{nd} 3\textsuperscript{rd}
\end{document}
结果:
它不会抱怨 Small-caps 不可用。我建议您使用免费的 OpenType 替代品,例如 TeX Gyre Termes,它看起来像这样: