从 lualatex 中的主字体中获取数学符号

从 lualatex 中的主字体中获取数学符号

我正在尝试使用主字体中的一些数学符号,如下所述: 如何在 XeLaTeX 的所有地方(包括数学模式)设置字体?(我正在使用 lualatex。)

(如果有更好的方法,我就不必使用该方法。)

但是,我的主要字体设置很复杂,主要是为了适应不同文件中的常规、斜体、粗体等字体。不同的光学尺寸也有不同的文件。SourceSerif4 有 60 个 .otf 文件!

下面我有一个 MWE,它只使用了 60 个中的 4 个:两种光学尺寸的常规和斜体。

我用 定义“myfont” \defaultfontfeatures,然后用 将其设置为主字体\setmainfont{myfont},一切运行良好。

但我无法对 执行相同操作\setmathfont{myfont}。我收到错误:

! Package fontspec Error: The font "myfont" cannot be found.

\setmathfont{SourceSerif4-Regular}如果我使用而不是,所有这些都会起作用myfont。但这样我就会失去光学尺寸选择。

抱歉,我不知道如何使用 Texlive 自带的字体来重现这个问题(尽管 SourceSerif4 在这里是免费的:https://github.com/adobe-fonts/source-serif

有没有办法让我在数学中使用 SourceSerif4 字体?我实际上不打算做太多数学运算,我主要想要素数符号、+、- 和 =。(以及数字和字母)

梅威瑟:

\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\defaultfontfeatures[myfont]{
  Path        = /Users/ded/Library/Fonts/,
  Numbers     = {Proportional,OldStyle},
  UprightFont = SourceSerif4-Regular ,
  UprightFeatures={
    SizeFeatures={
      {Size={-9.5}, Font=SourceSerif4SmText-Regular},
      {Size={9.5-}, Font=SourceSerif4-Regular},
    },
  },
  ItalicFont = SourceSerif4-It ,
  ItalicFeatures={
    SizeFeatures={
      {Size={-9.5}, Font=SourceSerif4SmText-It,
                    SmallCapsFont=SourceSerif4SmText-Regular},
      {Size={9.5-}, Font=SourceSerif4-It,
                    SmallCapsFont=SourceSerif4-Regular},
    },
    SmallCapsFeatures={Letters=SmallCaps, FakeSlant=0.2},
  },
  Ligatures = TeX ,
  Extension = .otf
}
\setmainfont{myfont}
\setmathfont[slash-delimiter=frac]{latinmodern-math.otf}
\setmathfont[range={"0000-"FFFF}]{myfont}                 % error is here
\begin{document}
The quick brown fox jumps over the lazy dog.
$2 + 2 = 4$
\end{document}

答案1

您没有说什么不起作用,而是[range={"0000-"FFFF}说错了。这将用没有 OpenType 数学表的字体覆盖整个基本多语言平面。

您几乎肯定希望使用\setmathfont{My Font italic}[range=it]斜体数学变量,或[range=up]用于直立、bfup粗体直立和bfit粗体斜体。(要在数学模式下默认使用直立字体,请unicode-math使用该[math-style=upright]选项加载。)

您可能需要添加斜体字体的字体选项,例如视觉尺寸。可以将它们作为选项与范围一起添加,也可以使用\defaultfontfeatures{My Font Italic}

更新

根据您的评论,您想要类似(未经测试)的东西

\setmathfont{SourceSerif4-It}[
  range=it,
  SizeFeatures={
    {Size={-9.5}, Font=SourceSerif4SmText-It},
    {Size={9.5-}, Font=SourceSerif4-It}
  },
  Extension=.otf]

其他选项与数学模式无关。数学变量的默认字体是\symit,而不是直立的。如果您还想使用\symup\usepackage[math-style=upright]{unicode-math},则需要为 声明相应的命令range=up。如果您对向量使用粗体,则可能还需要为range=bfit或设置命令range=bfup

相关内容