本文档概述了开发者如何贡献或从源代码构建 Fira Code。它涵盖了开发工作流程、贡献流程和构建系统设置。有关设置开发环境的具体细节,请参阅开发环境设置。有关从源代码构建 Fira Code 的详细信息,请参阅构建过程。有关质量保证流程的信息,请参阅质量保证。有关发布流程的详细信息,请参阅发布流程。
Fira Code 的开发系统由多个组件组成,它们协同工作来创建、构建和分发字体。
来源:Makefile1-8 Dockerfile1-9 script/build.yml1-28 script/everything1-10
Fira Code 仓库围绕几个关键组件进行组织
来源:.gitignore1-20 Makefile1-8 script/everything1-10
要开发和构建 Fira Code,您需要 Docker 来构建环境,并需要一些开发工具。该项目使用 Docker 容器来确保不同开发平台之间构建环境的一致性。
开发环境在 Dockerfile 中定义,其中包含构建字体所需的所有依赖项
Fira Code 使用 Clojure 进行字形生成和质量保证。script/repl.sh 脚本用于设置 Clojure REPL 进行开发
$ ./script/repl.sh
这将启动一个监听随机端口的 socket REPL,从而可以交互式地开发驱动字形生成的 Clojure 代码。
来源:script/repl.sh1-6 clojure/user.clj1-72 deps.edn1-6
Fira Code 使用基于 Docker 的构建系统来确保不同环境中的构建一致性。构建过程由一组 shell 脚本和 Makefile 来协调。
来源:Makefile1-8 script/everything1-10 .github/workflows/build.yml1-28
要从源代码构建 Fira Code
make build 或 docker run --rm -v ${PWD}:/opt tonsky/firacode:latest ./script/build.shdistr 目录中用于打包分发
$ ./script/package.sh
来源:Makefile1-8 script/everything1-10
Fira Code 使用 GitHub Actions 进行持续集成,当更改推送到仓库时会自动构建字体。
CI/CD 工作流程在 .github/workflows/build.yml 中定义,并执行以下操作
来源:.github/workflows/build.yml1-28
Fira Code 使用符合约定版本的语义化版本控制,格式为MAJOR.MINOR(例如 6.2)。版本号存储在 FiraCode.glyphs 文件中。
当打上新版本标签时
update_version.py 会更新 FiraCode.glyphs 中的版本号release.py 会打包并发布该版本来源:script/update_version.py1-21 script/release.py1-74 script/common.py1-17
发布流程通过 script/release.py 自动化,该脚本会
Fira Code 包含用于确保字体质量的工具
script/check_widths:验证字形宽度的一致性来源: script/check_widths1-3 Dockerfile1-9
为 Fira Code 做贡献
主要贡献领域包括
script/everything 运行完整构建过程,以验证所有组件协同工作