首页 / 文章 / 开发的部分产品

手把手教你用 AI 造一套自己的字体

格里灰丝2026.11.02约 3134 字 · 7 分钟Markdown 原文

我用 AI 做出了一套能安装使用的字体:格里灰丝体,收录 6788 个汉字和 18 个标点,覆盖国标 GB2312 的全部 6763 个汉字。

我自己造字,是因为别人的字不好看。市面上的字库,包括不少毛笔字库,字写得很丑,我不喜欢,所以想做一套自己喜欢的。

这篇文章讲完整做法。写字、切字、打包都能交给 AI,真正的门槛是人工选字:我仔细挑一遍,大约花了 6 到 7 小时。AI 对字好不好看没有判断力,这一步省不掉。

开始前要准备什么

准备
用来做什么
ChatGPT 账号和 Codex 命令行
批量写字
Python、potrace、fontTools
切字、描字、打包
一个会写代码的 AI
写全部脚本和挑字页
至少一整天的空闲时间
逐字挑选

脚本不必自己写,把下面每一步的要求讲清楚,让 AI 写就行。

第一步:定风格和写哪些字

先让 AI 写几种样张,挑到满意再批量写,因为后面所有字都照它写。我试了写经体、文人札记、行楷抄本三种,每种 9 个字,最后选了行楷抄本:以楷为主,带少量连笔。

字表可以直接用 GB2312 的 6763 个汉字,日常简体文章基本够用。再加上常用标点和你自己要用但表里没有的字,我就多加了 18 个标点和 25 个字。

第二步:用 AI 批量写字帖

写字用 Codex 命令行调用画图,一共 757 张字帖,每张写两遍,得到 1514 张图。每张字帖是 3×3 的格子,只写 9 个字。一张图塞太多字,每个字分到的像素就少,笔画会糊。

每张字帖都上传两张图:

风格样张:告诉 AI 要写成什么样。

标准字形图:用电脑字体按相同位置印好这 9 个字,告诉 AI 每个字的结构。

第二张图最关键。只给文字提示,AI 写生僻字很容易写错,有了标准字形图就准得多。

提示词要把全部硬性要求写清楚:

纯白底,不要纸纹,方便后面切字。

格线很细,字占格子七成,任何一笔都不能碰线。

除了 9 个字和格线,不要其他文字、印章、落款。

容易写成繁体的字,直接列出来,比如“财(不是財)”。

我用的提示词是这样的,换成你自己的风格描述和字就行:

不要运行任何命令,只用图片生成。 请生成 1 张正方形字帖图片:纯白色背景,3 行 × 3 列的方格,格子用很细的浅灰线画出,每格一个简体汉字,用毛笔写在格子正中。 书法风格:完全照第一张参考图(风格样张)的写法。笔画有粗细轻重,起笔收笔有笔锋,不要墨团,不要像电脑字体。 我还上传了一张“标准字形图”,就是要写的这 9 个字,位置一一对应,每个字的笔画结构必须和它完全一致。 每个字约占格子七成大小,任何一笔都不能碰到格线。背景必须是纯白,不要纸纹。除这 9 个字和格线外不要任何文字、印章、落款。 从左到右、从上到下:第1行:……;第2行:……;第3行:……。

调用时把两张图一起传进去,提示词走标准输入:

cat 提示词.txt | codex exec --skip-git-repo-check -i 风格样张.png -i 标准字形.png -

脚本要能断点续跑:画好的图跳过,额度用完就等到恢复再继续。这么大的量不可能一次跑完。

第三步:切字和机器筛查

程序把 1514 张图切成 13612 个单字候选,每个字两份,并顺手给每份标上疑点。

切字有一个细节:AI 画的格子不一定绝对等分,所以不能按三等分硬切,要在等分位置附近找真正的格线。找到格线后,再清掉字周围的碎墨点。

机器查三件事:

碰线:笔画是否碰到格子边,碰了切出来就会缺一截。

偏小:字是否写得太小。

形差:和标准字形比,是否差得太远。

这些检查只能标出可疑的字,字好不好看它判断不了。

第四步:人工选字,这才是人力成本大头

造字最费时间的是选字。6806 个字、每字两份候选,我仔细挑了一遍,大约花了 6 到 7 小时。这是按两段连续挑字的速度估算的:76 分钟挑了 1252 个,37 分钟挑了 768 个,平均每个字只有三四秒。

这一步不能交给 AI,因为它对字好不好看没有判断力。机器预选按的是和标准字形的相似度,最后的结果差很多:

我确认的 6774 个字里,有 1574 个没选机器预选的那份,约占 23%。

机器标为“和标准字形差得远”的 682 个字,最后只有 11 个两份都不行。

我标为“都不行”的 32 个字里,有 21 个机器根本没标出来。

挑字页是让 AI 做的,每页 40 个字。每张字卡左边是电脑字体印的标准字形,右边是两份候选:

选中的一份会自动保存,不必一次看完,可以抽空分批挑。

两份都不行就点“都不行”,放进重写名单。

机器标出的可疑字显示为红色,提醒多看一眼。

建议分批挑,不必一次看完。每确认一批,就重新打包一次字体,边挑边用。

重写时,这 32 个字每个再写 4 遍,共 16 张字帖,大约 22 分钟写完,得到 128 个候选。其中有 2 个明显写错:“躐”写成了“源”,“躞”写成了“躐”,先去掉再交给我挑。

第五步:打包成字体文件

图片要先描成矢量轮廓,再装进字体文件。我用 potrace 描字,用 Python 的 fontTools 生成 OTF 字体。

直接描出来不能用,因为 AI 每张字帖的大小和粗细都不一致。打包时要统一两件事:

大小和位置:每个字参照电脑楷体里同一个字的外框。专业字体里“口”本来就比“国”小,照着它定,不要把每个字都撑满。

笔画粗细:笔画多的字本来就细一些,所以先从整套字拟合出“繁简程度对应多粗”,偏粗的收细,偏细的加粗。

6806 个字全部重描一次大约 30 分钟。我把每个字的描字结果缓存下来,只改少数字时大约 5 分钟就能打完。

字体文件里还有两项容易漏的信息:

中文字体名:在 Word 的字体列表里才会显示“格里灰丝体”。

简体中文标记:标明字体支持 GB2312,软件才能明确知道它是中文字体。

第六步:装到 Word 里使用

字体做好后在 Word 里实测通过:能在字体列表里找到,文字正常显示,导出的 PDF 也嵌入了这套字体。

1.右键 格里灰丝体.otf,选“安装”。

2.关掉并重新打开 Word。

3.选中文字,在字体框里选“格里灰丝体”。

有两点要注意:

别人的电脑没装这个字体时,直接发 Word 文档会显示成别的字体。可以导出 PDF,或者把字体文件一起发过去。

导出的 PDF 比较大:我测试的一页文档有 6.7 MB。

踩过的坑

最大的坑都不在写字上,而在工具和规则的细节上。

机器查不出全部错字:我之前做的另外三套字体,机器筛查后仍有错字,我逐页核对又标出 178 个。从那以后,每个字都必须人眼确认才能进字体。

笔画少的字被加粗:样句里“一二三”特别显眼。全套一查,原来粗细规则在笔画很少的字上推算过头,把“一”从 21 加到了 30,“人”从 18 加到了 31。改成尽量保留这些字原来的粗细后就正常了。数字是 512 格字身上的像素宽度。

这套字能做什么

格里灰丝体适合排纯中文内容,比如文档、标题和带古意的文字。GB2312 的字都有,日常简体文章基本够用。

它目前没有这些字符:

数字和英文字母:会由其他字体代替显示。

繁体字和大部分生僻字:部分人名、地名用字也没有,比如“镕”“喆”“堃”。

不过也得承认,这套字里可能混杂了几种不同的风格。字是 AI 生成的,而它对字体风格差异的判断并不好,不同风格的字难免会混在一起。重新生成和人工挑选的成本又都很高,没法反复修到完全统一。所以在书法专家眼里,这套字可能会显得有些杂。不过对我们普通人来说,已经够用了。

← 返回「开发的部分产品」回到顶部 ↑