粗体数学字体的特殊渲染输出

粗体数学字体的特殊渲染输出

粗体数学字体的渲染方式非常奇怪且丑陋,如下图所示。更具体地说,您可以看到粗体字母 w 和 x 看起来好像背后有阴影。我尝试了其他数学字体,结果相同,因此这不是字体特定的问题。问题是什么?我该如何解决?

在此处输入图片描述

平均能量损失

\documentclass{article}

\usepackage{geometry}

\usepackage{titlesec}

\usepackage{fontspec}

\setmainfont
[%
  UprightFont = *,
  BoldFont = *Bold,
  ItalicFont = *It,
  BoldItalicFont = *BoldIt
]{GFSArtemisia.otf}

\usepackage[greek, english]{babel}

\usepackage{amsmath}

\usepackage{bm}

\usepackage{unicode-math}

\usepackage{mathtools}

\begin{document}

Text
%
\begin{equation}
    \pmb{w}^{t+1} = \pmb{w}^{t} + a\cdot f(\pmb{w}^{t}\cdot \pmb{x}^{t})\cdot \pmb{x}^{t}
\end{equation}

\end{document}

答案1

您已经声明了一些粗体字体,但您使用的\pmb是“穷人的粗体”,它只是简单地覆盖打印三份字母,稍微偏移以在没有粗体字体可用时给出粗体的外观。

使用\symbf\mathbf等从数学字体中获取粗体字符。

答案2

大卫卡莱尔是正确的,但我认为用如何在数学模式下使用 Artemisia Bold Italic 的示例来补充他的答案会很有用:

\documentclass{article}
\usepackage[paperwidth=10cm]{geometry}
\usepackage{titlesec}
\usepackage{unicode-math}
\usepackage[greek, english]{babel}
\usepackage{mathtools}

\defaultfontfeatures{Scale = MatchLowercase}
\setmainfont{GFSArtemisia.otf}[Scale = 1.0]
\setmathfont{Libertinus Math}
\setmathfont[range=up,
             Script=Latin, script-features={}, sscript-features={}
            ]{GFS Artemisia Regular}
\setmathfont[range=it,
             Script=Latin, script-features={}, sscript-features={}
            ]{GFS Artemisia Italic}
\setmathfont[range=bfup,
             Script=Latin, script-features={}, sscript-features={}
            ]{GFS Artemisia Bold}
\setmathfont[range=bfit,
             Script=Latin, script-features={}, sscript-features={}
            ]{GFS Artemisia Bold Italic}

\begin{document}

Text
%
\begin{equation}
    \symbfit{w}^{t+1} =
       \symbfit{w}^{t}
       + a \cdot f\left(\symbfit{w}^{t} \cdot \symbfit{x}^{t}\right)
           \cdot \symbfit{x}^{t}
\end{equation}

\end{document}

Artemisia 字体示例

mathastext或包mathspec也可以工作,而且样板代码更少。(如果您愿意,至少可以删除Scriptscript-featuressscript-features行。它们的唯一目的是抑制无害的警告消息。)

我还删除了一些与 多余的软件包unicode-math。它会为您加载fontspecamsmath,并且有自己的\boldmath\mathbf\symbf命令,您应该使用这些命令来代替bm

如果您确实需要为没有粗体字体伪造粗体,则可以使用fontspec字体选项[FakeBold=1.2]或其他看起来最好的数字来实现。

相关内容