Skip to content

Instantly share code, notes, and snippets.

@aeghn
Forked from j1cs/improve_fonts.md
Created November 22, 2020 10:53
Show Gist options
  • Save aeghn/b3bcbcb3d9f06797ea50f69c034bd0f9 to your computer and use it in GitHub Desktop.
Save aeghn/b3bcbcb3d9f06797ea50f69c034bd0f9 to your computer and use it in GitHub Desktop.
Improve fonts archlinux

Improve Fonts

Newest

Make your Arch fonts beautiful easily! This is what I do when I install Arch Linux to improve the fonts.

You may consider the following settings to improve your fonts for system-wide usage without installing a patched font library packages (eg. Infinality):

Install some fonts, for example:
sudo pacman -S ttf-dejavu ttf-liberation noto-fonts

Enable font presets by creating symbolic links:
sudo ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d
sudo ln -s /etc/fonts/conf.avail/10-sub-pixel-rgb.conf /etc/fonts/conf.d
sudo ln -s /etc/fonts/conf.avail/11-lcdfilter-default.conf /etc/fonts/conf.d

The above will disable embedded bitmap for all fonts, enable sub-pixel RGB rendering, and enable the LCD filter which is designed to reduce colour fringing when subpixel rendering is used.

Enable FreeType subpixel hinting mode by editing:

/etc/profile.d/freetype2.sh

Uncomment the desired mode at the end:

export FREETYPE_PROPERTIES="truetype:interpreter-version=40"

For font consistency, all applications should be set to use the serif, sans-serif, and monospace aliases, which are mapped to particular fonts by fontconfig.

Create /etc/fonts/local.conf with following:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
   <match>
      <edit mode="prepend" name="family">
         <string>Noto Sans</string>
      </edit>
   </match>
   <match target="pattern">
      <test qual="any" name="family">
         <string>serif</string>
      </test>
      <edit name="family" mode="assign" binding="same">
         <string>Noto Serif</string>
      </edit>
   </match>
   <match target="pattern">
      <test qual="any" name="family">
         <string>sans-serif</string>
      </test>
      <edit name="family" mode="assign" binding="same">
         <string>Noto Sans</string>
      </edit>
   </match>
   <match target="pattern">
      <test qual="any" name="family">
         <string>monospace</string>
      </test>
      <edit name="family" mode="assign" binding="same">
         <string>Noto Mono</string>
      </edit>
   </match>
</fontconfig>

Set your font settings to match above in your DE system settings.

Older

To improve the fonts in Arch we first need to add some additional fonts. Add the following to the terminal:

sudo pacman -S ttf-bitstream-vera ttf-inconsolata ttf-ubuntu-font-family ttf-dejavu ttf-freefont ttf-linux-libertine ttf-liberation

yay -S ttf-ms-fonts ttf-vista-fonts ttf-monaco ttf-qurancomplex-fonts

Next we will disable bitmat fonts, which are used as a fallback.

sudo ln -s /etc/fonts/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d

Now we need to add the Infinality repo to our pacman.conf file. To do this, open the file with gedit (or whatever text editor your using):

sudo vim /etc/pacman.conf

Add the following to your pacman.conf to use the infinality repo:

[infinality-bundle]
SigLevel = Never
Server = http://bohoomil.com/repo/$arch

[infinality-bundle-multilib]
SigLevel = Never
Server = http://bohoomil.com/repo/multilib/$arch

[infinality-bundle-fonts]
SigLevel = Never
Server = http://bohoomil.com/repo/fonts

Then uncomment the multilib on pacman configuration to download and install 32 bit package on 64 bit systems

[multilib] 
Include = /etc/pacman.d/mirrorlist

Install the bundle:

sudo pacman -Syy infinality-bundle infinality-bundle-multilib # all question answer yes

Finally, reboot your system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment