用fontforge合并英文中文字体
拂晓之光芒万丈
2025年12月17日 13:22
收录于文集
共6篇

有没有网友遇到一款喜欢的中文字体,但是对这个中文字体中的英文字形不满意?

这个时候,可以用fontforge把喜欢的中文字体中的字形合并到喜欢的英文字体中。

下面举例说明:

  1. 以 JetBrainsMonoNerdFontMono-Regular.ttf 为主字体(它包含大量符号、英文、Nerd 图标)

  2. 把 LXGWWenKaiMono-Regular.ttf 中 JetBrains 没有的字形合并进来

  3. 这样自然实现“英文/图标用 JetBrains,中文用 WenKai”。

#mergeFont.py

#!/usr/bin/env python3

import fontforge

import os

font_dir = "/yourpath/fonts"

eng_font_path = os.path.join(font_dir, "JetBrainsMonoNerdFontMono-Regular.ttf")

cn_font_path = os.path.join(font_dir, "LXGWWenKaiMono-Regular.ttf")

output_font_path = os.path.join(font_dir, "LXWenKaiJetBrainsNerdMono-Regular.ttf")

# 以英文字体为主(含 Nerd 字符)

font = fontforge.open(eng_font_path)

# 合并中文字体:仅添加英文字体中没有的字形

font.mergeFonts(cn_font_path)

# 设置新字体名称

font.fontname = "LXWenKaiJetBrainsNerdMono-Regular"

font.fullname = "LXWenKai JetBrains Nerd Mono Regular"

font.familyname = "LXWenKai JetBrains Nerd Mono"

font.appendSFNTName("English (US)", "PostScriptName", "LXWenKaiJetBrainsNerdMono-Regular")

# 生成输出字体

font.generate(output_font_path, flags=("opentype",))

font.close()

print(f"✅ 合并完成: {output_font_path}")

把上面代码存成mergeFont.py,然后执行下面命令:

fontforge -lang=py -script merge_fonts.py