While I don't use NVIDIA, as you mentioned that changing the DPI works for you.
This command will set the DPI to 100:
xfconf-query -c xsettings -p /Xft/DPI -t int -s 100
To understand how to get the properties and values, use the xfconf-query command to monitor changes.
First, find out the channel name. In this case, use the xsettings channel.
List the channel names with xfconf-query -m.
$ xfconf-query -m
Channels:
xfce4-settings-editor
xfce4-appfinder
thunar
xfce4-power-manager
xsettings
xfce4-settings-manager
displays
keyboards
xfce4-session
xfce4-desktop
xfwm4
xfce4-notifyd
xfce4-keyboard-shortcuts
keyboard-layout
pointers
xfce4-panel
Monitor the settings with:
xfconf-query -m -c xsettings
Now go to your settings from UI, and change the DPI. Come back to the terminal, and you see the command like this:
xfconf-query -m -c xsettings
Start monitoring channel "xsettings":
set: /Xfce/LastCustomDPI
set: /Xft/DPI
set: /Xfce/LastCustomDPI
set: /Xft/DPI
So we found out the property name, and we can use the command to change the DPI to 100 for example:
xfconf-query -c xsettings -p /Xft/DPI -t int -s 100
Here:
-c: Channel name. xsettings in our case.
-p: Property name. /Xft/DPI in our case.
-t: Type. int (integer) in our case
-s Set. Set to 100 in our case.
Use that command in Settings -> Session and Startup -> Application Autostart -> + Add -> Add name and the command. Choose proper trigger, in this case most likely on login.
If the DPI setting doesn't seem to take effect, you can try a workaround by creating a BASH script that first sets the DPI to an arbitrary value (like 99), waits for a short period, and then sets it to the desired value (like 100).
Here's how you can do it:
xfconf-query -c xsettings -p /Xft/DPI -t int -s 99
sleep 0.5
xfconf-query -c xsettings -p /Xft/DPI -t int -s 100
Run the bash script straight from autostart.