这是这个问题。
接受的答案告诉我,OpenType 数学字体通常包含(在同一个字体文件中)用于脚本和脚本脚本大小的光学缩放字形。我在 Cambria 字体和 Latin Modern Math 中寻找过这些字形,但找不到。我尝试使用 Windows 字符映射应用程序,也尝试在 FontForge 中打开字体。没有运气。
有人能告诉我这些下标字符的代码点(十六进制索引)吗,以便我可以找到它们。
编辑
我看到 Unicode 包括
U+2099: LATIN SUBSCRIPT SMALL LETTER N
U+207F: SUPERSCRIPT LATIN SMALL LETTER N
但我读到过这些不应该用于数学。
答案1
Unicode 并不是访问字形的唯一方式。字形也有名称和索引号(“槽”)。对于脚本和脚本脚本,字形名称是通过添加st
和构建的sst
,您可以使用这些名称来查找槽和字形:(我将数学字体设置为主字体,以避免不得不与数学代码作斗争)。
\documentclass{article}
\usepackage{fontspec,ifluatex}
\setmainfont{Latin Modern Math}
\ifluatex
\usepackage{luacode}
\begin{luacode}
documentdata = documentdata or { }
local stringformat = string.format
local texsprint = tex.sprint
local slot_of_name = luaotfload.aux.slot_of_name
documentdata.fontchar = function (chr)
local chr = slot_of_name(font.current(), chr, false)
if chr and type(chr) == "number" then
texsprint
(stringformat ([[\char"%X]], chr))
end
end
\end{luacode}
\fi
\def\fontchar#1{\ifluatex\directlua{documentdata.fontchar "#1"}\else\XeTeXglyph\the\XeTeXglyphindex "#1"\fi}
\begin{document}
\fontchar{two} \fontchar{two.st} \fontchar{two.sts}
\end{document}
答案2
下表显示了我试图获取的 Latin Modern Math 字体中“数学斜体”字母的信息。第一列显示字形占用的插槽,第二列显示字形的名称。如 Ulrike 的回答中所述,您可以通过在这些名称后附加“.st”来获取相应“脚本”大小字母的名称。因此,例如,脚本大小“n”的名称为“u1D45B.st”。类似地,脚本-脚本大小的字形名称是通过附加“.sts”形成的。
除了“h”这个奇怪的情况外,该名称实际上会告诉您该字符的 Unicode 代码点。因此,例如“n”的代码点为 1D45B。这允许您在 Windows 字符映射应用程序中轻松找到该字符,或使用 Alt+X 技巧将其包含在 MS Word 文档中。脚本大小的字符未编码(它们没有 Unicode 代码点)。
给定字形的名称,您可以在 FontForge 中轻松找到它。
名称或“槽位”编号可用于将字符输入 TeX 文档。例如,您可以通过键入以下内容插入脚本大小 $n$
\XeTeXglyph\the\XeTeXglyphindex u1D45B.st
事实上,脚本大小的“$n$”位于拉丁现代数学中的 1417 号位置,因此您也可以使用更直接的方式插入它
\XeTeXglyph 1417
显然,这是一种将“n”放入 TeX 文档的奇怪而迂回的方法,但我发现,了解插槽和名称在某些奇怪的情况下偶尔会很有用。