如何使用非 Unicode 字形

如何使用非 Unicode 字形

在一些 OpenType 字体(例如 XITS Math)中,有一些非 Unicode 字形。例如,“显示积分”字形具有与普通积分相同的代码点 (U+222B)。虽然大整数可以与 一起使用\displaystyle,但如何直接使用它(如\symbol{...})?

XeLaTeX 和 LuaLaTeX 解决方案都受到欢迎。

更新:

以 XITS Math 为例。在 unicode 块的末尾,有很多名称为 的字形变体unixxxx.yyyxxxx这里是代码点,而yyy是变体名称。例如,uni222B.display是 unicode 值为 -1 且字形索引为 3584 (0xE00) 的大整数。显然,使用它的 unicode 值\symbol{-1}不会给出正确的符号。

当然,使用 之类的命令\displaystyle,可以轻松访问大积分符号。但是,我如何使用其他符号,例如u1D49C.cal(脚本 A)和uni221D.rtlm(从右到左形成比例)?

虽然使用这些符号有特定的技巧,但统一访问所有这些符号也非常有用(例如创建字体表)。

答案1

这是 xetex 版本 luaotfload 可以做类似的事情

在此处输入图片描述

\documentclass{article}


\font\xm="XITS Math/OT:script=math;language=DFLT;" at 20pt


\begin{document}

\xm 
^^^^222b 
\XeTeXglyph\XeTeXglyphindex "uni222B" 
\XeTeXglyph\XeTeXglyphindex "uni222B.up" 
\XeTeXglyph\XeTeXglyphindex "uni222B.small" 
\XeTeXglyph\XeTeXglyphindex "uni222B.display" 
\XeTeXglyph 3584


\end{document}

您可以使用 fontforge 或类似工具查看字体的 MATH 表来查看变体字形名称。

答案2

无论是在 XeLaTeX 还是 LuaLaTeX 下,你只需要写入\char"222B。积分符号的大小取决于它是出现在文本模式、文本样式数学模式还是显示样式数学模式下。

在此处输入图片描述

%% Compile with either XeLaTeX or LuaLaTeX
\documentclass{article}
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}

\begin{document}
\char"222B{} $\char"222B$ $\displaystyle \char"222B$
\end{document}

答案3

LuaTeX 版本:

\documentclass{article}

\font\xm="XITS Math/OT:script=math;language=DFLT;" at 20pt

\newcommand\LuaTeXglyphindex{\directlua{
  tex.sprint(0, font.getfont(font.current()).resources.unicodes[token.scan_string()])
}}
\begin{document}

\xm 
\char"222B 
\char\LuaTeXglyphindex uni222B.small
\char\LuaTeXglyphindex uni222B.display
\char\LuaTeXglyphindex uni222B.up
\char\LuaTeXglyphindex uni222B.up.display
\char\LuaTeXglyphindex uni222B.rtlm
\char\LuaTeXglyphindex uni222B.rtlm.display

\end{document}

在此处输入图片描述

相关内容