Mac系统HiDPI问题

作者: 北静王 | 来源:发表于2017-07-20 23:54 被阅读3115次

我用mac就是因为人家好看,还好用。再不济我会选择Linux,因为人家好用而且也不丑。

** 重要的事情说3遍,连接Macbook和显示器的线缆一定是DP口的。**
** 重要的事情说3遍,连接Macbook和显示器的线缆一定是DP口的。**
** 重要的事情说3遍,连接Macbook和显示器的线缆一定是DP口的。**

0. 我们看屏幕的时候到底看到的是什么?

大手牵小手

随着技术的进步,相同大小的屏幕能够放进去更多的”灯泡“,分辨率也在逐步提升,以至于我们人眼不再分辨出”颗粒感“,也就是屏幕的分辨率和你视网膜的分辨率一样大,或是屏幕的分辨率更大的时候我们得到了一个”视网膜“屏幕。

当我们有了一个大的分辨率屏幕的时候,我们想要显示的内容的分辨率是一定的时候,显示内容在屏幕上占有的实际面积就越来愈小。我们看着当然不爽,最简单的解决办法就是用4个发光的灯泡来显示同样的一个色彩点,对硬件设备的分辨率进行下采样,这样在屏幕上显示的面积就是原来的4倍大小,但是并没有降低视觉上的分辨率。

1. 什么是HiDPI技术?

HiDPI (High Dots Per Inch) displays, also known by Apple's "Retina Display" marketing name, are screens with a high resolution in a relatively small format. They are mostly found in high-end laptops and monitors.
Not all software behaves well in high-resolution mode yet. Here are listed most common tweaks which make work on a HiDPI screen more pleasant.

简单来说就是在硬件设备上面使用多个像素点位置来合成一个我们看到的像素。这需要的是软件的支持和一款大分辨率屏幕。


乔帮主在介绍retina屏幕

上么的图显示的是乔布斯在介绍“Retina”技术,左边是一般的屏幕的抗锯齿算法,由于屏幕实际分辨率的限制,造成了窗口或字体会有一种毛刺的效果。而右边的则是macbook上应用的视网膜技术,由于分辨率提升了一倍,所以看着会更顺滑,所以在mac上看文档,打字真的是一种享受。


高分辨率(上)和低分辩率(下)实际效果
我们可以简单的将右边的技术理解为HiDPI技术,如果我们按照屏幕实际的分辨率来调整桌面的话,你会发现系统的字体会很小,并且窗口和字体会出现模糊毛边的效果,如果单纯的降低分辨率的话,字体倒是变大了,但是模糊和毛边的效果更加严重了,这就是单纯降低分辨率而不做抗锯齿操作会放大锯齿的后果。

2.实际操作

先贴下我的硬件信息:

笔记本:Macbook pro 2012(975,带一块低端的1G独显)
显示器:Dell U2417H+Dell U2518DR
       实际分辨率分别是1920 x 1080和2560 x 1440。
系统版本:macOS Sierra (ver 10.12.5)

我一下午重启了无数次电脑都没有成功的原因就是用了一条HDMI的线缆。最后换了线缆成功的那一刻,内心真的是。


去你妈的HDMI

今天心心念的屏幕到了,连午饭都没吃就开始将Dell U2417H替换下来,装上新的Dell U2518DR,为什么选择这两款屏幕。因为这两款屏幕真的是很惊艳,四个边框真的很窄。大家可以找找网上的评测,其中2417是2414的升级版,2518是2515的升级版。本来想直接上一款4k的屏幕,后来担心我那岁数大的macbook带不动就万事休矣。最后选择了一款1080和一款2k的先凑合用着。当然上面的都是废话,下面直接切入正题:怎么在2k屏幕上面显示成retina内建屏幕的效果。

mac的retina屏幕自带缩放模式,在win下用户遇到的问题是当屏幕的分辨率越高的时候,系统字体会比较小,可以使用缩放来完成字体的放大(比如放大到原来的150%)。但是当mac外接屏幕的时候,他的缩放就显得有点鸡肋了,当然如果你外接的是4k或是5K的屏幕的时候,屏幕本事自带的是HiDPI就能解决字体过小、模糊不平滑问题。这个已经向好友刚子求证过了。只记住了他对高分辨率屏幕的点评:原来括号是这样子的啊。

之前用1080分辨率(23.8寸)屏幕的时候已经能感觉出很大的颗粒感了,原因是习惯了mac自己的屏幕,就像你看惯了1080P的电影再看720p的电影会很难受,就像你听惯了无损的歌曲,再听320k的歌曲的时候耳朵受不了一个样子。

感谢大家看到这里还在看,这篇非技术贴。下面是干干干货。


方案一(未测试):
这种方法适宜程序员类,或是你熟悉Mac的操作。

  • 管理员权限运行下方的命令开启本机的HiPDI选项
    sudo defaults write /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled -bool true

  • ioreg -l | grep "DisplayVendorID"
    ioreg -l | grep "DisplayProductID"
    上面的两个命令会返回两个带10进制数字的结果,记下来,转换成16进制数字,其中第一个是用来命名文件夹的,第二个是用来命名文件的。

  • 在任意位置(桌面上比较好)建立一个文件夹,并在文件夹中命名一个文件,其中文件夹的名字为DisplayVendorID-XXX,文件的名字为DisplayProductID-XXX,XXX则是前面转换成16进制的两个数字。

  • 文件的内容是一个plist格式的文件,内容如下,可以使用xcode编辑工具编辑。

<?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>10496</integer>
        <key>DisplayVendorID</key>
        <integer>8547</integer>
        <key>scale-resolutions</key>
        <array>
                <data>
                AAAKAAAABkAAAAABACAAAA==
                </data>
                <data>
                AAAUAAAADIAAAAABACAAAA==
                </data>
                <data>
                AAAKAAAABDgAAAABACAAAA==
                </data>
                <data>
                AAAUAAAACHAAAAABACAAAA==
                </data>
                <data>
                AAAHgAAABDgAAAABACAAAA==
                </data>
                <data>
                AAAPAAAACHAAAAABACAAAA==
                </data>
                <data>
                AAAGkAAABBoAAAABACAAAA==
                </data>
                <data>
                AAANIAAACDQAAAABACAAAA==
                </data>
                <data>
                AAAGQAAAA4QAAAABACAAAA==
                </data>
                <data>
                AAAMgAAABwgAAAABACAAAA==
                </data>
                <data>
                AAAFoAAAA4QAAAABACAAAA==
                </data>
                <data>
                AAALQAAABwgAAAABACAAAA==
                </data>
                <data>
                AAAINAAAA4QAAAABACAAAA==
                </data>
                <data>
                AAAQaAAABwgAAAABACAAAA==
                </data>
        </array>
</dict>
</plist>

如果我想使用AxB的分辨率,那么我需要同时添加一个AxB和2Ax2B的分辨率,一个原始分辨率和一个加倍的分辨率。

  • 最后把文件夹直接拷贝到/System/Library/Displays/Contents/Resources/Overrides/

方案二(已经测试):
使用软件SwitchResX,不过最新的系统会有点问题,请参考这篇文章解决解决方案

方案三(已经测试):
按照这个Github中的步骤利用脚本为本机开启HiDPI选项。Github地址

方案四(未测试):
这个Github的项目貌似更加靠谱。Github地址

参考

  1. Wiki-HiDPI
  2. 有关retina和HiDPI那点事
  3. 分不清HiDPI和Retina显示器?─ 认识4K时代的像素密度
  4. How to Enable HiDPI Mode in Mac OS X
  5. macOS-10-12-Sierra开启HiDPI

相关文章

网友评论

  • ripperhe:大哥,方案3那个仓库,我测试之后,不仅没有作用,而且还电脑高温不下~
    有没有什么办法回退啊,就是方案3那个,回退到设置之前~
    北静王:额,你的系统和mac是哪个型号的
  • ripperhe:果然必须要DP线
    北静王:@ripperhe 是啊,应该是传输功率的问题
  • cloud_sky_z:你最后用的什么线
  • QFP_ZJT:十分感谢楼主的分享,想请教一下,Macbook Pro 2015 retina 连接 P2416D的时候是不是也需要用DP口的线,用的是雷电接口转DP吗?
  • c3454df012a5:笔记本外接了一个显示器,执行一个命令会获取两个 ID:
    ➜ ~ # ioreg -l | grep "DisplayVendorID"
    | | | | "DisplayVendorID" = 1552
    | | | | "DisplayVendorID" = 1138
    北静王:一个是你笔记本的显示器的ID,一个是外接屏幕的ID。你可以将自己的笔记本合上,只用外界屏幕。

本文标题:Mac系统HiDPI问题

本文链接:https://www.haomeiwen.com/subject/uldjkxtx.html