Using Custom Font In Counter Strike Global Offensive
It’s easy to change your font, but most importantly – it’s safe to do so. The only think you will have to do is go to your favourite font database and download / install the font you want on your PC. This tutorial doesn’t involve copying files to CS:GO directory, so it is completely safe. You don’t have to be afraid of VACBAN, we are going to modify configuration file. It’s the same as modifying your your autoexec.cfg file.
Here is example of custom font OXYGEN, working today in March 2021 in Counter Strike: Global Offensive.
Hot To Change Font In CSGO
1. Find and download the custom font
If you don’t have it already, use popular font websites to download free fonts. Here are few links that should help you find the font you wish to use in CSGO.
https://fonts.google.com/ (recommended)
https://www.fontsquirrel.com/
https://www.1001freefonts.com/
https://www.dafont.com/
https://www.fontspace.com/popular/fonts
Visit one of the listed websites and download .zip file on your computer.
2. Install the font locally
Unpack the folder with your fonts and double click it. You should now see the font demo, click INSTALL in the top left corner.
Your font should be installed now and ready to use on your PC, but in a moment, it will also be available in Counter Strike. Unfortunately, this custom font won’t show everywhere, but in most places – like in-game chat window and main menu. Some UI elements, like tooltips when hovering over Inventory items will use different font.
3. Back-up your fonts.conf file
Open Steam and right click on Counter Strike Global Offensive.
Select PROPERTIES – LOCAL FILES – BROWSE.
New explorer window will open with all your CSGO files. We have to navigate to:
.../csgo/panorama/fonts/
To make a copy of the fonts.conf file, right click it and select COPY. Then right click on empty space within folder and select PASTE. You will create new file called fonts.conf-copy. This will be your backup copy, for whenever you want to go back to default font in CSGO.
4. Edit fonts.conf file
Remember the font you have downloaded and installed in step 1 and 2? You will need the correct font’s name. Not the filename! To find out how it is really called, press Windows key and start typing ‘Fonts’. Open Fonts Settings and search for your font there. It should look like this.
You can see the installed font is called basically the same as the downloaded archive – Oxygen. That’s what we need to enter into our fonts.conf file in the next step.
5. Paste and replace configuration file
Open the fonts.conf file in your favourite editor (preferably Notepad++). Delete everything inside this file and paste this one. It’s not really much different, but it’s ready to be easily edited with search and replace command. Once it’s empty, copy and paste the code below into your file.
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<!-- Choose an OS Rendering Style. This will determine B/W, grayscale,
or subpixel antialising and slight, full or no hinting and replacements (if set in next option) -->
<!-- Style should also be set in the infinality-settings.sh file, ususally in /etc/profile.d/ -->
<!-- Choose one of these options:
Infinality - subpixel AA, minimal replacements/tweaks, sans=MY_FONT
Windows 7 - subpixel AA, sans=MY_FONT
Windows XP - subpixel AA, sans=MY_FONT
Windows 98 - B/W full hinting on TT fonts, grayscale AA for others, sans=MY_FONT
OSX - Slight hinting, subpixel AA, sans=Helvetica Neue
OSX2 - No hinting, subpixel AA, sans=Helvetica Neue
Linux - subpixel AA, sans=DejaVu Sans
=== Recommended Setup ===
Run ./infctl.sh script located in the current directory to set the style.
# ./infctl.sh setstyle
=== Manual Setup ===
See the infinality/styles.conf.avail/ directory for all options. To enable
a different style, remove the symlink "conf.d" and link to another style:
# rm conf.d
# ln -s styles.conf.avail/win7 conf.d
-->
<dir>WINDOWSFONTDIR</dir>
<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>
<!-- A fontpattern is a font file name, not a font name. Be aware of filenames across all platforms! -->
<fontpattern>MY_FONT</fontpattern>
<fontpattern>.ttf</fontpattern>
<fontpattern>notosans</fontpattern>
<fontpattern>notoserif</fontpattern>
<fontpattern>notomono-regular</fontpattern>
<cachedir>WINDOWSTEMPDIR_FONTCONFIG_CACHE</cachedir>
<cachedir>~/.fontconfig</cachedir>
<!-- Uncomment this to reject all bitmap fonts -->
<!-- Make sure to run this as root if having problems: fc-cache -f -->
<!--
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable" >
<bool>false</bool>
</patelt>
</pattern>
</rejectfont>
</selectfont>
-->
<!-- The Stratum2 Monodigit fonts just supply the monospaced digits -->
<!-- All other characters should come from ordinary Stratum2 -->
<match>
<test name="family">
<string>Stratum2 Bold Monodigit</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Stratum2 Bold</string>
</edit>
</match>
<match>
<test name="family">
<string>Stratum2 Regular Monodigit</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Stratum2</string>
</edit>
</match>
<!-- Stratum2 only contains a subset of the Vietnamese alphabet. -->
<!-- So when language is set to Vietnamese, replace Stratum with Noto. -->
<!-- Adjust size due to the Ascent value for Noto being significantly larger than Stratum.. -->
<match>
<test name="lang">
<string>vi-vn</string>
</test>
<test name="family">
<string>Stratum2</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>notosans</string>
</edit>
<edit name="pixelsize" mode="assign">
<times>
<name>pixelsize</name>
<double>0.9</double>
</times>
</edit>
</match>
<!-- More Vietnamese... -->
<!-- In some cases (hud health, ammo, money) we want to force Stratum to be used. -->
<match>
<test name="lang">
<string>vi-vn</string>
</test>
<test name="family">
<string>ForceStratum2</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Stratum2</string>
</edit>
</match>
<!-- Fallback font sizes. -->
<!-- If we request Stratum, but end up with MY_FONT, reduce the pixelsize because MY_FONT glyphs are larger than Stratum. -->
<match target="font">
<test name="family" target="pattern" compare="contains">
<string>Stratum2</string>
</test>
<test name="family" target="font" compare="contains">
<string>MY_FONT</string>
</test>
<edit name="pixelsize" mode="assign">
<times>
<name>pixelsize</name>
<double>0.9</double>
</times>
</edit>
</match>
<!-- If we request Stratum, but end up with Noto, reduce the pixelsize. -->
<!-- This fixes alignment issues due to the Ascent value for Noto being significantly larger than Stratum. -->
<match target="font">
<test name="family" target="pattern" compare="contains">
<string>Stratum2</string>
</test>
<test name="family" target="font" compare="contains">
<string>Noto</string>
</test>
<edit name="pixelsize" mode="assign">
<times>
<name>pixelsize</name>
<double>0.9</double>
</times>
</edit>
</match>
<!-- Stratum contains a set of arrow symbols in place of certain greek/mathematical characters - presumably for some historical reason, possibly used by VGUI somewhere?. -->
<!-- For panorama these Stratum characters should be ignored and picked up from a fallback font instead. -->
<match target="scan">
<test name="family">
<string>Stratum2</string>
</test>
<edit name="charset" mode="assign">
<minus>
<name>charset</name>
<charset>
<int>0x03A9</int> <!-- greek omega -->
<int>0x03C0</int> <!-- greek pi -->
<int>0x2202</int> <!-- partial diff -->
<int>0x2206</int> <!-- delta -->
<int>0x220F</int> <!-- product -->
<int>0x2211</int> <!-- sum -->
<int>0x2212</int> <!-- minus -->
<int>0x221A</int> <!-- square root -->
<int>0x221E</int> <!-- infinity -->
<int>0x222B</int> <!-- integral -->
<int>0x2248</int> <!-- approxequal -->
<int>0x2260</int> <!-- notequal -->
<int>0x2264</int> <!-- lessequal -->
<int>0x2265</int> <!-- greaterequal -->
<int>0x25CA</int> <!-- lozenge -->
</charset>
</minus>
</edit>
</match>
<!-- Ban Type-1 fonts because they render poorly -->
<!-- Comment this out to allow all Type 1 fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="fontformat" >
<string>Type 1</string>
</patelt>
</pattern>
</rejectfont>
</selectfont>
<!-- Globally use embedded bitmaps in fonts like Calibri? -->
<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
<!-- Substitute truetype fonts in place of bitmap ones? -->
<match target="pattern" >
<edit name="prefer_outline" mode="assign">
<bool>true</bool>
</edit>
</match>
<!-- Do font substitutions for the set style? -->
<!-- NOTE: Custom substitutions in 42-repl-global.conf will still be done -->
<!-- NOTE: Corrective substitutions will still be done -->
<match target="pattern" >
<edit name="do_substitutions" mode="assign">
<bool>true</bool>
</edit>
</match>
<!-- Make (some) monospace/coding TTF fonts render as bitmaps? -->
<!-- courier new, andale mono, monaco, etc. -->
<match target="pattern" >
<edit name="bitmap_monospace" mode="assign">
<bool>false</bool>
</edit>
</match>
<!-- Force autohint always -->
<!-- Useful for debugging and for free software purists -->
<match target="font">
<edit name="force_autohint" mode="assign">
<bool>false</bool>
</edit>
</match>
<!-- Set DPI. dpi should be set in ~/.Xresources to 96 -->
<!-- Setting to 72 here makes the px to pt conversions work better (Chrome) -->
<!-- Some may need to set this to 96 though -->
<match target="pattern">
<edit name="dpi" mode="assign">
<double>96</double>
</edit>
</match>
<!-- Use Qt subpixel positioning on autohinted fonts? -->
<!-- This only applies to Qt and autohinted fonts. Qt determines subpixel positioning based on hintslight vs. hintfull, -->
<!-- however infinality patches force slight hinting inside freetype, so this essentially just fakes out Qt. -->
<!-- Should only be set to true if you are not doing any stem alignment or fitting in environment variables -->
<match target="pattern" >
<edit name="qt_use_subpixel_positioning" mode="assign">
<bool>false</bool>
</edit>
</match>
<!-- Run infctl.sh or change the symlink in current directory instead of modifying this -->
<include>conf.d</include>
<!-- Replacing here -->
<match>
<test name="family">
<string>Stratum2</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
<match>
<test name="family">
<string>Stratum2 Bold</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
<match>
<test name="family">
<string>Arial</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
<match>
<test name="family">
<string>Times New Roman</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
<match>
<test name="family">
<string>Courier New</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
<match>
<test name="family">
<string>notosans</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>MY_FONT</string>
</edit>
</match>
</fontconfig>
In Notepad++ hit CTRL+H or go to Search – Replace and enter your new font name like this:
Find what: MY_FONT
Replace with: Oxygen
You should have 14 occurrences of MY_FONT replaced with your new font name. Save the file and you are ready to launch the game. This is how easy it is to change CSGO font to anything you want. Remember, readability is the key in Counter Strike, but we have to say Comic Sans helped us get our first ACE.
Oxygen – Beautiful Custom CSGO Font Download
You can grab Oxygen that we used in this custom CSGO font tutorial from Google Fonts library at this address: