放假的电话

Enable HiDPI to fix the blurry fonts on Macbook's external monitor

The blurry font on a Macbook’s external monitor is a nightmare! I tries many methods and finally found that enabling HiDPI works.

This says something about forcing RGB mode to fix the problem. However, it doesn’t work for me. I found the one that works here.

Instructions

What you will need to do is:

  1. Enable HiDPI. In a terminal, enter:

    1
    sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool YES
  2. Next, you will need to get your DisplayVendorID and DisplayProductID.
    In a terminal, enter ioreg | I. You can find the DisplayVendorID and DisplayProductID in the output. For example, my monitor is DELL E2314H, the DisplayVendorID is 4268 and the DisplayProductID is 61517.

  3. OK, now, create a folder called: DisplayVendorID-XXXX. Here, XXXX is your DisplayVendorID in hex. For example, mine is DisplayVendorID-10ac.

  4. Create a file named DisplayProductID-YYYY in the folder. Of course, YYYY is your DisplayProductID in hex like DisplayProductID-f04d.

  5. In the file, enter the codes:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>DisplayProductID</key>
    <integer>61517</integer>
    <key>DisplayVendorID</key>
    <integer>4268</integer>
    <key>scale-resolutions</key>
    <array>
    <data>
    AAAGQAAAA4QAAAABACAAAA==
    </data>
    <data>
    AAAMgAAABwgAAAABACAAAA==
    </data>
    <data>
    AAAFoAAAAyoAAAABACAAAA==
    </data>
    <data>
    AAALQAAABlQAAAABACAAAA==
    </data>
    </array>
    </dict>
    </plist>
  6. The data field is what you need to change. For example, if I want 1600*900 HiDPI, I need two resolutions. One is 1600*900, the other is 3200*1800. Converting these values into hex and appending 00000001 00200000, we can get two values:
    1
    2
    00000640 00000384 00000001 00200000
    00000C80 00000708 00000001 00200000
  7. You can use PlistEdit Pro to easily edit the values in that file.
    plistediit
  8. Once finished, copy the folder into /System/Library/Displays/Overrides/. Remember to back up the folder in that directory in case something goes wrong.
  9. Log out and then log in.
  10. Now, you can use SwitchResX or RDM to switch the resolution.

Tip

I found that the 1600*900 resolution works best on my monitor which is 1920*1080 actually.