我使用带有 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}