MacOS 解决 CS:GO 社区服中文乱码问题
众”苹果电脑用户”周知,苹果系统玩V社部分 Source 引擎的游戏,中文是没法正常显示的,当然也包括CS:GO。
在 CS:GO 中,除了全景UI上的中文能够正常显示(游戏主界面、游戏内聊天框、拆弹倒计时等),其它地方的中文均不能正常显示(如社区服左侧菜单、HUD文本、游戏辅导消息等),整个界面看起来如下图

去年8月我在github上给V社 csgo-osx-linux 项目提了个 issue,隔天版主给上了个标签后这件事就不了了之了。
直到昨天突然有人回复了这个issue,给了一个解决办法(特此感谢这位用户)

围绕着这个方法折腾了一阵子居然真的给我弄好了,所以这篇文章接下来就是关于这个方法的操作步骤,动手能力强的大佬可以直接开干不用往下看了(
此方法截至文章发布前,在 MacOS Catalina 10.15.5 上测试通过。
首先是下载 FontForge,下载地址:https://fontforge.org/en-US/downloads/mac-dl/

下载完成后双击 dmg 文件打开,把 app 拖到应用程序内安装

接着在访达图表上按右键,点击“前往文件夹”,输入 /System/Library/Fonts/Helvetica.ttc
,点前往


接着就会自动定位到 Helvetica.ttc,此字体是 MacOS 默认字体,并且 CS:GO 部分界面是调用的这个字体文件,然鹅这个字体并没有包含中文,所以嗝屁。 把 Helvetica.ttc 和同级目录下的 Arial Unicode.ttf 复制一份出来,放在别的地方,然后打开 FontForge,左上角 File -> open,选中 Helvetica.ttc 打开。


Pick a font 默认选第一个就行了。

然后用同样的方法打开 Arial Unicode.ttf。
这时候你的桌面应该会有3个 FontForge 窗口,一个是默认的,另外两个是刚刚选择文件打开的。
重点:在 Helvetica 的窗口上,选 Element -> Merge Fonts, 在弹出的窗口中选中 ArialUnicodeMS,点OK


点了之后可能会卡一会,属于正常现象。
卡完之后,窗口往下拉,看到中文就说明合并成功了。

接下来在 Helvetica 的窗口上,左上角 File -> Generate TTC 生成字体文件

需要反选Untitled1 (不要勾),然后点 Generate 生成

点生成后又会卡一下,正常现象,正常来说卡完之后应该就生成完成了。
为了覆盖系统默认字体,我们需要关闭SIP(系统完整性保护),详见 这篇文章
进行了关闭 SIP 操作后,接下来打开终端(按 cmd+space 打开聚焦搜索,输入terminal),在终端输入下面两条命令,将生成的字体文件代替原来系统的字体文件:
1 | sudo mount -uw / |
提示:当终端显示 password:
时,请输入电脑密码,输入时终端没有反应是正常现象,输入完毕后按回车继续。
技巧:可以在访达中选中合并后的字体,按 cmd+option+c ,即可复制文件路径,然后替换掉上面命令的红色部分


(因为我先前已经输入过密码了所以这里没有要求我再次输入)
终端命令运行完之后可以用访达回到 /System/Library/Fonts/ 这个目录,看一下 Helvetica.ttc 的最后修改时间,如果更新了那就恭喜你操作成功了。

接下来可以打开游戏进行体验了,中文可以正常显示了,虽然有点别扭,但总归可以显示了,泪目

备注:
- 如果还不行试试重启电脑
- 记得备份原始字体文件
- 有后遗症:因为 Helvetica.ttc 是系统默认首选字体,被合并的中文字体可能会在电脑运行某些程序时被优先显示,这个只可意会不可言传(
最后分享一个本人合并好的Helvetica字体,按需自取:Helvetica.ttc.zip
本文首发于b站专栏 https://www.bilibili.com/read/cv6301036 ,因博客太久没更新略显尴尬故copy一份到这里充数(xd