![改变形状时改变数字字体特征](https://linux22.com/image/259532/%E6%94%B9%E5%8F%98%E5%BD%A2%E7%8A%B6%E6%97%B6%E6%94%B9%E5%8F%98%E6%95%B0%E5%AD%97%E5%AD%97%E4%BD%93%E7%89%B9%E5%BE%81.png)
我正在编写一个文档,主字体设置为旧数字,但我想在表格中使用“正常”样式。这可行,但某个表格中的一些数字是斜体的,不知何故我找不到更改这些字体功能的方法。
事实证明,该表格无关紧要,在普通文本中使用\itshape
或\em
或\textit{}
会产生相同的结果:
\documentclass[preview,border=2px,12pt]{standalone}
\usepackage{fontspec}
\setmainfont [Numbers = {Proportional,OldStyle}]{Linux Libertine O}
\begin{document}
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} {\itshape 1981987092183749280}
{
\addfontfeatures{Numbers={Lining,Monospaced}, ItalicFeatures={Numbers={Lining,Monospaced}}}
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} \itshape 1981987092183749280
}
\end{document}
知道我做错了什么吗?还是我遇到了错误?
答案1
使用 XeLaTeX 时我收到警告
*************************************************
* fontspec warning: "icu-feature-not-exist-in-font"
*
* OpenType feature 'Numbers=Lining,Monospaced' (+tnum) not available for font
* 'Linux Libertine O/BI' with script 'Latin' and language 'Default'.
*************************************************
这可能是造成这种情况的原因。我通过定义新的字体系列而不是动态添加功能获得了预期的结果:
\documentclass[varwidth,border=2pt,12pt]{standalone}
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont [Numbers = {Proportional,OldStyle}]{Linux Libertine O}
\newfontfamily{\libertinelf}{Linux Libertine O}
\begin{document}
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} {\itshape 1981987092183749280}
{\libertinelf
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} \itshape 1981987092183749280
}
\end{document}
答案2
Fontspec 在已经使用 Oldstyle 数字时会出现一些问题lnum
。tnum
解决此问题的最简单方法之一是使用最新的libertine
软件包:
\documentclass[preview,border=2pt,12pt]{standalone}
\usepackage{libertine}
\begin{document}
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} {\itshape 1981987092183749280}
\liningnums{%
\addfontfeature{Numbers = Monospaced}
2189 89283 98239 8098 2983 098023 \textit{1392843902984u29830} \itshape 1981987092183749280
}
\end{document}
等宽数字也可以使用(斜体数字除外):
答案3
使用 libertine.sty:
\usepackage{libertine}
\begin{document}
2189 89283 98239 8098 2983 098023 \textit{\libertineLF 1392 84390 29842 9830}
\end{document}