mathbf 中的一些粗体字符被带有 unicode-math 的主数学字体覆盖

mathbf 中的一些粗体字符被带有 unicode-math 的主数学字体覆盖

我想在环境FiraMath-Bold中自动使用字体mathbf,但某些字符和符号(如平方根、等号和括号)似乎没有以粗体显示,而是被主数学字体覆盖。我目前正在使用,但如果它能解决问题,unicode-math我愿意使用它。mathspec

\documentclass{minimal}
\usepackage{unicode-math}

\setmainfont[
    Extension      = .otf,
    UprightFont    = FiraMath-Light,
    BoldFont       = FiraMath-Bold
]{FiraMath}
\setmathfont[Extension = .otf]{FiraMath-Light}
\setmathfontface\mathbf[Extension = .otf]{FiraMath-Bold}
\setmathfont[version = bold, Extension = .otf]{FiraMath-Bold}

\begin{document}
    \textbf{Example:}
    
    Square root in light weight inside mathbf a enviroment:
    \begin{equation}
        \mathbf{\Delta = \sqrt{b^2 - 4ac}}
    \end{equation}
    
    Expected behaviour:
    \begin{equation}
        \mathversion{bold} \Delta = \sqrt{b^2 - 4ac}
    \end{equation}
\end{document}

输出

答案1

您需要\boldsymbol命令(来自amsbsyunicode-math间接加载)。这将设置 中的内容\mathversion{bold}。该\setmathfont[range=bfup]命令将更改命令\symbfup,但不会更改\mathbf\boldmath

顺便说一句,你不想设置\mathbf为数学字体。这样做的方法是

\setmathrm{FiraSans}[
  UprightFont=*-Light,
  BoldFont=*-Bold,
  ItalicFont=*-LightItalic,
  BoldItalicFont=*BoldItalic,
  Extension=.otf]

这将更改\mathrm\mathbf和。默认情况下,这些设置为主字体系列,因此如果您想要不同的字体系列\mathit\mathbfit则只需更改它们。

这些字母适用于数学模式中的单词,而\symup\symbfup等适用于独立的数学符号。您将看到\mathrm{iff}(解释为应有连字符的单词)和之间存在巨大差异\symup{iff}(解释为常数的乘积)之间存在巨大差异FF)。

一位 MWE 表示:

\documentclass{article}
\usepackage[paperwidth=10cm]{geometry} % Format a MWE for TeX.SX
\usepackage{unicode-math}

\setmainfont{FiraSans}
\setmathfont[Extension = .otf]{FiraMath-Regular}
\setmathfont[version = bold, FakeBold=1.5, Extension = .otf]{FiraMath-Regular}
\setboldmathrm{FiraSans}[
  UprightFont=*-Bold,
  BoldFont=*-ExtraBold,
  ItalicFont=*-BoldItalic,
  BoldItalicFont=*-ExtraBoldItalic,
  Extension=.otf]

\begin{document}
    \textbf{Example:}
    
     This \textbf{should} work for you:
    \begin{equation}
        \boldsymbol{\Delta = \sqrt{b^2 - 4ac}}
    \end{equation}
    
    Expected behaviour:
    \begin{equation}
        \mathversion{bold} \Delta = \sqrt{b^2 - 4ac}
    \end{equation}

  Math alphabets in regular math:
  \mathversion{normal}
  \[ \mathrm{mathrm} \; \mathit{mathit} \; \mathbf{mathbf} \; \mathbfit{mathbfit}
  \]

  Math alphabets in bold math:
  \begingroup\mathversion{bold}
  \[ \mathrm{mathrm} \; \mathit{mathit} \; \mathbf{mathbf} \; \mathbfit{mathbfit}
  \]
  \endgroup
\end{document}

Fira 示例

除了 Regular 以外,我没有其他重量的 Fira Math,所以我FakeBold在这里替换了。

答案2

\mathbf并不是正确的做法,因为它只对字母起作用。如果你想让它对字母起作用,\Delta你需要\symbf

您可以定义一个环境,使一切 \boldmath

\documentclass{article}
\usepackage{unicode-math}

\setmainfont{FiraSans}[
  Extension      = .otf,
  UprightFont    = *-Light,
  BoldFont       = *-Bold,
]
\setmathfont{FiraMath-Regular}[
  Extension = .otf
]
\setmathfont{FiraMath-Bold}[
  version = bold,
  Extension = .otf,
]

\NewDocumentEnvironment{makebold}{m}
 {\boldmath\csname #1\endcsname}
 {\csname end#1\endcsname}

\begin{document}

\textbf{Example:}
    
Square root in light weight inside mathbf a enviroment:
\begin{equation}
  \symbf{\Delta = \sqrt{b^2 - 4ac}}
\end{equation}
    
Expected behaviour:
\begin{makebold}{equation}
  \Delta = \sqrt{b^2 - 4ac}
\end{makebold}

\begin{makebold}{align}
  \Delta &= \sqrt{b^2 - 4ac} \\
  \Delta &= \sqrt{b^2 - 4ac}
\end{makebold}

\end{document}

平方根没有出现,但这似乎是数学字体(测试版)的问题。

在此处输入图片描述

相关内容