我确实没有看到任何关于如何在 Context 中加载字体的正确指南。字体、系列和 Typescript 有很多不同的功能,但没有关于如何使用它们或它们之间区别的正确解释。
如果我想将 Source Sans Pro 作为无衬线字体与 charter 和 mathdesign 一起使用,我该怎么做?
\loadtypescriptfile[mathdesign]
\definefontfamily [mainface] [rm] [charter]
\definefontfamily [mainface] [ss] [Source Sans Pro]
\definefontfamily [mainface] [math] [charter]
% These don't work either
%\definefontfamily [mainface] [mm] [charter]
%\definefontfamily [mainface] [mm] [mathdesign]
\setupbodyfont[mainface,10pt]
从没有编译时错误的意义上来说,它不起作用。它只是用默认字体编译文档。
答案1
Charter 和 Source Sans Pro 的 Typescript 在 ConTeXt 系统中随时可用。因此,利用它们是很自然的。然而,这种幼稚的方法行不通:
\definetypeface [mainface] [rm] [serif] [charter] [default]
\definetypeface [mainface] [ss] [sans] [source] [default]
\definetypeface [mainface] [tt] [mono] [source] [default]
\definetypeface [mainface] [mm] [math] [charter] [default]
\setupbodyfont [mainface]
\starttext
\samplefile{knuth}
\sans{\samplefile{knuth}}
\stoptext
生成的文件将以所有宪章形式排版,并且日志包含以下消息:
fonts > defining > forced type 'ttf' of 'SourceSansPro-Regular' not found
fonts > defining > font with asked name 'SourceSansPro-Regular' is not found using lookup 'file'
fonts > defining > unknown font 'SourceSansPro-Regular', loading aborted
这是因为type-imp-source.mkiv
typescript 对.ttf
扩展名进行了硬编码,但文件使用.otf
扩展名通过 TeX Live 进行分发。要解决此问题,只需将 typescript 复制到工作目录并删除所有.ttf
扩展名。在 Linux(可能还有 Mac OS)上,您可以使用这两个命令执行此操作。
$ cp `kpsewhich type-imp-source.mkiv` .
$ sed -i 's/\.ttf//g' type-imp-source.mkiv
之后它应该可以正常排版。要确保 ConTeXt 使用编辑后的打字稿文件,请检查日志中是否有类似这样的行
open source > level 3, order 5, name 'type-imp-source.mkiv'