菜单

开发与贡献

相关源文件

本文档概述了开发者如何贡献或从源代码构建 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 容器来确保不同开发平台之间构建环境的一致性。

关键开发工具

  • Docker:用于构建环境
  • Make:用于运行构建命令
  • Clojure:用于字形生成和验证
  • Python:用于构建和发布脚本
  • Git:用于版本控制

开发环境在 Dockerfile 中定义,其中包含构建字体所需的所有依赖项

来源:Dockerfile1-9 deps.edn1-6

Clojure 开发环境

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

  1. 确保 Docker 已安装并正在运行
  2. 运行 make builddocker run --rm -v ${PWD}:/opt tonsky/firacode:latest ./script/build.sh
  3. 构建的字体文件将放置在 distr 目录中

用于打包分发

$ ./script/package.sh

来源:Makefile1-8 script/everything1-10

持续集成

Fira Code 使用 GitHub Actions 进行持续集成,当更改推送到仓库时会自动构建字体。

CI/CD 工作流

CI/CD 工作流程在 .github/workflows/build.yml 中定义,并执行以下操作

  1. 在任何分支的推送上触发,或在创建版本标签时触发
  2. 在 Docker 容器中运行构建过程
  3. 将构建的字体作为工件上传
  4. 对于标签推送,还会运行发布流程

来源:.github/workflows/build.yml1-28

版本控制和发布流程

Fira Code 使用符合约定版本的语义化版本控制,格式为MAJOR.MINOR(例如 6.2)。版本号存储在 FiraCode.glyphs 文件中。

版本更新流程

当打上新版本标签时

  1. 脚本 update_version.py 会更新 FiraCode.glyphs 中的版本号
  2. 构建过程创建带有新版本号的字体文件
  3. 脚本 release.py 会打包并发布该版本

来源:script/update_version.py1-21 script/release.py1-74 script/common.py1-17

发布自动化

发布流程通过 script/release.py 自动化,该脚本会

  1. 创建所有字体文件的 ZIP 包
  2. 创建一个包含该包的 GitHub release
  3. 更新分发渠道(如果已配置)

来源:script/release.py1-74

质量保证

Fira Code 包含用于确保字体质量的工具

  1. script/check_widths:验证字形宽度的一致性
  2. Fontbakery:行业标准的字体质量检查(包含在 Docker 容器中)

来源: script/check_widths1-3 Dockerfile1-9

如何贡献

为 Fira Code 做贡献

  1. 在 GitHub 上 Fork 仓库
  2. 设置您的开发环境(请参阅 开发环境设置
  3. 进行更改,遵循项目的编码标准
  4. 运行质量检查以验证您的更改
  5. 提交包含您更改的拉取请求

主要贡献领域包括

  • 添加或改进连字
  • 修复字形渲染问题
  • 增强构建脚本
  • 改进文档
  • 增加对新语言字符的支持

开发技巧

  1. 使用 Clojure REPL 交互式开发连字生成代码
  2. 使用多个编辑器和终端测试您的更改,以确保兼容性
  3. 修改字形时,确保与现有字形保持一致的宽度和设计
  4. 使用 script/everything 运行完整构建过程,以验证所有组件协同工作
  5. 使用 Docker 容器提供一致的构建环境

来源: script/repl.sh1-6 script/everything1-10