返回在 ConTeXt 内加载和定义新字体 字体的定义和加载主要有 2 中方法,通过definefont或者Typescript + definefontsynonym

definefont

使用 ConTeXt 已有的字体(可以通过 mxtrun 查到的字体),先通过 definefont 定义,再通过 \+定义的字体名 来使用。SourceHanSerifSC 使用时要确保 ConTeXt 已经安装这个字体。
\definefont[mysong] [file:SourceHanSerifSC-Regular] \setupbodyfont[12pt] \mysong 人之初,性本善。性相近,习相远。\\ {\mysong\bold 苟不教,性乃迁。教之道,贵以专。\\} \switchtobodyfont[20pt] \mysong 人之初,性本善。性相近,习相远。\\
文件编译以后可以看到 loaded fonts:sourcehanserifsc-regular.otf 表示字体加载成功。
文件结果:
这种定义方法有一个明显的弊端,不具备粗体样式,导致文字不能显示。并且在设置全文字体时不友好。

Typescript+definefontsynonym

为了在文章中使用字体的完整样式,ConTeXt 提供了typescript来映射电脑内的字体到 ConTeXt 内可以使用的字体。
typescript通过包围命令定义:
\starttypescript[style][name of typescript] …… \stoptypescript
其中,style 的选项有: serief, sans, mono, math, calligraphy, handwriting 在setup中,有3个步骤定义字体 1. 通过\definefontsynonym[fontname][file:font filename]映射字体文件名到字体名
\starttypescript[serif][SiyuanSong] \definefontsynonym[sysongregular] [file:SourceHanSerifSC-Regular] \definefontsynonym[sysongbold] [file:SourceHanSerifSC-Bold] \stoptypescript
2. 通过\definefontsynonym[style][font name]映射字体族名到字体名
\starttypescript[serif][SiyuanSong] \definefontsynonym[Serif] [sysongregular] [features=default] \definefontsynonym[SerifBold] [sysongbold] [features=default] \stoptypescript
3. 通过\definetypeface创建新字体,连接刚刚创建的fontsynonym到对应的字体样式。
\starttypescript[mySong] \definetypeface[mySong][rm][serif][SiyuanSong][default] \stoptypescript
定义好字体以后,可以通过以下代码使用。
\usetypescript[mySong] \setupbodyfont[mySong,12pt] 人之初,性本善。性相近,习相远。\\ {\bold 苟不教,性乃迁。教之道,贵以专。\\} \switchtobodyfont[20pt] 昔孟母,择邻处。子不学,断机杼。
以上是一种字体的定义方法,有的文章内可能会同时用到宋体,黑体,楷体。我们可以使用1和2把字体都定义好,然后通过 typeface 把他们映射到 rm,ss 风格上。
\starttypescript[serif][SiyuanSong] \definefontsynonym[sysongregular] [name:sourcehanserifsc] \definefontsynonym[sysongbold] [name:sourcehanserifscbold] \stoptypescript \starttypescript[serif][SiyuanSong] \definefontsynonym[Serif] [sysongregular] [features=default] \definefontsynonym[SerifBold] [sysongbold] [features=default] \stoptypescript \starttypescript[siyuan] \definetypeface[siyuan][rm][serif][SiyuanSong][default] \definetypeface[siyuan][ss][sans][SiyuanHei][default] \stoptypescript
这样可以通过rm和ss迅速转换宋体和黑体。
{\rm 人之初,性本善。性相近,习相远。\\ \bf 苟不教,性乃迁。教之道,贵以专。\\} {\ss 人之初,性本善。性相近,习相远。\\ \bf 苟不教,性乃迁。教之道,贵以专。\\}
©2024 All Rights 石家庄市友文信息技术有限责任公司冀ICP备2023031763号