如何将字体文件的路径传递给包 unicode-math 的 \setmathfont 命令?

如何将字体文件的路径传递给包 unicode-math 的 \setmathfont 命令?

STIXTwoMath-Regular.otfSTIX 两个 Git 存储库,并将其另存为~/STIXTwoMath-Regular.otf

然后,我将以下 LaTeX 代码保存在文件中~/Hw2/Test.tex

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{../STIXTwoMath-Regular.otf}
\begin{document}
\end{document}

然后我在终端中执行了以下命令。

> cd ~/Hw2
> lualatex Test

编译失败,出现如下信息~/Hw2/Test.log

Package fontspec Info: Font family '../STIXTwoMath-Regular.otf(0)' created for
(fontspec)             font '../STIXTwoMath-Regular.otf' with options
(fontspec)             [Renderer=Basic,BoldItalicFont={},ItalicFont={},SmallCap
sFont={},Script=Math,FontAdjustment={\__um_luatex_copy_fontdimens:
(fontspec)             }].
(fontspec)              
(fontspec)              This font family consists of the following NFSS
(fontspec)             series/shapes:
(fontspec)              
(fontspec)             - 'normal' (m/n) with NFSS spec.:
(fontspec)             <->"[../STIXTwoMath-Regular.otf]:mode=base;script=math;l
anguage=dflt;"
(fontspec)             - 'small caps'  (m/sc) with NFSS spec.: 
(fontspec)             and font adjustment code:
(fontspec)             \__um_luatex_copy_fontdimens: 

LaTeX Font Info:    Trying to load font information for TU+.. on input line 6.
LaTeX Font Info:    No file TU...fd. on input line 6.


LaTeX Font Warning: Font shape `TU/../STIXTwoMath-Regular.otf(0)/m' undefined
(Font)              using `TU/lmr/m/n' instead on input line 6.

! Missing number, treated as zero.
<to be read again> 
n
l.6 \begin
        {document}
? 
! Emergency stop.
<to be read again> 
n
l.6 \begin
        {document}
End of file on the terminal!

问题

  1. 为什么编译失败?
  2. 我如何将字体文件\setmathfont的路径传递给命令STIXTwoMath-Regular.otf

进一步考虑

../STIXTwoMath-Regular.otf如果我写的不是STIXTwoMath-Regular.otf,编译将成功完成,但我想这可能是由于以下原因之一:

  1. 要么STIXTwoMath-Regular.otf是 TeXLive 安装的一部分,要么是操作系统字体目录的一部分,并且lualatex引擎在与 TeXLive 字体或操作系统字体关联的规范文件夹中找到此字体文件,

  2. 或者\setmathfont具有一些查找字体文件的内置方法,包括在活动目录的父目录中查找它们。

无论哪种情况,我都希望得到一个对我的问题的一般性回答,这将能够处理

  1. .otf之前没有保存在我的文件系统中的文件,
  2. \setmathfont以及不会自动搜索的路径。

答案1

非 OS 系统安装的字体可以通过多种方式引用:在 texmf 树或当前文件夹中,Path= 不是必需的;在其他地方,Path= 是必需的。

小路

平均能量损失

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

\defaultfontfeatures{Scale = MatchUppercase}
\setmathfont[Scale=0.97]{STIX Two Math}
\setmainfont[Scale=0.97]{STIX Two Text}


\setmathfontface{\texthiero}[
Path=C:/[long local path]/fonts/3/f/,
Extension=.otf,
]{Aegyptus} 
\setmathfontface{\textcurr}[Scale=2]{Maya.otf} 
\newfontface{\ttextcurr}[Scale=2,Colour=red]{Maya.otf} 

\begin{document}

texmf-tree font (log = .../texlive/2022/texmf-dist/fonts/opentype
/public/stix2-otf/STIXTwoMath-Regular.otf):

\[ x^{2}+y^{2}=z^{2}\]

Path= font (C:/.../.../.../fonts/3/f/):

{\Large
\[ \texthiero{

相关内容