*近在使用MacBookPro时,觉得屏幕不够大,外扩一个三星显示器,使用HDMI接口连接至MBP,结果发现,三星显示器画面模糊或虚化严重,几乎看不清的节奏。无法忍受,觉得是HDMI线材太差,但是换一台T420笔记本(Windows 7)后,显示器画质正常(远好于此时的MBP)。显然,是MBP引起。

问题定位
MacBookPro外接第三方显示器会被识别成电视,导致字体模糊,和字体渲染方式以及线材没有关系。跟颜色空间的选择有关,TV使用的是YCbCr空间,需要将其强制转换为RGB空间即可。

解决步骤
*步:关闭系统保护
由于macOS默认启用了System Integrity Protection(又称为rootless),因此我们需要暂时解除,一遍后面的步骤可以顺利进行。要关闭rootless,需要重启macOS,按住CMD+R进入恢复模式。选择Utilities菜单,打开终端Terminal,并输入csrutil disable。成功的话会提示“Successfully disabled System Integrity Protection”的字样。然后重启。

通过csrutil status可以查看当前的系统保护状态。

第二步:生成DisplayVendorID文件夹
下载脚本到本地、解压后得到patch-edid.rb,在Terminal中输入ruby patch-edid.rb运行脚本,会产生一个DisplayVendorID-4c2d文件夹,4c2d是编号,不同的显示器会有区别。

第三步:替换系统文件
先备份!备份!!备份!!! /System/Library/Displays/Contents/Resources/Overrides文件夹!

然后,终端中输入sudo cp -R DisplayVendorID-4c2d /System/Library/Displays/Contents/Resources/Overrides。拷贝成功之后,拔掉显示器接口,再接上,即可看到显示效果明显改进。然后必须执行下一步!

话说,如果没有改进,说明此方法不能解决你的问题。可能是由于HDMI线材或其他因素导致。另外,如果拷贝文件时出现权限不允许,请重新检查是否已经成功执行*步。

第四步:【重要】重新启用系统保护
在*步中,我们禁用了系统保护,这是很危险的。完成第三步操作后,可以参照*步的做法,将csrutil disable改为csrutil enable即可。