OpenType 数学字体中的下标字形。它们在哪里?

OpenType 数学字体中的下标字形。它们在哪里?

这是这个问题

接受的答案告诉我,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 文档的奇怪而迂回的方法,但我发现,了解插槽和名称在某些奇怪的情况下偶尔会很有用。

相关内容