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.

12
  • 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 '20 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 '20 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 '20 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 '20 at 14:19
  • 1
    @gronostaj nirsoft.net/utils/monitor_info_view.html thx
    – Benj
    Oct 31 '20 at 10:10
15

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

1
  • 1
    I have removed the math until OP can clarify
    – Zombo
    Oct 30 '20 at 21:30
6

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.

3
  • 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 '20 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. Oct 29 '20 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 '20 at 12:40
5

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.

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.