我正在尝试使用我的电脑上安装的一些字体,如下typescript
所述在这篇文章中以便创建一些花哨的标题,但我有一个奇怪的问题\setuphead
。
\switchtobodyfont
以下是使用in\setuphead
的示例style
:
\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
\setuphead[section][style={\switchtobodyfont[fira,sans]}]
\starttext
\section{section 1}
\section{section 2}
\section{section 3}
\stoptext
这里发生了什么?
答案1
当您为新字体编写打字稿时,ConTeXt 会存储这些设置,但此时不会加载任何字体,这允许复杂的打字稿定义,其中直立、斜体等样式可以在加载字体时更改,这对于大型字体系列很有用。
一旦您使用命令创建字体,\definetypeface
ConTeXt 就会加载所有必要的打字稿,但这在常规文本中执行此操作时可能会出现问题,因为打字稿块中的许多行尾都会产生额外的空格,并出现在输出中。
在下面的示例中,我为TeX Gyre Pagella
字体创建了一个简单的打字稿。问题是,我\hbox
在水平模式下加载字体时,会清除打字稿中的所有空格。
\starttypescript [serif] [tex-gyre-pagella]
\definefontsynonym [Serif] [file:texgyrepagellaregular] [features=default]
\definefontsynonym [SerifItalic] [file:texgyrepagellaitalic] [features=default]
\definefontsynonym [SerifBold] [file:texgyrepagellabold] [features=default]
\definefontsynonym [SerifBoldItalic] [file:texgyrepagellabolditalic] [features=default]
\stoptypescript
\starttypescript [tgy]
\definetypeface [tgy] [rm] [serif] [tex-gyre-pagella]
\stoptypescript
\starttext
\ruledhbox{\strut\space}
\ruledhbox{\strut\space\switchtobodyfont[tgy]}
\ruledhbox{\strut\space\ntimes{\kern\spaceamount}{5}}
\stoptext
我的打字稿中设置末尾的每个换行符\definefontsynonym
都会创建一个可见空间,并且会从设置中创建一个额外的空间\definetypeface
。
为了避免这个问题,你可以删除在加载字体之前加载所有必要的打字稿typescript
的命令环境,例如\definetypeface
\definetypeface [tgy] [rm] [serif] [tex-gyre-pagella]
或者在将要使用的打字稿加载到文档之前先预加载它,例如
\usetypescript[tgy]