将 OpenType 高级图形与 siunitx 结合使用

将 OpenType 高级图形与 siunitx 结合使用

我想在我的文档中使用专门设计的 OpenType 上标数字。使用 做到这一点fontspec很容易,但我无法siunitx进行更改,并且该包没有提供适合上标数字字体的设置。如何做到这一点?

该解决方案仍应允许siunitx根据环境更改使用的字体,如我的示例所示。

我在这里查看了约瑟夫的回答:https://tex.stackexchange.com/a/8992/75284(更改number-text-rm),但该解决方案仅限于一个字体系列,即命令中选择的字体系列\newfontfamily,而我需要更多的灵活性。此外,OpenType 高级图形不需要任何重新定位,它们默认具有正确的大小和位置。

\documentclass{article}

\usepackage{fontspec}

% choose an OpenType font with superior figures
\setmainfont{Cambria}

% sans-serif font with OpenType superior figures
\setsansfont{Segoe UI}

\usepackage[detect-all]{siunitx}

% custom superscript with the OpenType feature
\newcommand\xsup[1]{{\addfontfeature{VerticalPosition=Superior}#1}}

\begin{document}
2\xsup{21} \si{\meter\squared} 2\textsuperscript{21}

\sffamily % additional test for sans-serif
2\xsup{21} \si{\meter\squared} 2\textsuperscript{21}
\end{document}

截屏

答案1

很明显,允许使用 OpenType 高级数字siunitx需要将其添加为新功能。与此同时,我尝试使用稍微粗一点的字体变体来模拟高级数字。我的示例使用时代 LT Pro新哈斯 Unica Pro,均为商业字体。请使用您自己收藏的半粗体/中等粗细字体来编写示例。

\documentclass[12pt]{article}

\usepackage{fontspec}

\setmainfont[
    UprightFont = {*-Roman},
    UprightFeatures={SizeFeatures={{Size={-11},Font=*-Semibold},{Size={-15},Font=*-Roman}}} % comment this line to see effect
]{TimesLTPro} % choose font with semibold/medium

\setsansfont[
    UprightFont = {*-Regular},
    UprightFeatures={SizeFeatures={{Size={-11},Font=*-Medium},{Size={-15},Font=*-Regular}}}, % comment this line to see difference
]{NeueHaasUnicaPro} % choose font with semibold/medium

\usepackage[detect-family, mode=text]{siunitx}

\begin{document}
          m\textsuperscript{−2} \si{\per\meter\squared}

\sffamily m\textsuperscript{−2} \si{\per\meter\squared}
\end{document}

还有一个 GIF(手动对齐)来显示差异: 例子

根据我的经验,光学尺寸的设计会比常规尺寸的半粗体略宽。不过对我来说,这个技巧已经足够好了。如果字体提供半粗体半扩展或类似功能,这可能会看起来更好,更接近光学尺寸变体。

相关内容