LaTeX 字体之字族篇
字族、字系与字形
字体 (typeface) 的概念非常令人恼火,在电子化时代,基本上也都以字体 (font) 作为替代的称呼。字族、字系与字形这三者大概可以并称字体
- 宋体、黑体、楷体,这属于字族
- 加粗、加斜属于字系和字形
- 五号、小四属于字号
fontspec 宏包
fontspec 是一个基于 XeLaTeX 和 LuaLaTeX 的宏包(此处划重点),所以在编译时要注意不能使用 PdfLaTeX,否则会出现编译错误(建议使用 XeLaTex)。
使用 fontspec 宏包更改字体
xelatex 编译命令能够支持直接调用系统安装的 .ttf 或 .otf 格式字体,xelatex 命令下支持用户调用字体的宏包是 fontspec
如何使用 xelatex 进行编译
- 可以将 xelatex 作为编辑器的默认编译器,编译即自动使用 xelatex(推荐该方式)
- 或者找到 xelatex 命令
使用 xelatex 进行编译
方式 1:以 TexStudio 为例
方式 2:以 TexStudio 为例
语法格式
1 | \usepackage{fontspec} |
- font features:用来手动配置对应的粗体或斜体
- font name:字体名称
什么是衬线字体、非衬线字体以及等宽字体?
参考资料:博客园:Serif 和 Sans-serif 字体的区别
由于中文字体少有对应的粗体或斜体,⟨font features⟩ 里多用其他字体来配置,比如习惯上将宋体的 BoldFont 配置为黑体,而 ItalicFont 配置为楷体。
(可先跳过此段)需要注意的是:fontspec 宏包会覆盖数学字体设置。需要调用一些数学字体宏包时,应当在调用 fontspec 宏包时指定 no-math 选项。
(可先跳过此段)fontspec 宏包可能被其它宏包或文档类如 xeCJK、ctex 文档类)自动调用时,则在文档开头的 \documentclass
命令里指定 no-math 选项。
需求 1:全文更换字体
在前言部分对字体进行设置
1 | %语法:\setmainfont{FONT_NAME} |
需求 2:中文为宋体,英文为 Times New Roman
在 ctex 中文文档类下,默认中文字体为宋体(衬线字体),只要将英文字体的衬线字体设置为 Times New Roman 即可满足需求
1 | \documentclass{ctexart} |
对于非正文字体是不是也设置成功了呢?可以测试一下标题字体与图片标题字体
1 | \documentclass{ctexart} |
可以看到 ctexart 对应的 section 标题都是加粗的,那么对于中文呢,还会是加粗的宋体吗?我们刚才只设定了英文衬线字体,普通文字、加粗、斜体文字均匀 Times New Roman 字体,
1 | \setmainfont{Times New Roman}[BoldFont={Times New Roman Bold}, ItalicFont={Times New Roman Italic}] % 设置衬线字体为Times New Roman,加粗和斜体也为Times New Roman加粗体和斜体 |
首先需要明确一点:汉字没有斜体.平常我们看到的加斜汉字,通常是几何变换得到的结果,非常的粗糙,并不严格满足排版要求;而真正的字形上需要精细的设计的。同时,汉字字体里面也很少加粗体的设计。
西文一般设有加斜,但是这与 “斜体” 并不是同一回事.加斜是指某种字族的 Italy 字系;而斜体,是指 Slant 字族.在行文中表强调时使用的是前者;在 Microsoft Word 等软件中看到的倾斜的字母 I,也代表前者.
加粗和斜体通常不是加粗的宋体和宋体的斜体,而是由其他字体替代,对应的加粗体为黑体字体,斜体为楷体字体。
1 | \documentclass{ctexart} |
需求 3:自定义中文字体
中文方面, ctex 宏包直接定义了新的中文文档类 ctexart, ctexrep 与 ctexbook,以及 ctexbeamer 幻灯片文档类
ctex 宏包已经为我们提供了以下的字体命令
参考资料:中国 TeX 用户组. CTeX 宏集手册(可以该网站可下载到最新版本的 CTeX 宏基手册)
字体 | 命令 |
---|---|
宋体 | songti |
黑体 | heiti |
仿宋 | fangsong |
楷书 | kaishu |
1 | \documentclass{ctexart} |
除了以上字体,我还想使用其他的中文字体呢?
查询电脑上字体对应的英文名称,具体如何查询可以查看一下两个连接
比如说查询到华文行楷对应的英文名称为 STXingkai,那么可以通过如下方式自定义命令,在正文中,只要使用 \huawenxingkai
即可将字体设置为华文行楷
如何查询中文字体对应的英文名称参考资料
1 | fc-list -f "%{family}\n" :lang=zh-cn >c:\list.txt |
- 打开 CMD
- 将以上命令复制到 CMD,回车
- 去 C 盘根目录查看
list.txt
文件
参考资料:
- CSDN:LaTeX 技巧 001:ctex 下使用其他中文字体
- 个人博客: 常见字体的中英文对照表(转载备忘)
1 | \setCJKfamilyfont{hwxk}{STXingkai} %使用STXingkai华文行楷字体 |
最小案例如下:
1 | \documentclass{ctexart} |
注意:只需要给某些文字设定字体时,请将命令和需要修改字体的文字用大括号包起来
1 | {\huawenxingkai 我是自定义的字体,我使用的华文行楷} |
比如如下案例,会导致第二行文字也变为黑体
1 | \documentclass{ctexart} |
待续
参考资料
- 简单粗暴 Latex: Kanglong Wu & 《简单粗暴 LaTeX》开源仓库
- CSDN: 假装认真的 LaTeX 学习笔记(2)—— LaTeX 中如何修改字体(fontspec 宏包使用方法)
- 博客园:Serif 和 Sans-serif 字体的区别
- 中国 TeX 用户组. CTeX 宏集手册
- CSDN:LaTeX 技巧 001:ctex 下使用其他中文字体
- 个人博客: 常见字体的中英文对照表(转载备忘)