How To Change The Fonts In Windows 8

In Windows 8

  1. Open regedit (press Win+R and type regedit)

  2. Edit the following value and replace the font that you want:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\FontSubstitutes\MSShellDlg
    
  3. Edit the following value and replace the font that you want:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\FontSubstitutes\MSShellDlg 2
    

As for font size, go to Control Panel → Video → Advanced Appearance, and change it there.


My educated guess is that they're heading for a unified look and feel on Windows platforms, so it's not adjustable.

I found some entries in the Registry (HKCU\Control Panel\Desktop\WindowMetrics, amongst others), but they are stored in binary and therefore difficult to change. Segoe seems to be the favourite.


You can do that without any third-party software, and without local admin access. Open up the Registry Editor and navigate here:

HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics

The fonts used are stored in these binary values:

  • CaptionFont: window captions
  • IconFont: most text in Windows utilities (including desktop icons)
  • MenuFont: menu strips and submenu entries
  • MessageFont: message boxes
  • SmCaptionFont: "small captions"? (TechNet)
  • StatusFont: status bar strips

Each of those entries starts with a four-byte value specifying the font size. It's a number in little-endian and binary-NOT'ed after adding 2, for some reason. Unless you need font sizes over 255 points, you can just look at the first byte. Since the binary inverse of F4 is 0B (11 in decimal), the default IconFont size is 9 points. Decreasing that first byte will increase the font size and vice versa.

The font name starts at byte 1C (fifth byte on the fourth row). Since it's in UTF16-LE, there must be a zero byte after each character. To enter a normal character, select the text in the right half of the window and just type it as normal on your keyboard. To zero a byte, select it in the middle (in the hexadecimal section) and press the zero key. Since the string is null-terminated, 00 00 signals the end of the font name.

This is the default value of IconFont:

IconFont before

And after I set it to Comic Sans MS:

IconFont after editing

Log off and back on for the changes to take effect.

Explorer with the new font

Beautifully horrifying.

Note: These screenshots were taken on Windows 10, but this procedure works in Windows 8 as well.