打印字体配置文件

conTeXt 使用以下方式定义字体:

  1. \definefont %使用此命令定义字体。这三句可以写在一行
  2. [Song] %第一个参数为字体别名
  3. [{name:Adobe Song Std*zh} at 14pt] %字体定义:使用14号的 Adobe 中文宋体
  4. %name使用字体名称;file使用字体文件
  5.  
  6. \starttext
  7. \Song 我使用的是 Adobe 宋体 %使用字体别名指定该行体样式
  8. \stoptext

使用这种方式指定字体比较繁琐,推荐建立一个打印字体配置文件(typescript),如 zhfonts.tex (如何使用 zhfonts.tex 参阅“字体设置”一节)

.tex 源文件中使用以下命令定义字体:

  1. \usetypescriptfile[zhfonts] %加载打印字体配置文件 zhfonts.tex
  2. \usetypescript[myscript] %使用打印字体配置文件中定义打印字体的脚本 myscript
  3. \setupbodyfont[myfont,ss,11pt] %使用脚本预定义的 myfont 字体: 字型为 ss ,大小为 11pt

通常有三种字型的字体:衬线、非衬线、等宽,衬线字型笔划起始和结束的地方有一些修饰,非衬线字体笔划为无修饰的线条,等宽字体所有的字符宽度相同

而一种字体,无论属于何种字型,都可能有几种样式,例如:普通、粗体、斜体、斜粗体

我们在打印字体配置文件中,首先定义字型,然后为每种字型定义样式。

zhfonts.tex 文件中定义打印字体 myfont 的字型:

  1. \starttypescript[myscript] %定义打印字体的脚本为 myscritp
  2. \definetypeface[myfont][ss][sans][zhfont] %将 myfont 的字型 ss 定义为 [sans][zhfont](非衬线)
  3. \stoptypescript %结束定义

[sans][zhfont] 为非衬线字型,给它指定各种样式,在上面定义之前写入以下配置:

  1. \starttypescript [sans][zhfont] %定义字型 [sans][zhfont]
  2. \definefontsynonym %此命令定义字体别名
  3. %定义该字型的普通样式 [Sans] [ZhSans],备用字体为 [fallbacks=WesternSans]
  4. [Sans][ZhSans][fallbacks=WesternSans]
  5. \definefontsynonym
  6. %定义该字型的粗体样式 [SansBold] [ZhSansBold],备用字体为 [fallbacks=WesternSansBold]
  7. [SansBold][ZhSansBold][fallbacks=WesternSansBold]
  8. \definefontsynonym
  9. %定义斜体
  10. [SansItalic][ZhSansItalic][fallbacks=WesternSansItalic]
  11. \definefontsynonym
  12. %定义斜粗体
  13. [SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic]
  14. \stoptypescript

上一步定义使用别名定义别名,写起来比较麻烦,但是却可以选择备用字体。接下来将各种样式定义为实际的字体:

  1. \starttypescript [sans][zhfont]
  2. %定义四种样式实际使用的字体
  3. %name使用字体名称;file使用字体文件
  4. %[features=zh] 字体使用 zh 属性,还未定义
  5. \definefontsynonym
  6. [ZhSans][name:AdobeKaitiStd-Regular][features=zh]
  7. \definefontsynonym
  8. [ZhSansBold][name:AdobeHeitiStd-Regular][features=zh]
  9. \definefontsynonym
  10. [ZhSansItalic][name:AdobeKaitiStd-Regular][features=zh]
  11. \definefontsynonym
  12. [ZhSansBoldItalic][name:AdobeHeitiStd-Regular][features=zh]
  13. %定义备用字体的四种样式
  14. \definefontfallback
  15. [WesternSans][name:TeXGyreAdventor-Regular][0x0000-0x0400][force=yes]
  16. \definefontfallback
  17. [WesternSansBold][name:TeXGyreAdventor-Bold][0x0000-0x0400][force=yes]
  18. \definefontfallback
  19. [WesternSansItalic][name:TeXGyreAdventor-Italic][0x0000-0x0400][force=yes]
  20. \definefontfallback
  21. [WesternSansBoldItalic][name:TeXGyreAdventor-BoldItalic][0x0000-0x0400][force=yes]
  22.  
  23. \definefontsynonym
  24. [Sans][ZhSans][fallbacks=WesternSans]
  25. \definefontsynonym
  26. [SansBold][ZhSansBold][fallbacks=WesternSansBold]
  27. \definefontsynonym
  28. [SansItalic][ZhSansItalic][fallbacks=WesternSansItalic]
  29. \definefontsynonym
  30. [SansBoldItalic][ZhSansBoldItalic][fallbacks=WesternSansBoldItalic]
  31. \stoptypescript

最后,定义字体属性 zh

  1. \definefontfeature[zh][mode=node,script=hang,lang=zhs]

完整的 zhfonts.tex 文件,参阅“字体设置”一节