使用,如果我设置 -- ,则 (和)LuaTeX
之外的任何数字的首位都会突然变成上标,与我使用的字体无关。在每种情况下,只有数字的最后一位是正常字体,首位是上标。$math$
siunitx
\num
\defaultfontfeatures[\rmfamily,\sffamily]{Fractions=On}
% -*- mode: latex; TeX-engine: luatex; coding: utf-8; -*-
\documentclass{scrartcl}
\PreventPackageFromLoading{fixltx2e}
\usepackage{siunitx}
\usepackage{luatextra}
\defaultfontfeatures[\rmfamily,\sffamily]{Fractions=On} % <-- that's it
\setmainfont{Linux Libertine O}
% \setmainfont{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmonofont{Libertinus Mono}
\begin{document}
blabla 6176 787347 125\footnote{bla 123} \num{10} \num{19827}
$1234 + 567 = 8910$
\medskip
\textsf{blabla 6176 787347 125\footnote{bla 123} \num{10} \num{19827}}
$\mathsf{1234 + 567 = 8910}$
\end{document}
答案1
OpenType 分数值功能不应全局启用,而应选择性地针对包含分数值的文本部分启用(某些字体尝试使其全局起作用,但由于这种行为很难通过 OpenType 功能实现,因此通常会存在缺陷):
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmonofont{Libertinus Mono}
\begin{document}
blabla 6176 787347 125\footnote{bla 123} 10 19827
{\addfontfeatures{Fractions=On} 1234/1234}
$1234 + 567 = 8910$
\medskip
\textsf{blabla 6176 787347 125\footnote{bla 123} 10 19827
{\addfontfeatures{Fractions=On} 1234/1234}}
$\mathsf{1234 + 567 = 8910}$
\end{document}
作为奖励,如果您在 XeTeX 1中使用分数斜线(U+2044),则分数(或分子和分母)功能将自动为其周围的数字序列激活:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmonofont{Libertinus Mono}
\begin{document}
blabla 6176 787347 125\footnote{bla 123} 10 19827 1234⁄1234
$1234 + 567 = 8910$
\medskip
\textsf{blabla 6176 787347 125\footnote{bla 123} 10 19827 1234⁄1234}
$\mathsf{1234 + 567 = 8910}$
\end{document}
1这实际上是 HarfBuzz 的一项功能,遵循 Unicode 建议,因此它可以在使用 HarfBuzz 的任何地方工作,例如在 Firefox 和 Google Chrome 中。