Solved Win11 24H2 Not remembering changes to fonts after reboot


This is from memory and what I can check from an Android tablet. My win 11 system is about 800km away. It's qn explanation of why thus isn't straightforward.

The documented way to do this is using the SystemParametersInfoA function


using SPI_SETICONTITLELOGFONT and SPI_SETNONCLIENTMETRICS options

In practice you would use the corresponding GET functions to create the appropriate data structures and only change the font size. Note that the font is actually sized in pixels. The registry entries for each font are LOGFONT structures. the first 4 bytes are long integer and negative.

So on the default setting of 9 point at 100% scaling (96dpi) pixel size should be -12. This does not seem to be properly dpi aware. I think that the registry entries are literal. It's easy to check this. the default value would then be -18 at 150% (144 dpi).

SystemParametersInfoA has an option to only change the settings until you logout. I assume winaero.com tweaker tries to make it permanent.

As to what value you should use with SystemParametersInfoA to set to 12 point if your windows scaling is not 100%, but 150%, I would check. It might be -18, or it might be -24.

If you use the maligned slider to change all font sizes simultaneously and step carefully through each value you should see that there are particular percentages when a lot of activity takes place, and others where much less happens. The obvious activity occurs when the size increases enough to get to the next (point or pixel) size. Although if you have a more modern application open (Firefox in my case) you can see tiny changes for every percent increase. I cannot remember where this value is eventually set in the registry, and I haven't discovered how to set it immediately.

One possibility is that windows will reset the scaling if the SystemParametersInfoA and the other setting aren't consistent.

Since I started writing this reports have been made that there isn't a problem if you don't use winaero tweaker.
 

My Computer

System One

  • OS
    Windows 11 23H2 Pro
    Computer type
    PC/Desktop
    Manufacturer/Model
    MSI
    CPU
    i3-1215U
    Memory
    8GB
    Monitor(s) Displays
    Dell S2721
    Screen Resolution
    3840x2160
    PSU
    External 65W
    Keyboard
    Cherry mechanical (Blue)
    Mouse
    Microsoft
    Browser
    FireFox
    Antivirus
    MS
I did not realize that the moderner version of Wintools font changer was a tool that you'll have to pay for now.

The version I mentioned still can be downloaded from here:
Advanced System Font Changer v1.2.0.37 @ oldergeeks.com
It's the same as @dacrone mentioned in #19, but as a matter of fact a lot older...

In my opinion that's still the the most userfriendly tool.

But now you have some choice which to use (if you'd like to try it anyway).

Hey Kees, thank you for providing the link to the older version. I tried this version of Advanced System Font Changer on a VM with a fresh install of 24H2, and it was able to retain the font changes after a reboot.

I also tried it on my main Windows installation, but in this case the changes were not retained after rebooting. Oh well. At least it is good to have this version of advchange that does not need payment.
 

My Computer

System One

  • OS
    Windows 11 24H2
    Computer type
    Laptop
    Manufacturer/Model
    Asus
    CPU
    AMD Ryzen 9 6900HS
    Memory
    24 GB
    Graphics Card(s)
    NVIDIA GeForce RTX 3060 Mobile
i'm curious now.. if you mod your metrics, sign out/in to make them take effect, and then save your theme in personalization.. can you apply a different theme, then reapply yours and it reapplies your custom metrics? if so you could schedule a task to reapply your custom theme at each boot/logon
 

My Computer

System One

  • OS
    Windows 11 Pro
I also tried it on my main Windows installation, but in this case the changes were not retained after rebooting.
The only thing that little app does is changed the values of the WindowsMetrics in the registry in a somewhat more comfortable way than doing it directtly in the registry. There is nothing whatsoever part of that app staying in your system after closing it!

So your main Windows installation must have some other app or part of the Windows startup, that is resetting the WindowsMetrics at startup. And I think that's what you'll have to look for: what reason exists that the registryvalues are being reset at startup? Some task in the task scheduler that does this? Will be a mighty job to search that, because there are many tasks started automatically at system startup...

That's all I can say about it at the moment.
 

My Computer

System One

  • OS
    Windows 11 Pro 23H2 22631.4460
    Computer type
    PC/Desktop
    Manufacturer/Model
    Build by vendor to my specs
    CPU
    AMD Ryzen 7 5700G
    Motherboard
    MSI PRO B550M-P Gen3
    Memory
    Kingston FURY Beast 2x16GB DIMM DDR4 2666 CL16
    Graphics Card(s)
    MSI GeForce GT 730 2GB LP V1
    Sound Card
    Creative Sound Blaster Audigy FX
    Monitor(s) Displays
    Samsung S24E450F 24"
    Screen Resolution
    1920 x 1080
    Hard Drives
    1. SSD Crucial P5 Plus 500GB PCIe M.2
    2. SSD-SATA Crucial MX500-2TB
    PSU
    Corsair CV650W
    Case
    Cooler Master Silencio S400
    Cooling
    Cooler Master Hyper H412R with Be Quiet Pure Wings 2 PWM BL038 fan
    Keyboard
    Cherry Stream (wired, scissor keys)
    Mouse
    Asus WT465 (wireless)
    Internet Speed
    70 Mbps down / 80 Mbps up
    Browser
    Firefox 130.0
    Antivirus
    F-secure via Internet provider
    Other Info
    Router: FRITZBox 7490
    Oracle VirtualBox 7 for testing software on Win 10 or 11
Nothing seems to hold permanently, so far.

Am now trying WinPaletter as suggested by @dacrone
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
It has been a few days since I last updated the thread.

In that time I had to do a repair install of 24H2, as this week's Windows Update would not install. Anyway, that is now fixed.

Relating to the original question, I have tried everything that has been suggested in this thread, and nothing works (at least not forever!). Sometimes after a reboot my new settings are still there, and sometimes they are not! Go figure!!!!
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
Safer bet would be to export the reg keys after making desired changes and creating a batch to import them and schedule it to run at logon
Would you mind telling me how to create the file and to do that please.
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
- export the reg keys you need/want to reapply each startup

- Place those inside a folder (idk... C:\temp)

- inside the same folder, make a batch containing this:

Code:
@echo off
regedit /s "%~dp0YOUR_REG_FILE_NAME.reg"
exit /B

- create an elevated shortcut to that .bat file (you can use winaero to make it quickly, or use the tutorial to make it manually)

- place the elevated shortcut inside of shell:startup folder
 

My Computer

System One

  • OS
    Windows 11 Pro
Thank you.
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
I also had an issue with font sizes randomly reverting to someone's demented idea that everyone should run font size 9 whether they like it or not. Resistance is futile..... you will use font size 9 :rolleyes:
I fixed this by creating a reg file that changes the font and font size to my preferred size 11 for both current user and default user to stop the damned reversion.
This screenshot shows the value that controls the font size... f3 is the default which translates to a font size of 9 and f1 sets the font size to 11 so f0 will be font size 12.
1730540150578.png
In WinAero, if you don't log out and back in again after each individual change you will lose the changes. So it is easy to do 1 font change in WinAero, log off and back on again, go to the key in regedit copy the gobbledegook values for the font you changed into my reg file for every font you wish to change to those values. Do it for default user as well if you don't want constant reversions.
All that is needed is to right click on the reg file and select Merge... log off and back on again... voila! You are now a divergent.
 

Attachments

My Computers

System One System Two

  • OS
    Win11 24H2 26100.2314
    Computer type
    Laptop
    Manufacturer/Model
    Asus E1504FA
    CPU
    Ryzen 5 7520U
    Memory
    16GB DDR5
    Graphics Card(s)
    Integrated graphics
    Screen Resolution
    1920
    Hard Drives
    512GB Samsung NVME PCIe 3.0
    Browser
    Vivaldi
    Antivirus
    Nil
  • Operating System
    Linux Manjaro
    Computer type
    Laptop
    Manufacturer/Model
    Asus A53E
    CPU
    2nd gen I5
    Memory
    8GB DDR3
    Graphics card(s)
    Integrated graphics
    Hard Drives
    256GB SATA SSD
    Browser
    Firefox
    Antivirus
    Nil
How do you make them into larger font sizes please?
Eg. 19 Bold and 18 normal.
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
- export the reg keys you need/want to reapply each startup

- Place those inside a folder (idk... C:\temp)

- inside the same folder, make a batch containing this:

Code:
@echo off
regedit /s "%~dp0YOUR_REG_FILE_NAME.reg"
exit /B

- create an elevated shortcut to that .bat file (you can use winaero to make it quickly, or use the tutorial to make it manually)

- place the elevated shortcut inside of shell:startup folder
Fortunately this works well. Unfortunately it does not change anything, until a Sign Out, Sign In, run it again (i.e. a scond time), Sign Out and Sign In again.
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
Font sizes are denoted by a hex value counting backwards from FC (hex values) i.e. FB is font size 1, FA is font size 2, F9 is font size 3 etc.
The pic below shows a font size of 20 (E8) and a type face of Sans Serif Bold (chosen in WinAero and the resulting change to reg key manually copied into a reg file as needed).
1730585584226.png
 

My Computers

System One System Two

  • OS
    Win11 24H2 26100.2314
    Computer type
    Laptop
    Manufacturer/Model
    Asus E1504FA
    CPU
    Ryzen 5 7520U
    Memory
    16GB DDR5
    Graphics Card(s)
    Integrated graphics
    Screen Resolution
    1920
    Hard Drives
    512GB Samsung NVME PCIe 3.0
    Browser
    Vivaldi
    Antivirus
    Nil
  • Operating System
    Linux Manjaro
    Computer type
    Laptop
    Manufacturer/Model
    Asus A53E
    CPU
    2nd gen I5
    Memory
    8GB DDR3
    Graphics card(s)
    Integrated graphics
    Hard Drives
    256GB SATA SSD
    Browser
    Firefox
    Antivirus
    Nil
I've been following this discussion to see if I need to postpone moving to 24H2. I'm still not clear about this. I have used the text size control in settings up to now.
Safer bet would be to export the reg keys after making desired changes and creating a batch to import them and schedule it to run at logon
This didn't work, which would tally with all earlier versions of Windows. Logoff and logon again has always been required when changing the WindowMetrics key contents. It's conceivable that you could change the key before it is referenced at user logon. Possibly from a logon script. These are started by userinit.exe which is resposible for the logon provcess. You might have to set the scripts to eun synchronously.
However, as reverting the settings is for the logging on user, it's no more likely to work than import, logoff, logon. There is obviously a test for applied dpi at logon. If you change monitor, or rdp form a system with a different setting WindowMetrics is obviously rewritten, just as it is when you change scale in settings.

Obviously WindowMetrics is also rewritten when you use Accesibily - Text size, and make a large enough change.

So, I think the most likely explanation is that there is some kind of consistency check which is resetting Text size, for reasons other than applied dpi changes. Although I can't think of any explanation as to why it doesn't always happen.

Candidates for inconsistency are those cited in Change Text Size in Windows 11 Tutorial e.g.
HKEY_CURRENT_USER\Software\Microsoft\Accessibility\TextScaleFactor
and any of the height and width settings. I thought that changing the font size using the SystemParametersInfoA function (see #21) would automatically fix these, but I've never checked.

Whether changing the font or the weight would be off-limits I've no idea. This suggests some testing by those blessed with a 24H2 system.

Does using only "Accesibility - Text size" stick?
If that does can you do a manual weight or font change, and have that stick?
Can you get away with a small (say 1 unit change)? And do es the change have to be make the font smaller?

I fixed this by creating a reg file that changes the font and font size to my preferred size 11 for both current user and default user to stop the damned reversion.
This doesn't do what you think it does, as Raymond Chen explains: The .Default user is not the default user - The Old New Thing and he really is the expert.

One other gem. The Text size system is rather odd. A change to the font sizes in WindowsMetrics occurs each time you reach a percentage high enough to increase the pxel size to the next whole number from the starting point of 12 pixels. i.e.
109​
117​
125​
134​
142​
150​

etc. You can use the arrow keys to easily get to the exact percentage. A number of these won't correspond to an exact point size, although 125 which will get you to 12 point will. However, TextScaleFactor (affecting modern applications) will change for every percetnage point as you can see from the preview.

In theory you could change the settings using SystemParametersInfoA without saving them as permananent and include that in a logon script. I'll see if I can do this.

Mike
 

My Computer

System One

  • OS
    Windows 11 23H2 Pro
    Computer type
    PC/Desktop
    Manufacturer/Model
    MSI
    CPU
    i3-1215U
    Memory
    8GB
    Monitor(s) Displays
    Dell S2721
    Screen Resolution
    3840x2160
    PSU
    External 65W
    Keyboard
    Cherry mechanical (Blue)
    Mouse
    Microsoft
    Browser
    FireFox
    Antivirus
    MS
Alternate Tools - Alternate Font Sizer will give you a fairly comprehensive interpretation of the logfont structure that is saved in WindowsMetrics. The edit view gives all the details. The program simply edits the WindowsMetrics keys, so it is in the logoff, logon mode.
 

My Computer

System One

  • OS
    Windows 11 23H2 Pro
    Computer type
    PC/Desktop
    Manufacturer/Model
    MSI
    CPU
    i3-1215U
    Memory
    8GB
    Monitor(s) Displays
    Dell S2721
    Screen Resolution
    3840x2160
    PSU
    External 65W
    Keyboard
    Cherry mechanical (Blue)
    Mouse
    Microsoft
    Browser
    FireFox
    Antivirus
    MS
I may, by accident, have found the solution.

Normally, when I shut down my computer, especially overnight, I also turn off my monitor.

A couple of days ago I had a power cut and my electricity was off for a few hours. When it came back I turned on my PC and my monitor was already on (having not been switched off when the power went off) and Windows loaded with my customisations still in place.

For the last couple of days I have been experimenting. It seems that if I start the PC and only turn on the monitor after Windows has loaded the customisations are lost. However if I start the PC with the monitor already on, the customisations remain.

Has anyone else seen or tried this?
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
I am going to mark this as solved (for now), as it seems that the only definitive way to achieve my original post is what I have stumbled on in the post above.

It is possible that it may be reopened if anything changes.
 

My Computer

System One

  • OS
    Windows 11 23H2
    Computer type
    PC/Desktop
    Manufacturer/Model
    Custom Build
    CPU
    AMS Ryzen 5 1600 - 6 Core
    Motherboard
    Asus
    Memory
    32GB
    Graphics Card(s)
    Nvidia 1030GT
    Monitor(s) Displays
    Iiyama24
Back
Top Bottom