我想在我的文档中使用专门设计的 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}
根据我的经验,光学尺寸的设计会比常规尺寸的半粗体略宽。不过对我来说,这个技巧已经足够好了。如果字体提供半粗体半扩展或类似功能,这可能会看起来更好,更接近光学尺寸变体。