![ConTeXt:使用系统安装的 TrueType/OpenType 字体](https://linux22.com/image/277867/ConTeXt%EF%BC%9A%E4%BD%BF%E7%94%A8%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85%E7%9A%84%20TrueType%2FOpenType%20%E5%AD%97%E4%BD%93.png)
我尝试在 ConTeXt 文档中使用 Cambria 作为文本,使用 Calibri 作为标题,但我完全不明白发生了什么,似乎没有任何效果,最后它又回到了 LMRoman/LMSans。
作为一个最小起点,我正在尝试重新创建此文档。我只需编译它,lualatex
它就会找到我的字体,它们通过 fontconfig 在系统范围内安装。pdffonts
显示嵌入了每个系列的两个 TrueType 字体,仅此而已。
\documentclass{minimal}
\usepackage{fontspec}
\setmainfont{Cambria}
\setsansfont{Calibri}
\begin{document}
Cambria \textsf{Calibri}
\emph{Cambria \textsf{Calibri}}
\end{document}
如何使用 ConTeXt 创建此文档?我尝试过这个:
\setupbodyfont[Cambria]
%no idea how to set sans
\starttext
Cambria \sans{Calibri}
\em{Cambria \sans{Calibri}}
\stoptext
但只得到了 LM,日志包含一个关于 的错误loc
,而我的文件中没有提到,这是类型文件中的错误吗?它似乎试图对参数执行某些操作,但在加载之前失败了……
fonts > typescripts > unknown library 'loc'
(/usr/local/texlive/2013/texmf-dist/tex/context/base/type-imp-cambria.mkiv)
据我所知,fontspec 和 ConTeXt 都使用 luatex 的工具来定位和加载字体,所以我不必手动安装它们,是这样的吗?在我的安装中,type-otf.mkiv
除了一条注释声称这是不必要的,因为可以通过名称找到 OTF 字体外,其余内容为空。
和
\setupbodyfont[libertine]
\starttext ...
我得到 Biolinum 作为罗马字体,Libertine 作为无衬线字体,但仅仅是第一个\sans
,里面的一切\em
都是罗马字体。
答案1
有三种使用系统字体的方法。
编写自己的 typescript。ConTeXt 附带了大多数系统字体的 typescript。
type-imp-*.mkiv
详情请参阅。例如,calibra 的 typescript 定义在type-imp-calibra.mkiv
,而 的 typescriptcalibiri
定义在type-imp-cleartype.mkiv
。要使用它们,您需要定义自己的 typescript 来设置衬线和无衬线字体。例如(这不是\em
字体开关,也不是字体命令):\usetypescriptfile[cleartype] \starttypescript[mainface] \definetypeface [mainface] [rm] [serif] [cambria] [default] \definetypeface [mainface] [ss] [sans] [calibri] [default] \definetypeface [mainface] [tt] [mono] [consolas][default] \definetypeface [mainface] [mm] [math] [cambria] [default] \stoptypescript \setupbodyfont[mainface] \starttext Cambria \sans{Calibri} {\em Cambria \sans{Calibri}} \stoptext
这使
另一个选项是使用
simplefonts
模块,它将自动创建适当的 TypeScript 字体。例如:\usemodule[simplefonts] \setmainfont[Cambria] \setsansfont[Calibri]
其结果与之前相同。
在 ConTeXt MKIV 的最新版本中,该
simplefonts
模块已经被取代,\definefontfamily
它是核心的一部分。\definefontfamily [mainface] [rm] [Cambria] \definefontfamily [mainface] [ss] [Calibri] \definefontfamily [mainface] [tt] [Consolas] \definefontfamily [mainface] [mm] [Asana Math] \setupbodyfont[mainface]
这与上面的效果相同。但请记住,您必须设置全部字体,即
rm
、ss
、tt
、mm
。否则可能会发生奇怪的事情。