![使用 luatex 替换 unicode-math 中的单个代码点](https://linux22.com/image/353374/%E4%BD%BF%E7%94%A8%20luatex%20%E6%9B%BF%E6%8D%A2%20unicode-math%20%E4%B8%AD%E7%9A%84%E5%8D%95%E4%B8%AA%E4%BB%A3%E7%A0%81%E7%82%B9.png)
我想替换数学字体中的特定字形。使用预定义范围时效果很好:
\setmathfont[math-style=TeX, Scale=\mathscale, Path=/u/val/Documents/thesis/fonts/xits/, Extension=.otf, StylisticSet={8}]{xits-math}
\setmathfont[range=it/Latin, Scale=\mathscale, Path=/u/val/Documents/thesis/fonts/EB_Garamond/, Extension=.otf]{EBGaramond12-Italic}
但是,下面的方法不起作用:
\setmathfont[math-style=TeX, Scale=\mathscale, Path=/u/val/Documents/thesis/fonts/xits/, Extension=.otf, StylisticSet={8}]{xits-math}
\setmathfont[range={"1D434-"1D44D}, Scale=\mathscale, Path=/u/val/Documents/thesis/fonts/EB_Garamond/, Extension=.otf]{EBGaramond12-Italic}
我只是用代码点替换了“range=it/Latin”。“it/Latin”范围似乎有额外的效果。
如何获得“range=it/Latin”的效果并结合仅选择特定字形的自由?
我正在使用 unicode-math 0.8b 和 LuaTex beta-0.80.0(TeX Live 2015/TeX Live for SUSE Linux)编辑:不适用于 unicode-math 0.8d 和 LuaTex 0.95.0 (TeX Live 2016)
注意:我还尝试了各种不同的范围表达式,但它们都对输出没有任何影响:
range="41-"5A
range={"41-"5A->"1D434-"1D44D}
range={"1D434-"1D44D->"41-"5A}
range=it/{"1D434-"1D44D}
range=it/{"41-"5A}
range={119860-119885}
以及上述的几种组合……
编辑:
MWE 来说明这个问题:
\documentclass{minimal}
\usepackage{unicode-math}
\setmainfont{Kurier}
\setmathfont{xits}
\setmathfont{KurierItalic}[range={"1D434-"1D44D}]
% \setmathfont{KurierItalic}[range={it/Latin}]
\begin{document}
\textit{ABCDEFabcdef}
$ABCDEFabcdef$
\end{document}
当包含当前注释掉的行时,这会起作用(文本和数学模式具有相同的大写字母),但上面的行没有任何效果。