上下文:如何安装和使用新的 opentype(数学)字体?

上下文:如何安装和使用新的 opentype(数学)字体?

动机 :我是 LaTeX 的忠实用户,对 ConTeXt 很感兴趣,并尝试充分了解它,以便能够判断它的可用性。目前,我仅限于使用 Mark IV/LuaTeX(Mark II 似乎已停止发展)。我使用当前的 TeXLive 发行版(由 Debian 打包)。

我最近遇到了一个意想不到的难题:Opentype 数学字体。目前的情况是,很多(少数)可用的 Opentype 数学字体可以使用“开箱即用”;经过一番探索表明,$TEXMF/tex/context/fonts/mkiv/ 中存在这些字体的一些支持脚本。

然而,我无法阅读、猜测或推测这些文件的目标或结构。因此,我无法说服 Context 使用最近推出的以下几对 Opentype tex / Opentype 数学字体:

  • GFS 新希腊数学 / GFS 新希腊数学 (CTAN)
  • Fira 无 /费拉数学
  • STIX Two 系列(CTAN)。

我已经能够使用文本字体;例如:

\definefontfamily [gfsneohellenic] [serif] [GFSNeohellenic]
\setupbodyfont [gfsneohellenic]

任何使用数学的尝试很早就失败了。但是,使用前两个方法可能会得到正确的数学排版,并且使用与文本字体一致的 sans 字体(参见这个问题用于放大...)

[ 另一方面,在 LuaLaTeX 中使用它们是小菜一碟:将它们链接到“正确”的位置,重新运行字体缓存,然后就可以了... ]

我对 ConTeXt 文档还不够熟悉,无法理解mkiv/.lfg以下脚本似乎是 ConTeXt 对这些数学字体支持的起源。

问题) :我应该在哪里查找此功能的文档?或者是否有一些“神奇”脚本允许创建此类脚本?

答案1

我应该在哪里寻找此功能的相关文档?

有一本随 ConTeXt 独立版一起发布的手册,名为ConTeXt 之外的字体。有时它也被称为“新字体手册”。

或者是否存在一些“神奇”的脚本允许创建这样的脚本?

不,没有神奇的脚本可以生成这些所谓的打字稿。但结构很简单,而且很容易自己动手。

流程总是相同的。您为某个系列定义一个 typescript,并将字体文件分配给预定义名称。例如

\starttypescript [sans] [fira]
  \definefontsynonym [Sans] [file:FiraSans-Regular.otf] [features=default]
\stoptypescript

这告诉 ConTeXt,当请求 Sans 版本时,它应该加载FiraSans-Regular.otf并应用默认字体功能。

文件.lfg大号F安大略省Goodies 更复杂,但如果您必须修补数学字体、想要将特殊数学字体功能暴露给 ConTeXt,或者必须定义虚拟字体,那么您最需要它们。乍一看,它们通常是不需要的。

这是 Fira 字体的完整而简单的示例。

\starttypescriptcollection [fira]

  \starttypescript [sans] [fira]
    \setups[font:fallback:sans]
    \definefontsynonym [Sans]           [file:FiraSans-Regular.otf]       [features=default]
    \definefontsynonym [SansItalic]     [file:FiraSans-RegularItalic.otf] [features=default]
    \definefontsynonym [SansBold]       [file:FiraSans-Bold.otf]          [features=default]
    \definefontsynonym [SansBoldItalic] [file:FiraSans-BoldItalic.otf]    [features=default]
    \definefontsynonym [SansCaps]       [file:FiraSans-Regular.otf]       [features={default,smallcaps}]
  \stoptypescript

  \starttypescript [mono] [fira]
    \setups[font:fallback:mono]
    \definefontsynonym [Mono]     [file:FiraMono-Medium.otf] [features=default]
    \definefontsynonym [MonoBold] [file:FiraMono-Bold.otf]   [features=default]
  \stoptypescript

  \starttypescript [math] [fira]
    \definefontsynonym [MathRoman] [file:Fira-Math.otf] [features=mathextra]
  \stoptypescript

  \starttypescript [fira]
    \definetypeface [\typescriptone] [rm] [serif] [modern] [default]
    \definetypeface [\typescriptone] [ss] [sans]  [fira]   [default]
    \definetypeface [\typescriptone] [tt] [mono]  [fira]   [default]
    \definetypeface [\typescriptone] [mm] [math]  [fira]   [default]
    \quittypescriptscanning
  \stoptypescript

\stoptypescriptcollection

\setupbodyfont[fira,sans]

\starttext

\input knuth

\startformula
  R_{\mu\nu} - \frac{1}{2} R g_{\mu\nu} + \Lambda g_{\mu\nu} = \frac{8 \pi G}{c^4} T_{\mu\nu}
\stopformula

\starttyping
#include <stdio.h>

int main() {
    printf("Hello World!\n");
}
\stoptyping

\stoptext

在此处输入图片描述

答案2

你可以得到盒子外面mm通过设置(或math)打开 opentype 数学\definefontfamily

\definefontfamily [mainface] [ss] [GFS Neohellenic]
\definefontfamily [mainface] [mm] [GFS Neohellenic Math]
\definefontfamily [mainface] [rm] [Latin Modern Sans]
\definefontfamily [mainface] [tt] [Latin Modern Typewriter] [features=none]
\setupbodyfont    [mainface]

\starttext

\input tufte

\startformula     
    \int_0^\infty t^5 e^{-t}\,dt = 120.
\stopformula

\stoptext

在此处输入图片描述

输出$ pdffont

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
AJITCU+GFSNeohellenic-Regular        CID Type 0C       Identity-H       yes yes yes     10  0
HALPCL+GFSNeohellenicMath            CID Type 0C       Identity-H       yes yes yes     11  0

Context 可以找到操作系统中安装的 opentype 字体。要获取可用字体列表,请运行:

$ mtxrun --script fonts --list --all

如果您想要过滤结果,可以使用选项--pattern。例如,要列出系统上的所有 GFS 字体,请运行:

$ mtxrun --script fonts --list --all --pattern=GFS

您可以在上下文 Wiki 上找到更多文档:http://wiki.contextgarden.net/Command/definefontfamily

相关内容