前阵子接了个改版项目,甲方把旧文件丢过来,说全文统一换成另一款黑体。我打开一看,三百多个文本框,十几个页面,还夹着一堆组件。当时想的很简单,Ctrl+A,改字体,完事。
结果改完发现肉眼可见地不对:有半页标题还顶着原来的字,有两个卡片里的英文没变,还有个 banner 的容器被撑破了一点。
前后返工三次,把坑摸清了。写下来给同样要批量换字体的同行。
一是建版本。在文件名下拉里找 Version history,创建版本,备注写「换字体前」。版本历史本来就能回滚,但手动留一个标记点,出问题的时候不用一格格往前翻。
二是导出字体清单。把文件里现在用的字列出来,重点看那些我本地没装的。这份清单不只是给我自己看的——交付时甲方要核对授权,提前列出来比事后补要省事。
清单出来之后,先把要换的字本地装好。我一般用字由客户端激活,PS、AI、Figma 都能读到,不用在几个软件里分别装字体文件。这一步别省:没装就动手改,屏幕上显示的是回退字体,你等于在拿一个假的基准做判断。
全选 → 右侧 Text 面板改字体 → 逐页重复。这套操作本身没难度,难的是它只改「外层」。
组件实例的文字覆盖。
主组件改了,实例跟着改;但手动改过文字的实例会保留自己的字体。识别方法很简单:改完还剩下的那几个没变的文本框,选中看 Text 面板,显示具体字体名(而不是样式名)的就是被覆盖了。重新应用一次字体就能回来。
文本框内部的混排。
中文文本框里单独框选过英文并指定字体的,整体改字体族动不了它。双击进去,Ctrl+A 全选框内文字,再改一次。
锁定和隐藏图层。
全选时它们不在选区里,改完就是漏网的。我会先把它们解锁、恢复可见,改完再复原。
自动布局。
字宽字高变了,容器会被撑开或压缩,偶尔挤到相邻元素。改完我会逐个 frame 扫一遍,专门看那些排得很紧的卡片。
如果这个文件还会持续迭代,或者同一套规范要在多个文件里用,我会选改样式这条路。
建样式的时候,命名我建议按「用途/语言/字号」来,比如「正文/中文/16」「标题/西文/32」。一年后自己回来看,或者交给别人接手,靠名字就知道该用哪个,不用一个个点开看参数。
应用样式之后,改字体只需要编辑样式本身,所有引用它的文本同时更新,跨页面也生效。发布到团队库之后,其他文件引用了一次更新,整个团队的文件一起变。
有两个限制要知道:带样式的文本框不能硬改字体,硬改会让样式和文本分离,那个框之后就不跟随样式了;一个样式只能绑一个字体族,中西文要分开,得在文本里单独框选设置。另外 Figma 的 Variables 目前管不了字体族,字号行高能做变量,字体还是得靠样式。
社区里有做批量字体替换的插件,清理历史遗留文件确实快。我的习惯是把文件复制一份到草稿,在副本上跑,确认结果没问题再合并回去。原因是插件操作通常不能靠版本历史完整回退。
如果这个文件的字体以后还会再换,就老老实实建样式;如果换完这次就封版,直接改字体族就行。判断只需要看这一个信号。
另外说句实在话:批量替换做得越频繁,说明字体规范越松。团队层面把标准字库定下来、成员装同一批字体,这件事本身就会越来越少发生。我现在的习惯是每个项目开工先把字定死,写进规范,从建样式开始,后面基本不用再做大面积替换。