无法使用 Junicode 和 fontspec 切换到内衬数字

无法使用 Junicode 和 fontspec 切换到内衬数字

我使用带有 fontspec 包的 Junicode 字体,并将 OldStyle 数字设置为默认。OS 数字工作正常,但如果我尝试切换到文本中间的内衬数字,它们将不会打印,相反,LaTeX 默认为 oldstyle。我收到以下警告消息:

软件包 fontspec 警告:OpenType 功能“Numbers=Uppercase”(lnum)不适用于带有脚本“CustomDefault”和语言“Default”的字体“Junicode”。

但是,根据 Junicode 的文档,它确实同时具有内衬数字和旧样式。所以我不确定为什么 LaTeX 找不到它。

以下是 MWE:

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Junicode}[Numbers=OldStyle]

\begin{document}

123456789

\liningnums{123456789}

\addfontfeature{Numbers=Lining} 123456789

\end{document}

将打印以下内容:

打印的数字。

如何使用 Junicode 和 fontespec 切换到数字对齐?顺便说一下,我正在使用 LuaLaTeX。

答案1

Junicode没有用于内衬数字 ( lnum) 的字体功能,它们是默认的。只有一个用于旧式数字 ( onum) 的功能,您必须删除它才能获得内衬数字(如果旧式数字是默认的)。如果您想使用,\liningnums您也必须修补它:

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Junicode}[Numbers=OldStyle]

\RenewDocumentCommand \liningnums {m}
{
  { \addfontfeature{RawFeature=-onum} #1 }
}

\begin{document}

123456789

\liningnums{123456789}

\addfontfeature{RawFeature=-onum} 123456789

\end{document}

在此处输入图片描述

答案2

..Off您可以使用或删除旧式功能..Reset

\documentclass[12pt]{article}

\usepackage{fontspec}
\setmainfont{Junicode}[Numbers=OldStyle]

\begin{document}

123456789

\addfontfeature{Numbers=OldStyleOff} 123456789

\addfontfeature{Numbers=OldStyleReset} 123456789
\end{document}

在此处输入图片描述

相关内容