本文档提供了 Fira Code 构建过程的技术概述,解释了字体如何从源文件构建成各种分发格式。本页面重点介绍用于生成字体文件的构建脚本、工具和命令。有关开发环境设置的信息,请参阅 开发环境设置。
Fira Code 构建过程将源 Glyphs 文件(FiraCode.glyphs)转换为多种字体格式(OTF、TTF、Variable Font、WOFF、WOFF2),以适应不同的使用场景。构建通过 shell 脚本进行编排,并使用 Docker 来确保一致的构建环境。
来源: script/build.sh96-101 Makefile3-7
构建环境在 Dockerfile 中定义,确保跨不同系统构建的一致性
构建过程以 make build 命令开始,该命令在 Docker 容器内运行 build.sh 脚本
这确保了一个包含所有必需依赖项的一致构建环境。
来源: Makefile3-4
主构建脚本(build.sh)协调整个过程
每种字体格式都有一个专门的构建脚本,该脚本
生成的主要字体格式包括:
| 格式 | 文件扩展名 | 描述 | 生成者 |
|---|---|---|---|
| OpenType | .otf | 桌面安装,注重打印 | build_otf.sh |
| TrueType | .ttf | 桌面安装,注重屏幕显示,带微调 | build_ttf.sh |
| 可变字体 | .ttf (VF) | 单一文件包含所有字重 | build_variable.sh |
| WOFF | .woff | Web 字体格式,兼容性更广 | build_woff.sh |
| WOFF2 | .woff2 | Web 字体格式,压缩效果更好 | build_woff2.sh |
来源: script/build_otf.sh1-27 script/build_ttf.sh1-31 script/build_variable.sh1-42 script/build_woff.sh1-28 script/build_woff2.sh1-28
默认情况下,构建过程会生成以下字重的字体:
| 字重 | 描述 |
|---|---|
| 细体 | 最细字重 |
| 常规 | 标准字重 |
| Retina | 为高 DPI 显示器优化 |
| 中等 | 中等字重 |
| 半粗体 | 半粗字重 |
| 粗体 | 最粗字重 |
来源: script/build_otf.sh15 script/build_ttf.sh15
OpenType 字体 (OTF) 构建流程
对于每个字重,调用 fontmake 直接从源 Glyphs 文件生成 OTF 文件
TrueType 字体 (TTF) 构建流程包含一个额外的微调步骤
TTF 生成包括:
fontmake 生成ttfautohint 进行微调可变字体构建流程需要特殊处理
可变字体生成包括:
fontmake 的可变字体选项生成gftools 进行后处理,以修复元数据和微调来源: script/build_variable.sh18-42
Web 字体格式 (WOFF/WOFF2) 是从 TTF 文件生成的
来源: script/build_woff.sh21-27 script/build_woff2.sh21-27
构建过程支持多种命令行选项以进行自定义
示例
来源: script/build.sh12-58 script/build.sh67-77
构建完成后,可以使用以下命令将字体打包分发
这将运行 script/package.sh 来创建一个包含所有生成字体文件的分发包。
来源: Makefile6-7
构建过程在以下目录结构中生成字体文件
distr/
├── otf/
│ └── Fira Code/
│ ├── FiraCode-Bold.otf
│ ├── FiraCode-Light.otf
│ ├── FiraCode-Medium.otf
│ ├── FiraCode-Regular.otf
│ ├── FiraCode-Retina.otf
│ └── FiraCode-SemiBold.otf
├── ttf/
│ └── Fira Code/
│ ├── FiraCode-Bold.ttf
│ ├── FiraCode-Light.ttf
│ ├── FiraCode-Medium.ttf
│ ├── FiraCode-Regular.ttf
│ ├── FiraCode-Retina.ttf
│ └── FiraCode-SemiBold.ttf
├── variable_ttf/
│ └── Fira Code/
│ └── FiraCode-VF.ttf
├── woff/
│ └── Fira Code/
│ ├── FiraCode-Bold.woff
│ ├── FiraCode-Light.woff
│ ├── FiraCode-Medium.woff
│ ├── FiraCode-Regular.woff
│ └── FiraCode-SemiBold.woff
└── woff2/
└── Fira Code/
├── FiraCode-Bold.woff2
├── FiraCode-Light.woff2
├── FiraCode-Medium.woff2
├── FiraCode-Regular.woff2
└── FiraCode-SemiBold.woff2
来源: script/build_otf.sh9 script/build_ttf.sh9 script/build_variable.sh9-10 script/build_woff.sh8-9 script/build_woff2.sh8-9
要运行完整的构建和打包过程,您可以使用
或者,您可以使用便捷脚本
该脚本会按顺序执行构建步骤和打包。