更改 Xelatex 中主字体的数字大小

更改 Xelatex 中主字体的数字大小

在 Xelatex 中,我可以使用以下方法更改数学模式下数字的大小:

\setmathsfont(Digits)[Scale=0.9]{Bodoni}

是否有类似的程序可以对主字体的数字执行相同的操作?我尝试了显而易见的行(与上一个类似,但使用setmainfont),但没有成功。任何帮助都将不胜感激。如果这个问题是在另一个帖子中提出的,我很抱歉。我找不到它。谢谢。

答案1

数学数字位于数学字母数字符号 unicode 块中(因此:unicode-math包命令和选项以及数千个符号);文本数字与标点符号和字母一起位于基本拉丁 unicode 块中,因此对于所问的问题的回答是“否(还没有)”。

但 ...


... 你可以做:

方法(1)

您可以定义字体,然后手动将其应用于文本数字。

定义\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]加上用法abc{\fdigits 123}得出:

手动方法

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]

\begin{document}

abc123

abc{\fdigits 123}

\end{document}

方法(2)

自动应用缩放字体。

使用 Xe(La)TeX,您可以使用它的interchartoks功能:

自动过渡

平均能量损失

\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontfamily\fdigits{Noto Serif}[Scale=0.9,Colour=blue]
\newfontfamily\fdigitsu{Noto Serif}[Scale=0.9,Colour=red]

\XeTeXinterchartokenstate = 1
\newXeTeXintercharclass \mychardigits
\XeTeXcharclass `\0 \mychardigits
\XeTeXcharclass `\1 \mychardigits
\XeTeXcharclass `\2 \mychardigits
\XeTeXcharclass `\3 \mychardigits
\XeTeXcharclass `\4 \mychardigits
\XeTeXcharclass `\5 \mychardigits
\XeTeXcharclass `\6 \mychardigits
\XeTeXcharclass `\7 \mychardigits
\XeTeXcharclass `\8 \mychardigits
\XeTeXcharclass `\9 \mychardigits

% between " " and "digits":
\XeTeXinterchartoks 4095 \mychardigits = {\bgroup\fdigitsu}
\XeTeXinterchartoks \mychardigits 4095 = {\egroup}
% between <most chars> and "digits":
\XeTeXinterchartoks 0 \mychardigits = {\bgroup\fdigitsu}
\XeTeXinterchartoks \mychardigits 0 = {\egroup}


\begin{document}

abc123abc

abc{\fdigits 123}

xyz 456 xyz
\end{document}

方法(3)- 一点 .sty 编码

ucharclasses.sty包中(先复制一份,保存在本地,也许重命名),您可以将 BasicLatin unicode 块拆分为数字、字母、标点符号小块;添加相关的包选项;然后在序言中定义块之间的转换(或块与单词边界之间的转换)。

相关内容