Does Windows know physical size of external monitor?

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?


Solution 1:

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.

Solution 2:

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

Solution 3:

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.

Solution 4:

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.