多语种中的 mathbf 不需要的尺度

多语种中的 mathbf 不需要的尺度

我使用 polyglossia 来生成用阿拉伯语编写的文档,即从右到左的模式。我使用命令选择主字体\setmainfont,并使用选项Scale=1.3获取字符的合适尾部。现在此选项与命令一起产生了\mathbf{}奇怪的效果,因此它似乎缩放了 mathbf 参数,并且与选项具有相同的效果\mbox{\bf }。我如何避免这种效果,以便在该选项内进行编译?

我给出了使用的文件:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setmainfont[Script=Arabic,Scale=1.3]{Arial}    % can use all fonts     % use or not the scale option

\begin{document}

$f(X)$ $f(\mathbf{X})$ $f(\mbox{\bf X})$

\end{document}

及其编译,使用以下scale选项:

在此处输入图片描述

另一种情况是,没有这个选项(但我需要它!),这是好的选择:

在此处输入图片描述

答案1

获得正确缩放的最佳方法是使用unicode-math并加载带有Scale=MatchLowercase选项的所有字体。我冒昧地用一组Khaled Hosny 的免费字体他是这里乃至全世界阿拉伯语和数学字体方面的顶级专家之一。Khaled Hosny 认为开罗的 Bulaq Press 是 Amiri 阿拉伯语字体的灵感来源。Libertinus 是 Philipp H. Poll 的 Linux Libertine 的扩展,我将让 Hosny 博士谈谈它是如何影响 Amiri 的拉丁字母的(小写字母 j 非常不同!),但他的 Amiri 和 Libertinus Math 配合得很好。

\documentclass[varwidth, preview, 12pt]{standalone}
\usepackage{polyglossia}
\usepackage{unicode-math}

\setdefaultlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}

\defaultfontfeatures{Scale=MatchLowercase}
\setmainfont{Libertinus Serif}[
  Scale=1.0,
  Ligatures={Common, TeX}]
\setsansfont{Libertinus Sans}[
  Ligatures={Common, TeX}]
\setmonofont{Libertinus Mono}[
  Ligatures=TeX]
\newfontfamily\arabicfont{Amiri}[
  Language=Arabic,
  Script=Arabic,
  Ligatures={Common, TeX}]
\setmathfont{Libertinus Math}

\begin{document}

\parbox{10em}{
الخط
\LRE{Amiri \textbf{Bold}}

\begin{english}
Libertinus Serif \textbf{Bold}
\end{english}

\LR{$f(X)$ $f(\mathbf{X})$ $f(\mbox{\bf X})$ $f(\symbfup{X})$}
}

\end{document}

Amiri/Libertinus 样本

我将所有文本设置在一个狭窄的框内,以便将图像双向文本放入该网站允许的宽度内。

$f(\symbfup{X})$我建议使用 来表示。unicode-math使用该包,\mathbf更适合数学模式中的单词,例如速度

更改字体

该示例是一个很好的模板,可以帮助您选择自己的字体,但如果您想坚持使用 Libertinus 系列,您可能需要使用该包,而不是手动设置所有内容:

\documentclass[varwidth, preview, 12pt]{standalone}
\usepackage{polyglossia}
\usepackage{unicode-math}

\setdefaultlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}

\usepackage{libertinus-otf}
\defaultfontfeatures{Scale=MatchLowercase}
\newfontfamily\arabicfont{Amiri}[
  Language=Arabic,
  Script=Arabic,
  Ligatures={Common, TeX}]

\begin{document}

\parbox{10em}{
الخط
\LRE{Amiri \textbf{Bold}}

\begin{english}
Libertinus Serif \textbf{Bold}
\end{english}

\LR{$f(X)$ $f(\mathbf{X})$ $f(\mbox{\bf X})$ $f(\symbfup{X})$}
}

\end{document}

您可以替换您选择的任何其他字体系列,但在这种情况下,请确保您的字体匹配。您可以通过添加其他命令将数学字母设置为与文本字体相同,例如:

\setmathfont[range=up]{Arial}
\setmathfont[range=it]{Arial Italic}
\setmathfont[range=bfup]{Arial Bold}
\setmathfont[range=bfit]{Arial Bold Italic}

确保将这些放在你的主文件之后\setmathfont

Scale=这里不需要选项,因为我之前声明了\defaultfontfeature{Scale=MatchLowercase}。(请注意,主字体将覆盖此选项以Scale=1.0保持其自然大小,并且文档中的所有其他字体都会缩放以匹配它。)

另请注意,unicode-math替换所有数学字母,包括\mathscr\mathcal等等\mathbb。您也可以单独设置这些。例如,要用STIX Two Math 中的版本替换\mathcal\mathbfcal(默认情况下与相同),您可以使用:\mathscr

\setmathfont[range={cal,bfcal},Scale=MatchUppercase]{STIX Two Math}

或者恢复默认设置\mathbb\mathbbit字母:

\setmathfont[range={bb, bbit}, Scale=MatchUppercase]{Latin Modern Math}

相关内容