如何将 Computer Modern 设置为 ConTeXt 中的字体?

如何将 Computer Modern 设置为 ConTeXt 中的字体?

我观看了一段视频采访,其中 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

在此处输入图片描述

相关内容