有没有网友遇到一款喜欢的中文字体,但是对这个中文字体中的英文字形不满意?
这个时候,可以用fontforge把喜欢的中文字体中的字形合并到喜欢的英文字体中。
下面举例说明:
以 JetBrainsMonoNerdFontMono-Regular.ttf 为主字体(它包含大量符号、英文、Nerd 图标)
把 LXGWWenKaiMono-Regular.ttf 中 JetBrains 没有的字形合并进来
这样自然实现“英文/图标用 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