在一些 OpenType 字体(例如 XITS Math)中,有一些非 Unicode 字形。例如,“显示积分”字形具有与普通积分相同的代码点 (U+222B)。虽然大整数可以与 一起使用\displaystyle
,但如何直接使用它(如\symbol{...}
)?
XeLaTeX 和 LuaLaTeX 解决方案都受到欢迎。
更新:
以 XITS Math 为例。在 unicode 块的末尾,有很多名称为 的字形变体unixxxx.yyy
。xxxx
这里是代码点,而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}