You won't get the same rendering as on Windows, you can forget it. Mimicking that with Windows fonts + 9pt won't work, you'll be hit with questionable kerning, glyphs that are not properly sized, in wrong places, or just plainly badly rendered. I found out what works for me to get pretty much the same font **feel** as on Windows. I'm using Lato font as a main UI font + Cascadia Code as monospaced one. My fontconfig conf:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintnone</const>
</edit>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
<edit name="dpi" mode="assign">
<double>96</double>
</edit>
</match> <-- All of this crap? I left it as my Loonix system was installed. Changing any of these made fonts look considerably worse. -->
<match target="font">
<test name="weight" compare="more">
<const>medium</const>
</test>
<edit name="hintstyle" mode="assign">
<const>hintnone</const>
</edit>
</match>
<match target="font">
<test name="size" compare="less_eq"><int>15</int></test>
<edit name="embolden" mode="assign"><bool>true</bool></edit> <-- This is where most of the magic lies. Emboldening the font significantly improves its appearance, especially on Linux, where fonts smaller than 11pt typically don't render well at all. -->
</match>
<match target="font">
<test name="family" qual="any">
<string>Cascadia Code</string>
<!-- other fonts here .... -->
</test>
<test name="size" compare="less_eq"><int>10</int></test>
<edit name="embolden" mode="assign"><bool>true</bool></edit>
</match>
<match target="font">
<test name="family" qual="any">
<string>Cascadia Code</string>
<!-- other fonts here .... -->
</test>
<test name="size" compare="more_eq"><int>11</int></test>
<edit name="embolden" mode="assign"><bool>false</bool></edit>
</match>
<match target="font">
<test name="family" compare="eq" ignore-blanks="true">
<string>Lato</string>
</test>
<edit name="fontfeatures" mode="append">
<string>liga off</string>
<string>dlig off</string>
</edit>
</match>
<match target="font">
<edit name="embeddedbitmap"><bool>false</bool></edit>
</match>
<!-- Reject bitmap fonts in favour of Truetype, Postscript, etc. -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable">
<bool>false</bool>
</patelt>
</pattern>
</rejectfont>
</selectfont>
<!-- Roboto is fucked up. -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="family"><string>Roboto Lt</string></patelt>
<patelt name="weight"><int>100</int></patelt>
</pattern>
<pattern>
<patelt name="family"><string>Roboto Bk</string></patelt>
</pattern>
</rejectfont>
</selectfont>
<!-- Set preferred serif, sans serif, and monospace fonts. -->
<alias>
<family>serif</family>
<prefer><family>Lato</family></prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer><family>Lato</family></prefer>
</alias>
<alias>
<family>sans</family>
<prefer><family>Lato</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>Cascadia Code</family></prefer>
</alias>
</fontconfig>
Result:
https://imgur.com/a/CClAqv1
I still miss windows font rendering and the ease of just clicking through cleartype to choose your sharp and nicely visible font. But here in freetardland, yeah, no, you'll have shitshow like this: https://gitlab.gnome.org/GNOME/gtk/-/issues/3787#note_1104303