我观看了一段视频采访,其中 Donald Knuth 抱怨了 Latin Modern 字体对 Computer Modern 所做的更改。ConTeXt 似乎使用 Latin Modern 而不是 Computer Modern 作为默认字体。我如何设置 ConTeXt 以使用 Donald Knuth 的官方版本的字体?
答案1
不建议将这种旧式 PostScript 字体与完整的 Unicode 引擎(如 LuaTeX)一起使用,因为这样您实际上会失去所有优秀的功能,如重音字符、UTF-8 输入、可缩放字体等。最关键的问题是数学,因为 ConTeXt MKIV 是为 Unicode 数学字体设置的,这要求您编写一个映射到旧式字形的虚拟字体。
下面我编写了一个最小的打字稿,它为您提供固定大小为 10pt(无设计尺寸)且不含数学运算的 Computer Modern。我排版了德语aesop-de.tex
作为示例,您会发现所有变音符号都丢失了。我真的不知道为什么,但我也不想修复它。这个答案只是为您实现支持 Computer Modern 所有花哨功能的完整打字稿提供了一个起点,但我确信您会被巨大的样板吓跑,这是让这个工作不佳的示例至少包含 Computer Modern 所必需的。
如果您真的热衷于在 ConTeXt 中使用旧式字体,最好使用 MKII。
\starttypescript [serif] [cmr]
\definefontsynonym [Serif] [file:cmr10.afm]
\definefontsynonym [SerifItalic] [file:cmti10.afm]
\definefontsynonym [SerifBold] [file:cmbx10.afm]
\definefontsynonym [SerifBoldItalic] [file:cmbxti10.afm]
\stoptypescript
\starttypescript [sans] [cmr]
\definefontsynonym [Sans] [file:cmss10.afm]
\definefontsynonym [SansItalic] [file:cmssti10.afm]
\definefontsynonym [SansBold] [file:cmssbx10.afm]
\stoptypescript
\starttypescript [mono] [cmr]
\definefontsynonym [Mono] [file:cmtt10.afm]
\definefontsynonym [MonoItalic] [file:cmitt10.afm]
\stoptypescript
\starttypescript [cmr]
\definetypeface [\typescriptone] [rm] [serif] [cmr] [default]
\definetypeface [\typescriptone] [ss] [sans] [cmr] [default]
\definetypeface [\typescriptone] [tt] [mono] [cmr] [default]
\definetypeface [\typescriptone] [mm] [math] [modern] [default]
\quittypescriptscanning
\stoptypescript
\setupbodyfont[cmr]
\starttext
\input aesop-de.tex
\stoptext
使用 Computer Modern 的证明:
$ pdffonts test.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
YSHCPX+CMR10 CID Type 0C Identity-H yes yes yes 10 0