Fontspec——序数格式不正确

Fontspec——序数格式不正确

根据其手册,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 功能时,会生成此警告,这种情况有两种情况:

  1. 字体为 TrueType ( .ttf) 格式,而不是 OpenType ( .otf)。
  2. 字体的创建者没有包含该特定的 OpenType 功能。

就我个人而言,我从未在 OpenType 中见过 Times New Roman,因此我认为第一个适用于您的情况。

解决方案如下:

  1. 获取具有所需 OpenType 功能的字体的 OpenType 版本。
  2. 获取具有所需 OpenType 功能的 OpenType 格式的替代字体。
  3. 不要使用该功能。

因为你想要的功能很难找到,所以我建议使用选项 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,它看起来像这样:

特格泰尔梅斯

相关内容