mac应用文字显示方框、空心字等是字体注册层混淆所致,需先用字体册验证并停用标红/标黄问题字体,再清理~/library/caches/中fontcache相关项、执行atsutil命令重置ats服务,最后确认简体中文为首选语言且pingfang.ttc启用。

Mac上应用内文字显示为方框、空心字、问号或中英文混排错位,不是软件坏了,而是字体注册层出现混淆——系统在调用字体时拿错了文件、读了损坏缓存、或后备链断裂。这问题常见于Pages、Keynote、VS Code、Obsidian、Electron类工具(如Notion、Figma),也会影响终端和Java应用。
先用字体册隔离损坏/冲突字体
第三方字体包(尤其是“全集版”“汉化补丁”“盗版设计字体”)常与系统字体同名但结构异常,导致ATS服务加载失败。字体册能直接识别并停用它们。
打开“字体册”→左侧边栏选“所有字体”→菜单栏点击“文件”→“验证所有字体”。
等待扫描完成,重点看右侧列表:标红(❌)表示无法加载或元数据损坏;标黄(⚠️)多为重复名称或校验失败。右键点击任一问题条目→选择“停用 [字体名]”。【不要点‘移除’,停用即可逆回】
停用3~5个可疑字体后,重启出问题的应用(如Keynote或VS Code),观察乱码是否消失。若恢复,说明问题源已定位。
清掉字体缓存并重置ATS服务
缓存错乱会让系统明明装了微软雅黑,却坚持调用一个不存在的路径。必须同时清理用户级缓存和系统级数据库,再强制重建索引。
方法一(手动删缓存):打开访达→按Shift + Command + G→输入 ~/Library/Caches/→删除所有含 com.apple.ATS 或 fontcache 的文件夹。
方法二(终端重置):打开终端,依次执行以下三行命令(每行回车后输入管理员密码):
sudo atsutil databases -remove
atsutil server -shutdown
atsutil server -ping
执行完不要关终端,立即重启Mac。系统首次启动时会自动生成全新缓存,旧错误映射被彻底丢弃。
检查系统语言与字体链完整性
第一步:进入“系统设置”→“通用”→“语言与地区”,确认简体中文(中国)在语言列表顶部;若未添加,点击“+”加入后拖至首位。
第二步:打开“字体册”→菜单栏“编辑”→“设置”→勾选“当字体不可用时,使用其他字体”。
第三步:在字体册搜索框输入 PingFang.ttc →确认其状态为“已启用”,且来源路径是 /System/Library/Fonts/。若显示“已禁用”或来源为 ~/Library/Fonts/,说明系统默认字体被覆盖或迁移,需从同版本macOS安装包中提取补全。
【PingFang是macOS UI渲染的锚点字体,缺失或被替换将导致全局文字渲染断链】
针对特定应用的干预手段
方法一:Electron应用(Slack、Figma、Notion等)可绕过系统字体链,改用环境变量指定渲染字体:
打开终端,输入:
export ELECTRON_FONT_FAMILY="PingFang SC,SF Pro Display"
然后用命令行启动应用,例如:
/Applications/Notion.app/Contents/MacOS/Notion
方法二:Java应用(如老旧IDEA、JMeter)需强制UTF-8编码:
终端中运行:
java -Dfile.encoding=UTF-8 -jar /path/to/app.jar
方法三:终端乱码?进入“终端”→“设置”→“配置文件”→“文本”→将“字符编码”设为“Unicode (UTF-8)”,并关闭“仅使用ANSI颜色”选项。











