稿子在电脑上排得很好,发到手机上打开,标题里有个字变成了方块;同一段文字,安卓机看得见、iPhone 上看不见;有的字显示出来了,但字形明显不是设计稿里那款。这三种现象常被统称为“显示不全”,实际成因差得很远,混在一起查,改了半天也未必修对。
猫啃网收录 839 款免费中文字体,字体详情页一般会写字符覆盖范围。选字之前先看这一项,能避开相当一部分问题。
一、先分清三种现象
方块或空心框。 字形缺失,系统用排在末尾的兜底字体也拼不出这个字,于是画出占位符。这说明字符不在任何可用字库里,或者字库里的编码对不上。
整段空白。 字体文件加载失败,或者字体族名写错、系统找不到这款字,整段没有回退目标时就会空着。这种情况通常是配置问题,不是字库缺字。
字形不一致。 部分字用了设计字体,部分字悄悄换成了系统默认。这是回退在起作用:主字体里没有这个字,浏览器或系统顺着字体栈往下找,找到谁用谁。
先定位属于哪一种。 拿一张截图,把出问题的字单独挑出来,判断它是完全没显示、显示成方块,还是显示成了别的字形。三种现象的排查起点完全不同。
二、排查顺序:从字符查到渲染
第一步,确认这个字在不在字库里。 把出问题的单字复制出来,用字体查看工具打开字体文件,搜索这个字符。搜得到,说明字库有;搜不到,就是覆盖范围不够。
第二步,确认字符编码对得上。 有些字有多个 Unicode 码位,输入法打出来的是异体字码位,字库里只有正体。视觉上两个字一样,程序里是两个字符,显示结果自然不同。
第三步,确认字体族名写对。 中文字体的族名常带后缀,比如“GB”“简”“Medium”。CSS 里写错一个词,整条声明静默失效,不会报错,直接回退。
第四步,确认回退链有没有兜底。 字体栈末尾要留一款覆盖广的系统字体。只写一款自定义字体,缺字时浏览器只能自己挑,结果不可预期。
第五步,确认渲染层有没有被覆盖。 有些页面或 App 会对特定标签强制指定字体,自定义样式被更高优先级的规则盖掉,看上去像是字体没生效。
按顺序走,别跳步。 从字符查到配置,再查到渲染,每一步都能排除一类原因。反过来从渲染往回查,容易在样式里绕圈。
三、常见成因:覆盖范围是第一大项
字符集版本决定了覆盖多少字。 GB2312 收录 6763 个汉字,GBK 扩到 2 万多,GB18030 更多。只覆盖 GB2312 的字体,遇到人名、地名、专业术语里的生僻字就会缺。
简繁混排容易踩坑。 只做简体的字体,遇到繁体字或异体字会缺;做繁体为主的字体,简体常用字未必齐。两地文案混排的项目,要选简繁都覆盖的版本。
符号和标点也常缺。 波浪号、间隔号、书名号的部分变体、数学符号、箭头,在很多中文字体里没有对应字形。排版里用了特殊符号,要单独确认。
生僻姓氏和地名要提前试。 项目里出现具体人名时,把名字逐个字放进字体里试一遍,比整体预览可靠。这类字往往只在一两个位置出现,容易漏。
版本更新会改变覆盖范围。 同一款字的新版本可能新增了字符,也可能调整了字形。清单里记版本号,出问题时能对上是哪一版。
四、选字时怎么把风险降下来
思源黑体 的覆盖范围是它的长处。 简繁覆盖完整、字重齐全,做需要兼容多地区文案的项目,缺字概率低。
需要规范简体时选带 GB 后缀的版本。霞鹜文楷 GB 面向简体规范字形,和基础版不是同一份文件,字符覆盖也有差别,按项目语言环境挑。
界面类项目优先看系统适配。鸿蒙黑体 与 MiSans 都以屏幕显示为目标设计,字面清晰,在小字号下的可读性更稳。
正文款定一款覆盖广的兜底。 标题可以有个性,正文和兜底要稳。字体栈里把覆盖广的那款放在末尾,缺字时的替换结果才不至于太跳。
验收时在真机上看一遍。 设计软件里的预览用的是桌面渲染,和手机上的字体加载、回退逻辑不是一回事。交付前用安卓和 iPhone 各打开一次,问题会直接暴露。
五、装字体这件事,手机上更麻烦
手机上装字体比电脑受限。 系统字体目录通常不开放,能装的渠道少,装完还要重启应用才生效。做移动端项目时,把字体打包进应用或按需加载,比让用户自己装现实。
不必把字体全装进系统。 多款字体同时试用时,系统字体列表会越拉越长,也容易装到旧版本:
- 字由客户端:下载安装后,在客户端里激活想用的字体,PS / AI / Sketch 自动识别,免去装系统的麻烦。猫啃网提供官方下载入口。
嵌进应用要单独确认授权。 把字体文件打进安装包,属于嵌入行为,和排版使用不是一回事,多数协议对这一项有单独约定。
授权说明
显示问题解决之后,还要确认这款字能不能这么用,按三步核。
第一步,确认字体全名。 带“GB”“简”“屏显”后缀的版本,字符覆盖和字形都可能有差别。排查缺字时记下的是哪一版,授权核对时也要用同一个名字。
第二步,查协议类型。 常见几类:开源协议(如 SIL OFL、MIT、GPL)、作者声明免费商用、保留字体名称条款。开源协议文本公开可查,作者声明的范围由声明自身界定,要连版本一起看。
第三步,核使用场景。 印刷、网页、视频通常都在允许范围内;把字体嵌入 App、小程序、电子书,或用于 Logo 商标注册时,要单独确认。移动端项目里,嵌入是常见也容易被忽略的一项。
留凭证。 把字体全名、版本号、获取日期、许可页面截图和链接存进同一个文档。字符覆盖范围也一并记下,后续新增文案时能快速判断会不会缺字。
常见问题(FAQ)
问:电脑上能看到,手机上变方块,是字体坏了吗?
多数不是。更常见的原因是手机端字体没有加载成功,或者这款字的字符覆盖不到那个字。先确认字符在不在字库里,再查加载配置。
问:为什么只有几个字换了字形?
这是回退。主字体里没有这几个字,系统顺着字体栈往下找,用了下一款。要统一字形,得换一款覆盖更全的字体,或者在字体栈里补一款字形接近的兜底。
问:同一款字,安卓和 iPhone 显示不一样,正常吗?
正常。两套系统的字体加载、回退和渲染机制不同,同一份文件也可能有细微差异。验收时两端都看,别只测一台。
问:把字体打进 App 安装包要注意什么?
嵌入属于单独的使用场景,要先看协议是否允许,再确认授权范围是否覆盖应用分发。只买了排版授权就打包分发,属于超范围。
小结
手机端显示不全,先分清是缺字、加载失败还是回退,再按“字符在不在字库、编码对不对、族名写没写错、回退链有没有兜底、渲染有没有被覆盖”的顺序查。选字阶段看字符覆盖范围,简繁混排和生僻字提前试,交付前用真机验一遍。嵌入应用要单独确认授权,凭证和版本号一起留。
猫啃网

