动机 :我是 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