25

I have a new business-class laptop and Windows 10, with an external monitor connected via HDMI.

Both monitors (i.e. the laptop's and the external monitor) are 1920x1080 but the external monitor is physically bigger than the laptop's.

When I drag a window from one monitor to the other, the window's contents resize: the size of text is physically about the same on both monitors, and the larger monitor is able to show more text within a window.

My question is, does Windows really know the physical size (and/or DPI) of the external monitor, or is it only guessing?

More specifically, if I were to connect a slightly larger external monitor, would it be able to show slightly more on the larger window ... or would it only show the same content/layout but slightly bigger text?

44

Yes, it does know

Monitors are sending EDID data which contains some information about the display, including its physical dimensions. Here's an example from my older question/answer:

Screenshot of MonitorInfoView

Note the Maximum Image Size row, which says 52 × 29 cm (23.4 inch). So Windows does know physical dimensions of the display.

(The program depicted reads this information from Windows registry rather than query the monitor. EDID data is recorded by Windows for all monitors which were connected to the system.)

Windows probably uses this information

This is pure speculation based on my experience. The answer by @kreemoweet suggests that Windows may make these decisions based on some hardcoded information rather than, or in conjunction with, EDID information.

In the Display Settings you can set display scaling in 25% increments. On 14" laptops the highest available scaling option is 175%, while 15.6" ones can't scale over 125%. It seems to me that Windows makes sure on-screen elements aren't physically larger than some arbitrary dimension.

I think this information may also be used to pick default display scaling during Windows installation and for the initial settings. If someone can confirm or deny this, please do!

You're observing different scaling settings

In modern Windows versions (8 and newer, I think) you can set separate scaling factors for each display. Each window is scaled according to settings for a monitor which contains largest part of the window. The goal is to compensate for different pixel density and achieve roughly the same physical dimensions of desktop content on all displays.

That's why if scaling settings are different, when a window is dragged across a screen border it will at some point suddenly shrink or grow on both displays once middle of the window is on another display.

| improve this answer | |
  • 2
    All that info & it does nothing useful with it;) I've seen it treat 55" TVs just the same as 27" monitors, icons like dinner plates on one, normal on the other. I'm stuck with my answer, though, as it's been marked accepted. – Tetsujin Oct 29 at 10:54
  • 1
    TYVM. I hadn't seen how to use the "Settings/Display" UI to specify a different "Scale and Layout" for the different monitors (I thought it was the same for all monitors), but I figured that out now. – ChrisW Oct 29 at 11:09
  • 1
    There is no requirement that monitor manufacturers populate the EDID correctly, or at all. As such Windows cannot use EDID information because there is no guarantee it is accurate. – Ian Kemp Oct 29 at 12:42
  • 8
    @Tetsujin Keep in mind the last remaining factor: distance between viewer and display. There's probably no reliable way to tell from the EDID data, but from a practical perspective it will often make sense for a display further away to have relatively larger rendering. – Bob Oct 29 at 14:19
  • 1
    @gronostaj nirsoft.net/utils/monitor_info_view.html thx – Benj Oct 31 at 10:10
14

Windows works in logical units (inches). Its simply dpi divided into monitor's resolution. A logical inch is bigger on a bigger display.

This tells you what windows knows. Type in a command prompt.

For the monitor

wmic path Win32_DesktopMonitor get /format:list

For the Video settings

wmic path Win32_VideoController get /format:list

For a list of possible settings

wmic path CIM_VideoControllerResolution get /format:list

More specific to multi monitor is here

https://docs.microsoft.com/en-us/windows/win32/gdi/the-virtual-screen

| improve this answer | |
  • 1
    I have removed the math until OP can clarify – Steven Penny Oct 30 at 21:30
5

Often, but not always.

At work we have an application that needs to know the physical sizes of monitors in order to display maps with the correct scale. We request the EDID information from Windows for that, and it works in many cases, but not always. It's unfortunately sometimes necessary that the user overrides the size manually. We haven't found a pattern in monitors that do and don't supply the information.

As a side note, keep in mind that some devices don't really have a physical size: projectors and VR headsets come to mind.

| improve this answer | |
  • Does your application's having to ask imply that the O/S doesn't know, or if it does know then it doesn't use that information automatically? – ChrisW Oct 29 at 12:25
  • @ChrisW: If I'm not mistaken the O/S sometimes even reports wrong information. So we have a checkbox "determine size automatically" (which is on by default), in which we case we use the info from the O/S. The user can uncheck that checkbox and edit the size for each monitor (in case the system has multiple) using edit boxes that we prepopulated with the EDID info. – Roel Schroeven Oct 29 at 12:33
  • @ChrisW I think all modern off-the-shelf monitors send some EDID data. EDID permits to not provide physical dimensions though (projectors were the intended use case). There's also the problematic case of displays wider/higher than 255 cm, that's the max value EDID dimension fields can store. I'm curious what's reported by DIY monitor boards which connect to laptop-compatible displays and provide HDMI/DP inputs. Also what's the role of monitor.sys mentioned by @kreemoweet. – gronostaj Oct 29 at 12:40
3

According to industry EDID specs, monitors are supposed to supply quite a bit of information to the OS/video driver about its capabilities. That includes pixel resolutions available, clock frequencies, manufacturer name and model number, and screen dimensions to the nearest millimeter. Theoretically, that information enables the OS/video driver to perfectly scale its output to maintain uniform font sizes, etc., between one monitor and another. Sometimes some of that EDID information is missing or incorrect. Windows contains a database of various monitor specs in one of its built-in drivers (monitor.sys) that it can consult in such cases. Sometimes not even that is available.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.