数学字体参数在哪里?

数学字体参数在哪里?

我一直在研究在数学模式下渲染公式所使用的算法。我希望能够复制其中的一些功能,因此我开始寻找字体所需的不同参数。这些额外的数学字体参数在第 477 页进行了讨论书籍

例如运行tftopl cmbsy10.tfm,我能够提取此特定字体的额外参数:

(FONTDIMEN
   (SLANT R 0.25)
   (SPACE R 0.0)
   (STRETCH R 0.0)
   (SHRINK R 0.0)
   (XHEIGHT R 0.430555)
   (QUAD R 1.000003)
   (EXTRASPACE R 0.0)
   (NUM1 R 0.676508)
   (NUM2 R 0.393732)
   (NUM3 R 0.443731)
   (DENOM1 R 0.685951)
   (DENOM2 R 0.344841)
   (SUP1 R 0.412892)
   (SUP2 R 0.362892)
   (SUP3 R 0.288889)
   (SUB1 R 0.15)
   (SUB2 R 0.247217)
   (SUPDROP R 0.386108)
   (SUBDROP R 0.05)
   (DELIM1 R 2.389999)
   (DELIM2 R 1.01)
   (AXISHEIGHT R 0.25)
   )

但是,我在任何 STIX 字体 tfms 或任何 AMS 字体中都找不到这些参数。每个人都使用这些相同的参数吗(可能按设计尺寸缩放)?某些字体是否可能将这些参数存储在其他地方,或者可能在 LaTeX 中修改它们?我无法找到这些问题的任何答案。

答案1

TeXbook 附录 G 中描述的参数取自数学系列 2 和 3 中的字体。如果 (子) 公式以显示或文本样式排版,则值取自\textfont2\textfont3;脚本和 scriptscript 样式使用\scriptfont2, \scriptfont3,\scriptscriptfont2 and\scriptscriptfont3`。

将使用公式末尾的当前字体。

stix您可以通过以下输入查看使用了哪些内容

\documentclass{article}
\usepackage{stix}

\begin{document}

$a$ \expandafter\show\the\textfont2 \expandafter\show\the\textfont3

\stop

它将显示在终端上(按两次回车键)

> \LS1/stixscr/m/n/10=select font stix-mathscr.
<inserted text> \LS1/stixscr/m/n/10 

l.6 $a$ \expandafter\show\the\textfont2 
                                        \expandafter\show\the\textfont3
? 
> \LS2/stixex/m/n/10=select font stix-mathex.
<inserted text> \LS2/stixex/m/n/10 

l.6 ...e\textfont2 \expandafter\show\the\textfont3

? 

我们需要排版一个公式,因为在 LaTeX 中数学字体系列只是在最后一刻设置的,以便在同一个文档中允许不同的大小。

如果我们这样做tftopl stix-mathscr,我们得到

(FAMILY STIXMATHSCRIPT)
(FACE F MRR)
(CODINGSCHEME STIXMATHSCR)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 7425717650)
(SEVENBITSAFEFLAG TRUE)
(FONTDIMEN
   (SLANT R 0.0)
   (SPACE R 0.0)
   (STRETCH R 0.0)
   (SHRINK R 0.0)
   (XHEIGHT R 0.45)
   (QUAD R 1.0)
   (EXTRASPACE R 0.0)
   (PARAMETER D 8 R 0.58)
   (PARAMETER D 9 R 0.48)
   (PARAMETER D 10 R 0.48)
   (PARAMETER D 11 R 0.7)
   (PARAMETER D 12 R 0.48)
   (PARAMETER D 13 R 0.4)
   (PARAMETER D 14 R 0.35)
   (PARAMETER D 15 R 0.275)
   (PARAMETER D 16 R 0.25)
   (PARAMETER D 17 R 0.35)
   (PARAMETER D 18 R 0.375)
   (PARAMETER D 19 R 0.05)
   (PARAMETER D 20 R 2.4)
   (PARAMETER D 21 R 1.0)
   (PARAMETER D 22 R 0.25)
   )

tftopl stix-mathex给出

(FAMILY STIXMATHEXTENSIONS)
(FACE F MRR)
(CODINGSCHEME STIXMATHEX)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 7636115355)
(SEVENBITSAFEFLAG TRUE)
(FONTDIMEN
   (SLANT R 0.0)
   (SPACE R 0.0)
   (STRETCH R 0.0)
   (SHRINK R 0.0)
   (XHEIGHT R 0.45)
   (QUAD R 1.0)
   (EXTRASPACE R 0.0)
   (PARAMETER D 8 R 0.066)
   (PARAMETER D 9 R 0.15)
   (PARAMETER D 10 R 0.15)
   (PARAMETER D 11 R 0.3)
   (PARAMETER D 12 R 0.6)
   (PARAMETER D 13 R 0.1)
   )

这些字体是可扩展的,因此对于脚本和脚本样式,您只需缩放值即可。

答案2

我必须发布答案,因为 600 个字符不够。正如 DC 已经指出的那样(参见评论),您可能误解了数学排版的工作原理:我将尝试为您提供简短(且过于简单!)的解释。

没有“字体是排版公式的常用字体之一:实际上,每个公式可以同时使用几种字体,而且通常都会使用几种字体。按照惯例(或多或少),每个公式至少有四种字体可用,每种字体有三种不同的大小:一种用于“主级”符号,一种用于下标,第三种用于第一级以下的所有下标级。在TeXbook中,这四种字体被称为“系列”,编号从 0 到 3:在 plain TeX 的设置中,以及在 LaTeX 的默认设置中,系列 0 对应于cmr,系列 1 对应于cmmi,系列 2 对应于cmsy,系列 3 对应于cmex。在使用 NFSS(新字体选择方案)的 LaTeX 中,术语有所不同且更加抽象,但概念完全相同:

  • 0 号家庭对应于operators 数学组,除其他内容外,还提供十位数字的字符以及运算符名称,如“log”,“sin”,“lim”等;

  • 系列 1 对应于letters数学组,用于诸如“X”,“”,““…;

  • 家庭 2 对应于symbols数学组,从中取用“∩”、“∪”或“∈”等字符;

  • 系列 3 对应于largesymbols数学组,其中包括“∑”之类的字符(两种大小)和各种不断增长的分隔符。

不过,下面我们将坚持使用TeXbook。而这三种尺寸则由三个前缀\textfont\scripfont和来区分\scriptscriptfont;例如,\textfont1是主尺寸中变量(字母)使用的字体,\scriptfont0是第一级下标中出现的数字和运算符名称使用的字体,\scriptscriptfont2是第二级或更高级下标中出现的符号(如“∩”)使用的字体。让我们举一个典型的例子:给定源代码

$x_{A_{0}\cup B_{i}}$

这 ”X” 将会在\textfont1, “A”和“” 将在 中\scriptfont1,“0” 将在 中\scripscriptfont0,“∩” 将在 中\scriptfont2,而“” 将位于 中\scriptscriptfont1。再举一个例子,(内联)公式

$\lim_{x\to0} \frac{\sin x}{x}$

将被排版如下(回想一下,分数的分子和分母是在 中设置的\scriptstyle):

  • “lim”这个词在\textfont0

  • 变量“的所有出现X” 在\scriptfont1

  • “0” 和单词 “sin” 在\scriptfont0

  • 箭头(\to)在 内\scriptfont2

如果公式以 10 点排版,则正常设置是\textfont0= cmr10\scriptfont0= cmr7\scripscriptfont0= cmr5\textfont1=cmmi10等等(例外:第 3 系列只能以 10 点存在,即 ,cmex10但有些包可以访问其他大小)。

公式中可以使用其他字体:例如,您可能想要使用书法字母。这可以通过定义其他字体系列来实现。单个公式中最多可以使用 16 个不同的字体系列(每个系列有三种大小)。不同的公式可以有不同的 48 个字体组。

现在您将了解到,控制下标位置、数学轴高度等的参数不能绑定到每个字体,而是整个公式的属性:事实上,在公式中,$\frac{1}{x^{\bullet}}$例如,分子、分母和后者的上标来自三种不同的字体(通常是cmr7cmmi7cmsy5)。TeX 引擎假定某些参数必须作为\fontdimen与系列 2 关联的字体的参数给出,其他参数必须作为\fontdimen与系列 3 关联的字体的参数给出(值 2 和 3 是“硬连线”到 TeX 本身中的);正在排版的(子)公式的当前样式决定了是否使用它们的\textfont\scriptfont\scripscriptfont变体。您可以在第 447 页的表格中找到有关哪些参数取自哪种字体的详细信息TeXbook您在问题中提到:所有以“σ”表示的参数都在与系列 2 相关联的字体中寻找,而以“ξ”表示的参数则假定在与系列 3 相关联的字体中找到。

如需了解更多信息,请参阅TeXbook、第 17 章和附录 G。

相关内容