我正在尝试使用主字体中的一些数学符号,如下所述: 如何在 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
。