MacBook外接显示器字体发虚,识别为电视机

外接显示器时OS X会把外接显示器识别成电视机,改用 YCbCr 色域来输出,而不是用液晶显示器标准的 RGB ,并会在外接显示器上自动关闭字体平滑效果。原文参考

  1. 保存下面代码为 patch-edid.rb 点击下载
  2. 外接显示器,让其识别并显示。
  3. 在命令行终端下键入如下命令:ruby patch-edid.rb
  4. 把生成的DisplayVendorID-xxx (如:DisplayVendorID-5e3)文件复制到 到/System/Library/Displays/Contents/Resources/Overrides

若第4步失败,暂时停用系统保护:
按下开机键时即刻按住 command R(“R”字母键),中间的苹果标志及进度条出现后放开按键,等待恢复安装界面和 “OS X 实用工具” 窗口出现后,点击顶部菜单栏的 “实用工具”,在其下拉菜单点选运行 “终端”,在终端闪动字符的位置直接输入“csrutil disable” 并回车,重新启动电脑。

#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710

require 'base64'

data=`ioreg -l -d0 -r -c AppleDisplay`

edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
productid=data.match(/DisplayProductID.*?([0-9]+)/i)[1].to_i

puts "found display: vendorid #{vendorid}, productid #{productid}, EDID:\n#{edid_hex}"

bytes=edid_hex.scan(/../).map{|x|Integer("0x#{x}")}.flatten

puts "Setting color support to RGB 4:4:4 only"
bytes[24] &= ~(0b11000)

puts "Number of extension blocks: #{bytes[126]}"
puts "removing extension block"
bytes = bytes[0..127]
bytes[126] = 0

bytes[127] = (0x100-(bytes[0..126].reduce(:+) % 256)) % 256
puts 
puts "Recalculated checksum: 0x%x" % bytes[127]
puts "new EDID:\n#{bytes.map{|b|"%02X"%b}.join}"

Dir.mkdir("DisplayVendorID-%x" % vendorid) rescue nil
f = File.open("DisplayVendorID-%x/DisplayProductID-%x" % [vendorid, productid], 'w')
f.write '

'
f.write "

  DisplayProductName
  Display with forced RGB mode (EDID override)
  IODisplayEDID
  #{Base64.encode64(bytes.pack('C*'))}
  DisplayVendorID
  #{vendorid}
  DisplayProductID
  #{productid}

"
f.close

你可能感兴趣的:(MacBook外接显示器字体发虚,识别为电视机)