Arch linux font

Arch linux font DEFAULT


Related articles

From Wikipedia:Computer font: "A computer font (or font) is an electronic data file containing a set of glyphs, characters, or symbols such as dingbats."

Note that certain font licenses may impose some legal limitations.

Font formats

Most computer fonts used today are in either bitmap or outline data formats.

Bitmap fonts
Consist of a matrix of dots or pixels representing the image of each glyph in each face and size.
Outline or vector fonts
Use Bézier curves, drawing instructions and mathematical formulae to describe each glyph, which make the character outlines scalable to any size.

Bitmap formats

These formats can also be gzipped. See #Bitmap for the available bitmap fonts.

Outline formats

  • PostScript fonts by Adobe – has various formats, e.g: Printer Font ASCII (PFA) and Printer Font Binary (PFB)
  • TrueType by Apple and Microsoft (file extension: )
  • OpenType by Microsoft, built on TrueType (file extensions: , )

For most purposes, the technical differences between TrueType and OpenType can be ignored.

Other formats

The typesetting application TeX and its companion font software, Metafont, traditionally renders characters using its own methods. Some file extensions used for fonts from these two programs are , , and . Modern versions can also use TrueType and OpenType fonts.

FontForge (fontforge), a font editing application, can store fonts in its native text-based format, , spline font database.

The SVG format also has its own font description method.


There are various methods for installing fonts.


Fonts and font collections in the enabled repositories can be installed using pacman.

Available fonts may be found by querying packages (e.g. for or ).

Creating a package

You should give pacman the ability to manage your fonts, which is done by creating an Arch package. These can also be shared with the community in the AUR. The packages to install fonts are particularly similar; see Font packaging guidelines.

The family name of a font file can be aquired with the use of for example: . The formatting is described in FcPatternFormat(3).

Manual installation

The recommended way of adding fonts that are not in the repositories to your system is described in #Creating a package. This gives pacman the ability to remove or update them at a later time.

Alternatively, fonts can be installed manually:

  • For a single user, install fonts to .
    • In many cases this suffices, unless you run graphical applications as other users.
    • In the past was used, but is now deprecated.
  • For system-wide (all users) installation, place your fonts under .
    • You may need to create the directory first; .
    • is under the purview of the package manager, and shouldn't be modified manually.

The creation of a subdirectory structure is up to the user, and varies among Linux distributions. For clarity, it's good to keep each font in its own directory. Fontconfig will search its default paths recursively, ensuring nested files get picked up.

An example structure might be:

/usr/local/share/fonts/ ├── otf │   └── SourceCodeVariable │   ├── SourceCodeVariable-Italic.otf │   └── SourceCodeVariable-Roman.otf └── ttf ├── AnonymousPro │   ├── Anonymous-Pro-B.ttf │ ├── Anonymous-Pro-I.ttf │   └── Anonymous-Pro.ttf └── CascadiaCode    ├── CascadiaCode-Bold.ttf    ├── CascadiaCode-Light.ttf └── CascadiaCode-Regular.ttf

The font files need to have sufficient read permissions for all users, i.e. at least chmod for files, and for directories.

For the Xserver to load fonts directly (as opposed to the use of a font server), the directory for your newly added font must be added with a FontPath entry. This entry is located in the Files section of your Xorg configuration file (e.g. or ). See #Older applications for more detail.

Finally, update the fontconfig cache (usually unnecessary as software using the fontconfig library does this):

$ fc-cache

Older applications

With older applications that do not support fontconfig (e.g. GTK 1.x applications, and ) the index will need to be created in the font directory:

$ mkfontscale $ mkfontdir

Or to include more than one folder with one command:

$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash

Or if fonts were installed in a different sub-folders under the e.g. :

$ for dir in * ; do if [ -d "$dir" ]; then cd "$dir";xset +fp "$PWD" ;mkfontscale; mkfontdir;cd .. ;fi; done && xset fp rehash

At times the X server may fail to load the fonts directory and you will need to rescan all the files:

# xset +fp /usr/share/fonts/misc # Inform the X server of new directories # xset fp rehash # Forces a new rescan

To check that the font(s) is included:

$ xlsfonts | grep fontname

Note: Many packages will automatically configure Xorg to use the font upon installation. If that is the case with your font, this step is not necessary.

This can also be set globally in or .

Here is an example of the section that must be added to . Add or remove paths based on your particular font requirements.

# Let X.Org know about the custom font directories Section "Files" FontPath "/usr/share/fonts/100dpi" FontPath "/usr/share/fonts/75dpi" FontPath "/usr/share/fonts/cantarell" FontPath "/usr/share/fonts/cyrillic" FontPath "/usr/share/fonts/encodings" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/truetype" FontPath "/usr/share/fonts/TTF" FontPath "/usr/share/fonts/util" EndSection

Pango Warnings

When Pango is in use on your system it will read from fontconfig to sort out where to source fonts.

(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='common' (process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'

If you are seeing errors similar to this and/or seeing blocks instead of characters in your application then you need to add fonts and update the font cache. This example uses the ttf-liberation fonts to illustrate the solution (after successful installation of the package) and runs as root to enable them system-wide.

# fc-cache/usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs /usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs /usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs /usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs /usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs /var/cache/fontconfig: cleaning cache directory fc-cache: succeeded

You can test for a default font being set like so:

$ fc-matchLiberationMono-Regular.ttf: "Liberation Mono" "Regular"

Font packages

This is a selective list that includes many font packages from the AUR along with those in the official repositories. Fonts are tagged "Unicode" if they have wide Unicode support.

Tip:Archfonts is a Python script that can be used to generate an overview of all the TTF fonts found in the official repositories and in the AUR.


Note:pango 1.44 dropped support for FreeType in favor of HarfBuzz thus losing support for traditional BDF/PCF bitmap fonts, so applications like e.g. gnome-terminal will not work with such fonts anymore, showing rectangles instead of glyphs. See FS#63297, Pango issue #386 and HarfBuzz issue #1897.

  • Default 8x16
  • Berry (pcf-spectrum-berryAUR) - 8px
  • Dina (dina-font) – 6pt, 8pt, 9pt, 10pt, monospaced, based on Proggy
  • Efont (efont-unicode-bdfAUR) – 10px, 12px, 14px, 16px, 24px, normal, bold and italic
  • Gohu (gohufontAUR) – 11px, 14px, normal and bold
  • Lime (artwiz-fontsAUR)
  • ProFont (ttf-profont-iixAUR) – 10px, 11px, 12px, 15px, 17px, 22px, 29px, normal
  • Proggy (proggyfontsAUR) – has different variants
  • Tamsyn (tamsyn-font)
  • Terminus (terminus-font)
  • Tewi (bdf-tewi-gitAUR)
  • Unifont (most extensive Unicode coverage of any font) (bdf-unifont)

Works with pango 1.44:

Latin script


Packages providing a base font set:

  • Bitstream Vera (ttf-bitstream-vera) – serif, sans-serif, and monospace
  • Croscore fonts (ttf-croscore) – Chrome OS' substitute for Windows' Arial, Times New Roman, and Courier New using the same metric
  • DejaVu fonts (ttf-dejavu) – Bitstream Vera modified for greater Unicode coverage
  • Droid (ttf-droid) – default font for older Android versions with wide Unicode coverage including CJK but not symbols and emojis
  • GNU FreeFont (gnu-free-fonts) – free sans, sans serif and monospace fonts in the OpenType scalable format, good Unicode coverage however does not include CJK
  • IBM Plex (ttf-ibm-plex) – serif, sans-serif, condensed sans-serif and monospace with true italics
  • Liberation fonts (ttf-liberation) – free metric-compatible substitute for the Arial, Arial Narrow, Times New Roman and Courier New fonts found in Windows and Microsoft Office products
  • Linux Libertine (ttf-linux-libertine) – serif (Libertine) and sans serif (Biolinum) fonts with large Unicode coverage
  • Microsoft fonts (ttf-ms-win10AUR) – Windows 10 fonts (Windows 10 installation or installation medium needed)
  • Noto fonts (noto-fonts) – Google font family with full Unicode coverage if installed with its emoji and CJK optional dependencies

Packages not providing a base font set:

Legacy Microsoft font packages:

  • Microsoft fonts (ttf-ms-fontsAUR) – Andalé Mono, Courier New, Arial, Arial Black, Comic Sans, Impact, Lucida Sans, Microsoft Sans Serif, Trebuchet, Verdana, Georgia, Times New Roman
  • Vista fonts (ttf-vista-fontsAUR) – Consolas, Calibri, Candara, Corbel, Cambria, Constantia


Fonts supporting programming ligatures are identified below with a ⟶ sign. For more monospaced fonts, also see #Bitmap and #Families.

  • Anonymous Pro (ttf-anonymous-pro, included in ttf-google-fonts-gitAUR)
  • Cascadia Code (ttf-cascadia-code) ⟶ – designed to enhance the look of the Windows Terminal, with programming ligatures, released by Microsoft under the Open Font License.
  • Courier Prime (ttf-courier-primeAUR) – Courier alternative which has been supplemented by a sans serif font and a version optimized for programming, released under the Open Font License.
  • Envy Code R (ttf-envy-code-rAUR) – font designed for programmers
  • Fantasque Sans Mono (ttf-fantasque-sans-mono, otf-fantasque-sans-mono)
  • Fira Mono (ttf-fira-mono, otf-fira-mono) – font optimized for small screens and adopted by Mozilla for the Firefox OS
  • Fira Code (ttf-fira-code) ⟶ – extension of Fira Mono with programming ligatures for common programming multi-character combinations
  • Hack (ttf-hack) - an open source monospaced font, used as the default in KDE Plasma
  • Hermit (otf-hermit) - a font for programmers, by a programmer
  • Inconsolata (ttf-inconsolata, included in ttf-google-fonts-gitAUR) – designed for source code listing, inspired by Consolas and Letter Gothic
  • Inconsolata-g (ttf-inconsolata-gAUR) – adds some programmer-friendly modifications
  • Iosevka (ttc-iosevka) ⟶ – slender sans-serif and slab-serif typeface inspired by Pragmata Pro, M+ and PF DIN Mono, designed to be the ideal font for programming; it supports programming ligatures and over 2000 latin, greek, cyrillic, phonetic and PowerLine glyphs
  • JetBrains Mono (ttf-jetbrains-mono) ⟶ – the free and open-source typeface for developers
  • Lucida Typewriter (included in package jreAUR)
  • Menlo (ttf-mesloAUR) – customized version of Apple's Menlo Regular font for OS X with larger vertical gap spacing
  • Monaco (ttf-monacoAUR) – proprietary font designed by Apple for OS X
  • Monofur (ttf-monofur)
  • Mononoki (ttf-mononokiAUR) – a font for programming and code review
  • Source Code Pro (adobe-source-code-pro-fonts, included in ttf-google-fonts-gitAUR)

Relevant websites:




Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: This section should be absorbed into the Monospace/Serif/Sans-Serif structure (Discuss in Talk:Fonts)

Non-latin scripts

Ancient Scripts

  • ttf-ancient-fontsAUR - Font containing Unicode symbols for Aegean, Egyptian, Cuneiform, Anatolian, Maya, and Analecta scripts



Read Localization/Bengali#Fonts for details.


  • ttf-ubrailleAUR - Font containing Unicode symbols for braille

Chinese, Japanese, Korean, Vietnamese


See Localization/Chinese#Fonts.


See Localization/Japanese#Fonts.


See Localization/Korean#Fonts.

  • ttf-hannom - Vietnamese TrueType font for chữ Nôm characters


See also #Latin script.

  • ttf-paratypeAUR - Font family by ParaType: sans, serif, mono, extended cyrillic and latin, OFL license
  • otf-russkopisAUR - A free OpenType cursive font for Cyrillic script


Almost all Unicode fonts contain the Greek character set (polytonic included). Some additional font packages, which might not contain the complete Unicode set but utilize high quality Greek (and Latin, of course) typefaces are:

  • otf-gfsAUR - Selection of OpenType fonts from the Greek Font Society
  • ttf-mgopenAUR - Professional TrueType fonts from Magenta


  • opensiddur-hebrew-fontsAUR - Large collection of Open-source licensed Hebrew fonts. There are also few Latin, Greek, Cyrillic, Arabic, and Amharic.
  • culmusAUR - Nice collection of free Hebrew fonts.
  • alefbetAUR - 2 Hebrew fonts (at the moment): the commonly used "David Libre", and the handwriting font "Gveret Levin".
  • ttf-ms-fontsAUR - contains Arial and other fonts.


See Localization/Indic#Fonts.


Mongolic and Tungusic

  • ttf-abkaiAUR - Fonts for Sibe, Manchu and Daur scripts (incomplete, currently in development)


  • persian-fontsAUR - Meta package for installing all Persian fonts in AUR.
  • borna-fontsAUR - Borna Rayaneh Co. Persian B font series.
  • iran-nastaliq-fontsAUR - A free Unicode calligraphic Persian font.
  • iranian-fontsAUR - Iranian-Sans and Iranian-Serif Persian font family.
  • ir-standard-fontsAUR - Iran Supreme Council of Information and Communication Technology (SCICT) standard Persian fonts.
  • persian-hm-ftx-fontsAUR - A Persian font series derived from X Series 2, Metafont and FarsiTeX fonts with Kashida feature.
  • persian-hm-xs2-fontsAUR - A Persian font series derived from X Series 2 fonts with Kashida feature.
  • gandom-fontsAUR, parastoo-fontsAUR, sahel-fontsAUR, samim-fontsAUR, shabnam-fontsAUR, tanha-fontsAUR, vazir-fontsAUR, vazir-code-fontsAUR - Beautiful Persian fonts made by Saber RastiKerdar.
  • ttf-yasAUR - The Yas Persian font series (with hollow zero).
  • ttf-x2AUR - Free fonts with support for Persian, Arabic, Urdu, Pashto, Dari, Uzbek, Kurdish, Uighur, old Turkish (Ottoman) and modern Turkish (Roman).


  • fonts-tlwgAUR - Collection of scalable Thai fonts
  • ttf-laoAUR - Lao TTF font (Phetsarath_OT)
  • ttf-lao-fontsAUR - Lao TTF fonts, both Unicode and non-Unicode for Windows


Emoji and symbols

A section of the Unicode standard is designated for pictographic characters called "emoji".

Emoji fonts come in different formats: CBDT/CBLC (Google), SBIX (Apple), COLR/CPAL (Microsoft), SVG (Mozilla/Adobe).

Emojis should work without any configuration once you have at least one emoji font installed of supported format. Emoji font fallback according to the standard requires extra code to handle emoji. To force emoji font for specific application, see Font configuration#Force emoji font.

To actually type emojis, you'll need to install emoteAUR or the Emote Snap package; or emoji-keyboardAUR or the emoji-keyboard AppImage.

Note: Qt has 255 fonts as fallback limit and if the fallback font that contains the character is beyond first 255 fonts in fallback list it will be displayed as an empty square. [4]



  • otf-openmojiAUR — German University of Design in Schwäbisch Gmünd open-source Emoji 13.0.
  • ttf-twemoji-colorAUR — Twitter's open-source Emoji 13.0.

Outline only:

  • ttf-symbolaAUR — provides many Unicode symbols, including emoji.

Kaomoji are sometimes referred to as "Japanese emoticons" and are composed of characters from various character sets, including CJK and Indic fonts. For example, the following set of packages covers most of existing kaomoji: gnu-free-fonts, ttf-arphic-uming, and ttf-indic-otf.


Other operating system fonts

See Metric-compatible fonts, which lists available alternatives for Microsoft fonts.

Fallback font order

Fontconfig automatically chooses a font that matches the current requirement. That is to say, if one is looking at a window containing English and Chinese for example, it will switch to another font for the Chinese text if the default one does not support it.

Fontconfig lets every user configure the order they want via . If you want a particular Chinese font to be selected after your favorite Serif font, your file would look like this:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>serif</family> <prefer> <family>Your favorite Latin Serif font name</family> <family>Your Chinese font name</family> </prefer> </alias> </fontconfig>
  • If you use a Chinese locale, set to to make this work. Otherwise both English and Chinese text will be rendered in the Chinese font.
  • After changing the configuration run to verify your fallback font is set correctly.

You can add a section for sans-serif and monospace as well. For more information, have a look at the fontconfig manual.

See also Font configuration#Replace or set default fonts.

Font alias

There are several font aliases which represent other fonts in order that applications may use similar fonts. The most common aliases are: for a font of the serif type (e.g. DejaVu Serif); for a font of the sans-serif type (e.g. DejaVu Sans); and for a monospaced font (e.g. DejaVu Sans Mono). However, the fonts which these aliases represent may vary and the relationship is often not shown in font management tools, such as those found in KDE and other desktop environments.

To reverse an alias and find which font it is representing, run:

$ fc-match monospaceDejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

In this case, is the font represented by the monospace alias.

Tips and tricks

List all installed fonts

You can use the following command to list all installed Fontconfig fonts that are available on your system.

$ fc-list

List installed fonts for a particular language

Applications and browsers select and display fonts depending upon fontconfig preferences and available font glyph for Unicode text. To list installed fonts for a particular language, issue a command . For instance, to list installed Arabic fonts or fonts supporting Arabic glyph:

$ fc-list -f '%{file}\n' :lang=ar/usr/share/fonts/TTF/FreeMono.ttf /usr/share/fonts/TTF/DejaVuSansCondensed.ttf /usr/share/fonts/truetype/custom/DroidKufi-Bold.ttf /usr/share/fonts/TTF/DejaVuSansMono.ttf /usr/share/fonts/TTF/FreeSerif.ttf

List installed fonts for a particular Unicode character

To search for monospace fonts supporting a particular Unicode codepoint:

$ fc-match -s monospace:charset=1F4A9

Set terminal font on-the-fly

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Where is the documentation for the escape codes? (Discuss in Talk:Fonts)

For terminal emulators that use X resources, e.g. xterm or rxvt-unicode, fonts can be set by using escape sequences. Specifically, to change the normal font ( in ), and replace with , , and to change the , , and , respectively.

uses the same syntax as in and can be anything the terminal emulator will support. (Example: )

Application-specific font cache

Matplotlib (python-matplotlib or python2-matplotlibAUR) uses its own font cache, so after updating fonts, be sure to remove , , , etc. so it will regenerate its cache and find the new fonts [5].

BiDirectional text in terminal

Run BiCon (bicon-gitAUR) in order to display correctly Arabic and Hebrew text inside the terminal.

See also


General recommendations

Related articles

This document is an annotated index of popular articles and important information for improving and adding functionalities to the installed Arch system. Readers are assumed to have read and followed the Installation guide to obtain a basic Arch Linux installation. Having read and understood the concepts explained in #System administration and #Package management is required for following the other sections of this page and the other articles in the wiki.

System administration

This section deals with administrative tasks and system management. See Core utilities and Category:System administration for more.

Users and groups

A new installation leaves you with only the superuser account, better known as "root". Logging in as root for prolonged periods of time, possibly even exposing it via SSH on a server, is insecure. Instead, you should create and use unprivileged user account(s) for most tasks, only using the root account for system administration. See Users and groups#User management for details.

Users and groups are a mechanism for access control; administrators may fine-tune group membership and ownership to grant or deny users and services access to system resources. Read the Users and groups article for details and potential security risks.

Privilege elevation

For a list of applications to allow running commands or starting an interactive shell as another user (e.g. root), see List of applications/Security#Privilege elevation.

Service management

Arch Linux uses systemd as the init process, which is a system and service manager for Linux. For maintaining your Arch Linux installation, it is a good idea to learn the basics about it. Interaction with systemd is done through the systemctl command. Read systemd#Basic systemctl usage for more information.

System maintenance

Arch is a rolling release system and has rapid package turnover, so users have to take some time to do system maintenance. Read Security for recommendations and best practices on hardening the system.

Package management

This section contains helpful information related to package management. See FAQ#Package management and Category:Package management for more.

Note: It is imperative to keep up to date with changes in Arch Linux that require manual intervention before upgrading your system. Subscribe to the arch-announce mailing list or the recent news RSS feed. Alternatively, check the front page Arch news every time before you update.


pacman is the Arch Linux package manager: it is highly encouraged to become familiar with it before reading any other articles.

See pacman/Tips and tricks for suggestions on how to improve your interaction with pacman and package management in general.


See the Official repositories article for details about the purpose of each officially maintained repository.

If you plan on using 32-bit applications, you will want to enable the multilib repository.

The Unofficial user repositories article lists several other unsupported repositories.

You may consider installing the pkgstats service.


Visit the Mirrors article for steps on taking full advantage of using the fastest and most up to date mirrors of the official repositories. As explained in the article, a particularly good advice is to routinely check the Mirror Status page for a list of mirrors that have been recently synced.

Arch Build System

Ports is a system initially used by BSD distributions consisting of build scripts that reside in a directory tree on the local system. Simply put, each port contains a script within a directory intuitively named after the installable third-party application.

The Arch Build System offers the same functionality by providing build scripts called PKGBUILDs, which are populated with information for a given piece of software: integrity hashes, project URL, version, license and build instructions. These PKGBUILDs are parsed by makepkg, the actual program that generates packages that are cleanly manageable by pacman.

Every package in the repositories along with those present in the AUR are subject to recompilation with makepkg.

Arch User Repository

While the Arch Build System allows the ability of building software available in the official repositories, the Arch User Repository (AUR) is the equivalent for user submitted packages. It is an unsupported repository of build scripts accessible through the web interface or through the Aurweb RPC interface.


This section contains information pertaining to the boot process. An overview of the Arch boot process can be found at Arch boot process. See Category:Boot process for more.

Hardware auto-recognition

Hardware should be auto-detected by udev during the boot process by default. A potential improvement in boot time can be achieved by disabling module auto-loading and specifying required modules manually, as described in Kernel modules. Additionally, Xorg should be able to auto-detect required drivers using , but users have the option to configure the X server manually too.


Processors may have faulty behaviour, which the kernel can correct by updating the microcode on startup. See Microcode for details.

Retaining boot messages

Once it concludes, the screen is cleared and the login prompt appears, leaving users unable to gather feedback from the boot process. Disable clearing of boot messages to overcome this limitation.

Num Lock activation

Num Lock is a toggle key found in most keyboards. For activating Num Lock's number key-assignment during startup, see Activating numlock on bootup.

Graphical user interface

This section provides orientation for users wishing to run graphical applications on their system. See Category:Graphical user interfaces for additional resources.

Display server

Xorg is the public, open-source implementation of the X Window System (commonly X11, or X). It is required for running applications with graphical user interfaces (GUIs), and the majority of users will want to install it.

Wayland is a newer, alternative display server protocol and the Weston reference implementation is available.

Display drivers

The default modesetting display driver will work with most video cards, but performance may be improved and additional features harnessed by installing the appropriate driver for AMD or NVIDIA products.

Desktop environments

Although Xorg provides the basic framework for building a graphical environment, additional components may be considered necessary for a complete user experience. Desktop environments such as GNOME, KDE, LXDE, and Xfce bundle together a wide range of X clients, such as a window manager, panel, file manager, terminal emulator, text editor, icons, and other utilities. Users with less experience may wish to install a desktop environment for a more familiar environment. See Category:Desktop environments for additional resources.

Window managers

A full-fledged desktop environment provides a complete and consistent graphical user interface, but tends to consume a considerable amount of system resources. Users seeking to maximize performance or otherwise simplify their environment may opt to install a window manager alone and hand-pick desired extras. Most desktop environments allow use of an alternative window manager as well. Dynamic, stacking, and tiling window managers differ in their handling of window placement.

Display manager

Most desktop environments include a display manager for automatically starting the graphical environment and managing user logins. Users without a desktop environment can install one separately. Alternatively you may start X at login as a simple alternative to a display manager.

User directories

Well-known user directories like Downloads or Music are created by the user service, that is provided by xdg-user-dirs and enabled by default upon install. If your desktop environment or window manager does not pull in the package, you can install it and run manually as per XDG user directories#Creating default directories.

Power management

This section may be of use to laptop owners or users otherwise seeking power management controls. See Category:Power management for more.

See Power management for more general overview.

ACPI events

Users can configure how the system reacts to ACPI events such as pressing the power button or closing a laptop's lid. For the new (recommended) method using systemd, see Power management with systemd. For the old method, see acpid.

CPU frequency scaling

Modern processors can decrease their frequency and voltage to reduce heat and power consumption. Less heat leads to more quiet system and prolongs the life of hardware. See CPU frequency scaling for details.


For articles related to portable computing along with model-specific installation guides, please see Category:Laptops. For a general overview of laptop-related articles and recommendations, see Laptop.

Suspend and hibernate

See the main article: Power management/Suspend and hibernate.


Category:Multimedia includes additional resources.

Sound system

ALSA is a kernel sound system that should work out the box (it just needs to be unmuted). Sound servers such as PulseAudio and PipeWire can offer additional features and support more complex audio configuration.

See Professional audio for advanced audio requirements.


This section is confined to small networking procedures. See Network configuration for a full configuration guide and Category:Networking for related articles.

Clock synchronization

The Network Time Protocol (NTP) is a protocol for synchronizing the clocks of computer systems over packet-switched, variable-latency data networks. See Time synchronization for implementations of such protocol.

DNS security

For better security while browsing the web, paying online, connecting to SSH services and similar tasks consider using DNSSEC-enabled DNS resolver that can validate signed DNS records, and an encrypted protocol such as DNS over TLS, DNS over HTTPS or DNSCrypt. See Domain name resolution for details.

Setting up a firewall

A firewall can provide an extra layer of protection on top of the Linux networking stack. While the stock Arch kernel is capable of using Netfilter's iptables and nftables, neither are enabled by default. It is highly recommended to set up some form of firewall. See Category:Firewalls for available guides.

Network shares

To share files among the machines in a network, follow the NFS or the SSHFS article.

Use Samba to join a Windows network. To configure the machine to use Active Directory for authentication, read Active Directory integration.

See also Category:Network sharing.

Input devices

This section contains popular input device configuration tips. See Category:Input devices for more.

Keyboard layouts

Non-English or otherwise non-standard keyboards may not function as expected by default. The necessary steps to configure the keymap are different for virtual console and Xorg, they are described in Keyboard configuration in console and Keyboard configuration in Xorg respectively.

Mouse buttons

Owners of advanced or unusual mice may find that not all mouse buttons are recognized by default, or may wish to assign different actions for extra buttons. Instructions can be found in Mouse buttons.

Laptop touchpads

Many laptops use Synaptics or ALPS "touchpad" pointing devices. For these, and several other touchpad models, you can use either the Synaptics input driver or libinput; see Touchpad Synaptics and libinput for installation and configuration details.


See the TrackPoint article to configure your TrackPoint device.


This section aims to summarize tweaks, tools and available options useful to improve system and application performance.


Benchmarking is the act of measuring performance and comparing the results to another system's results or a widely accepted standard through a unified procedure.

Improving performance

The Improving performance article gathers information and is a basic rundown about gaining performance in Arch Linux.

Solid state drives

The Solid State Drives article covers many aspects of solid state drives, including configuring them to maximize their lifetimes.

System services

This section relates to daemons.

File index and search

Most distributions have a locate command available to be able to quickly search files. Arch Linux provides several alternatives, see locate for details.

Desktop search engines provide a similar service, while better integrated into desktop environments.

Local mail delivery

A default setup does not provide a way to synchronize mail. A list of mail delivery agents is available in the Mail server article.


CUPS is a standards-based, open source printing system developed by Apple. See Category:Printers for printer-specific articles.


This section contains frequently-sought "eye candy" tweaks for an aesthetically pleasing Arch experience. See Category:Eye candy for more.


You may wish to install a set of TrueType fonts, as only unscalable bitmap fonts are included in a basic Arch system. There are several general-purpose font families providing large Unicode coverage and even metric compatibility with fonts from other operating systems.

A plethora of information on the subject can be found in the Fonts and Font configuration articles.

If spending a significant amount of time working from the virtual console (i.e. outside an X server), users may wish to change the console font to improve readability; see Linux console#Fonts.

GTK and Qt themes

A big part of the applications with a graphical interface for Linux systems are based on the GTK or the Qt toolkits. See those articles and Uniform look for Qt and GTK applications for ideas to improve the appearance of your installed programs and adapt it to your liking.

Console improvements

This section applies to small modifications that improve console programs' practicality. See Category:Command-line shells for more.

Tab-completion enhancements

It is recommended to properly set up extended tab completion right away, as instructed in the article of your chosen shell.


Aliasing a command, or a group thereof, is a way of saving time when using the console. This is especially helpful for repetitive tasks that do not need significant alteration to their parameters between executions. Common time-saving aliases can be found in Bash#Aliases, which are easily portable to zsh as well.

Alternative shells

Bash is the shell installed by default in an Arch system. The live installation media, however, uses zsh with the grml-zsh-config addon package. See Command-line shell#List of shells for more alternatives.

Bash additions

A list of miscellaneous Bash settings, history search and Readline macros is available in Bash#Tips and tricks.

Colored output

This section is covered in Color output in console.

Compressed files

Compressed files, or archives, are frequently encountered on a GNU/Linux system. Tar is one of the most commonly used archiving tools, and users should be familiar with its syntax (Arch Linux packages, for example, are simply zstd compressed tarballs). See Archiving and compression.

Console prompt

The console prompt () can be customized to a great extent. See Bash/Prompt customization or Zsh#Prompts if using Bash or Zsh, respectively.

Emacs shell

Emacs is known for featuring options beyond the duties of regular text editing, one of these being a full shell replacement. Consult Emacs#Colored output issues for a fix regarding garbled characters that may result from enabling colored output.

Mouse support

Using a mouse with the console for copy-paste operations can be preferred over GNU Screen's traditional copy mode. Refer to General purpose mouse for comprehensive directions. Note that you can already do this in terminal emulators with the clipboard.

Session management

Using terminal multiplexers like tmux or GNU Screen, programs may be run under sessions composed of tabs and panes that can be detached at will, so when the user either kills the terminal emulator, terminates X, or logs off, the programs associated with the session will continue to run in the background as long as the terminal multiplexer server is active. Interacting with the programs requires reattaching to the session.

  1. Golf lessons pearland
  2. Route 348
  3. Candy crush diamond

Arch Linux How to Install Fonts

Installing fonts on Arch Linux is easy. There are multiple different ways that you would normally do this.


You can install fonts with Pacman easily.

Search for fonts in the repo like this:

Install fonts like this:

Manual Installation

You can also just manually place fonts here if you want them to be installed system wide:

Or here if you want them to only be accessible to one user:

Everyone will need to be able to read the fonts. Give them the correct permissions.

Files will need0444
Directories will need0555

You may need to run the following:

To give Xserver direct access to the fonts you will want to add a FontPath entry to your Xorg config file. This will be one of the following:

  • /etc/X11/xorg.conf
  • /etc/xorg.conf


Apple fonts may come in dmg format. They can be unpacked with 7zip. For example you would unpack them like this:


Font Management On Linux



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:

Enable font presets by creating symbolic links:

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:

Uncomment the desired mode at the end:

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:

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

Infinality Remix

If you want to use infinality you should try

Enable font presets by creating symbolic links:

To be sure, inside /etc/fonts/local.conf add with following
change Favourite for your selected font (i.e Source Sans Pro, Droid Sans, Droid Serif, etc):

The following fonts are recommended and should be installed for a good experience:

  • Caladea ()
  • Carlito ()
  • DejaVu ()
  • Impallari Cantora ()
  • Liberation ()
  • Noto ()
  • Open Sans ()
  • Overpass ()
  • Roboto ()
  • TeX Gyre ()
  • Ubuntu ()
  • Courier Prime ()
  • Gelasio ()
  • Merriweather ()
  • Source Sans Pro ()
  • Signika ()

Older and deprecated

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

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

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):

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

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

Install the bundle:

Finally, reboot your system.


Font arch linux

Font configuration

Related articles

Fontconfig is a library designed to provide a list of available fonts to applications, and also for configuration for how fonts get rendered. The FreeType library renders the fonts, based on this configuration. The freetype2 font rendering packages on Arch Linux include the bytecode interpreter (BCI) enabled for better font rendering especially with an LCD monitor. See #Fontconfig configuration and Font configuration/Examples.

Though Fontconfig is used often in modern Unix and Unix-like operating systems, some applications rely on the original method of font selection and display, the X Logical Font Description.

Font paths

For fonts to be known to applications, they must be cataloged for easy and quick access.

The font paths initially known to Fontconfig are: , (and , now deprecated). Fontconfig will scan these directories recursively. For ease of organization and installation, it is recommended to use these font paths when adding fonts.

To see a list of known Fontconfig fonts:

$ fc-list : file

See fc-list(1) for more output formats.

Check for Xorg's known font paths by reviewing its log:

$ grep /fonts ~/.local/share/xorg/Xorg.0.log
  • You can also check the list of Xorg's known font paths using the command .
  • Use if Xorg is run with root privileges.

Keep in mind that Xorg does not search recursively through the directory like Fontconfig does. To add a path, the full path must be used:

Section "Files" FontPath "/usr/share/fonts/local/" EndSection

For more details about Xorg configuration read, Xorg#Configuration. If you want font paths to be set on a per-user basis, you can add and remove font paths from the default by adding the following line(s) to :

xset +fp /usr/share/fonts/local/ # Prepend a custom font path to Xorg's list of known font paths xset -fp /usr/share/fonts/sucky_fonts/ # Remove the specified font path from Xorg's list of known font paths

To see a list of known Xorg fonts use , from the xorg-xlsfonts package.

Fontconfig configuration

Fontconfig is documented in the fonts-conf(5) man page.

Configuration can be done per-user through (usually ), and globally with . The settings in the per-user configuration have precedence over the global configuration. Both these files use the same syntax.

  • The preset need to be enabled to make the user configuration take effect, and the preset is for the global configuration. Check the #Presets section to know how to enable these presets.
  • Configuration files and directories: , and are deprecated and will not be read by default in the future versions of the package. New paths are , and respectively. If using the second location, make sure the naming is valid (where is a two digit number like , , or ).

Fontconfig gathers all its configurations in a central file (). This file is replaced during fontconfig updates and should not be edited. Fontconfig-aware applications source this file to know available fonts and how they get rendered; simply restarting such applications is sufficient to load the new configuration. This file is a conglomeration of rules from the global configuration (), the configured presets in , and the user configuration file (). can be used to rebuild fontconfig's configuration, although changes will only be visible in newly launched applications.

Note: For some desktop environments (such as GNOME and KDE) using the Font Control Panel will automatically create or overwrite the user font configuration file. For these desktop environments, it is best to match your already defined font configurations to get the expected behavior. Also ensure that the desktop locale settings or Regional Settings are supported by the configured fonts, if not the font configuration could be overidden.

Fontconfig configuration files use XML format and need these headers:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <!-- settings go here --> </fontconfig>

The configuration examples in this article omit these tags.


There are presets installed in the directory . They can be enabled by creating symbolic links to them, both per-user and globally, as described in . These presets will override matching settings in their respective configuration files.

For example, to enable sub-pixel RGB rendering globally:

$ cd /etc/fonts/conf.d # ln -s /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf

To do the same but instead for a per-user configuration:

$ mkdir $XDG_CONFIG_HOME/fontconfig/conf.d $ ln -s /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf $XDG_CONFIG_HOME/fontconfig/conf.d


Font rasterization converts vector font data to bitmap data so that it can be displayed. The result can appear jagged due to aliasing. The technique known as anti-aliasing can be used to increase the apparent resolution of font edges. Anti-aliasing is enabled by default. To disable it:

<match target="font"> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match>

Note: Some applications may override default anti-aliasing settings.


Font hinting (also known as instructing) is the use of mathematical instructions to adjust the display of an outline font so that it lines up with a rasterized grid (i.e. the pixel grid of the display). Its intended effect is to make fonts appear more crisp so that they are more readable. Fonts will line up correctly without hinting when displays have around 300 DPI.

Byte-Code Interpreter (BCI)

Using BCI hinting, instructions in TrueType fonts are rendered according to FreeTypes's interpreter. BCI hinting works well with fonts with good hinting instructions. Hinting is enabled by default. To disable it:

<match target="font"> <edit name="hinting" mode="assign"> <bool>false</bool> </edit> </match>
Note:The BCI implementation can be switched in the script . The interpreter is set by passing the parameter , NNcorresponding to the version chosen, to the variable in the script. The most popular values are:
  • 35 for classic mode (emulates Windows 98),
  • 36 for classic Windows ClearType style (before Windows XP),
  • 38 for "Infinality" mode (highly configurable rendering, considered slow and discontinued),
  • 40 for minimal mode (stripped down Infinality, this is the default).
Subpixel rendering should use a subpixel BCI. For details, see [1].


The autohinter attempts to do automatic hinting and disregards any existing hinting information. Originally it was the default because TrueType2 fonts were patent-protected but now that these patents have expired there is very little reason to use it. It does work better with fonts that have broken or no hinting information but it will be strongly sub-optimal for fonts with good hinting information. Generally common fonts are of the later kind so autohinter will not be useful. Autohinter is disabled by default. To enable it:

<match target="font"> <edit name="autohint" mode="assign"> <bool>true</bool> </edit> </match>


Hintstyle is the amount of font reshaping done to line up to the grid. Hinting values are: , , , and . will make the font more fuzzy to line up to the grid but will be better in retaining font shape (see [2]), while will be a crisp font that aligns well to the pixel grid but will lose a greater amount of font shape. implicitly uses the autohinter in a vertical-only mode in favor of font-native information for non-CFF (.otf) fonts.

is the default setting. To change it:

<match target="font"> <edit name="hintstyle" mode="assign"> <const>hintnone</const> </edit> </match>

Note: Some applications may override default hinting settings.

Pixel alignment

Most monitors manufactured today use the Red, Green, Blue (RGB) specification. Fontconfig will need to know your monitor type to be able to display your fonts correctly. Monitors are either: RGB (most common), BGR, V-RGB (vertical), or V-BGR. A monitor test can be found here.

<match target="font"> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match>

Note: Without subpixel rendering (see below), freetype will only care about the alignment (vertical or horizontal) of the subpixels. There is no difference between RGB and BGR, for example.

Subpixel rendering

Subpixel rendering is a technique to improve sharpness of font rendering by effectively tripling the horizontal (or vertical) resolution through the use of subpixels. On Windows machines, this technique is called ClearType.

FreeType2 provides two different types of subpixel rendering, called Harmony and ClearType () [3].

An LCD filter is recommended when ClearType subpixel rendering is enabled (Harmony subpixel rendering does not require setting an LCD filter). See the section below on how to enable an LCD filter and its benefits.

Starting from FreeType 2.10.3, Arch Linux enables ClearType subpixel rendering by default [4].

Note: Use the LCD filter to get the subpixel rendering behavior prior FreeType 2.10.3, called Harmony (instead of ClearType).

LCD filter

When using ClearType subpixel rendering, you should enable the LCD filter, which is designed to reduce colour fringing. This is described under LCD filtering in the FreeType 2 API reference. Different options are described under FT_LcdFilter, and are illustrated by this LCD filter test page.

The filter will work for most users. Other filters are available that can be used in special situations: ; a lighter filter ideal for fonts that look too bold or fuzzy, , the original Cairo filter; and to disable it entirely.

<match target="font"> <edit name="lcdfilter" mode="assign"> <const>lcddefault</const> </edit> </match>

Advanced LCD filter specification

If the available built-in LCD filters are not satisfactory, it is possible to tweak the font rendering very specifically by building a custom freetype2 package and modifying the hardcoded filters. The Arch Build System can be used to build and install packages from source. This requires installation of the asp package.

Checkout the freetype2 PKGBUILD and download/extract the build files:

$ asp checkout freetype2 $ cd freetype2/trunk $ makepkg -o

Enable ClearType subpixel rendering by editing the file and uncommenting the macro.

Then, edit the file and look up the definition of the constant :

static const FT_Byte default_filter[5] = { 0x10, 0x40, 0x70, 0x40, 0x10 };

This constant defines a low-pass filter applied to the rendered glyph. Modify it as needed. (reference: freetype list discussion) Save the file, build and install the custom package:

$ makepkg -e # pacman -Rd freetype2 # pacman -U freetype2-VERSION-ARCH.pkg.tar.xz

Reboot or restart X. The lcddefault filter should now render fonts differently.

Custom settings for certain fonts or font styles

The auto-hinter uses sophisticated methods for font rendering, but often makes bold fonts too wide. Fortunately, a solution can be turning off the autohinter for bold fonts while leaving it on for the rest:

... <match target="font"> <test name="weight" compare="more"> <const>medium</const> </test> <edit name="autohint" mode="assign"> <bool>false</bool> </edit> </match> ...

Some fonts may not look good with BCI hinting. It can be disabled for just those fonts:

... <match target="font"> <test name="family" qual="any"> <string>My Font</string> </test> <edit name="hinting" mode="assign"> <bool>false</bool> </edit> </match> ...

Replace or set default fonts

The most reliable way to set a default font is to add an XML fragment similar to the one below. Using the "binding" attribute will give you better results, for example, this will cause Ubuntu to be used in place of Georgia:

... <match target="pattern"> <test qual="any" name="family"><string>Georgia</string></test> <edit name="family" mode="assign" binding="same"><string>Ubuntu</string></edit> </match> ...

An alternate approach is to set the "preferred" font. Fonts matching the <family> element are edited to prepend the list of <prefer>ed families before the matching <family>. This only works if the original font is not in the system, in which case the one specified will be substituted:

... <!-- Replace Helvetica with Bitstream Vera Sans Mono --> <!-- Note, an alias for Helvetica should already exist in default conf files --> <alias> <family>Helvetica</family> <prefer> <family>Bitstream Vera Sans Mono</family> </prefer> </alias> ...

Whitelisting and blacklisting fonts

The element is used in conjunction with the and elements to selectively whitelist or blacklist fonts from the resolve list and match requests. The simplest and most typical use case it to reject one font that is needed to be installed, however is getting matched for a generic font query that is causing problems within application user interfaces.

First obtain the Family name as listed in the font itself:

$ fc-scan .fonts/lklug.ttf --format='%{family}\n'LKLUG

Then use that Family name in a stanza:

<selectfont> <rejectfont> <pattern> <patelt name="family" > <string>LKLUG</string> </patelt> </pattern> </rejectfont> </selectfont>

Typically when both elements are combined, is first used on a more general matching glob to reject a large group (such as a whole directory), then is used after it to whitelist individual fonts out of the larger blacklisted group.

<selectfont> <rejectfont> <glob>/usr/share/fonts/OTF/*</glob> </rejectfont> <acceptfont> <pattern> <patelt name="family" > <string>Monaco</string> </patelt> </pattern> </acceptfont> </selectfont>

Disable bitmap fonts

Bitmap fonts are sometimes used as fallbacks for missing fonts, which may cause text to be rendered pixelated or too large. Use the preset to disable this behavior.

To disable embedded bitmap for all fonts:

~/.config/fontconfig/conf.d/20-no-embedded.conf<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <match target="font"> <edit name="embeddedbitmap" mode="assign"> <bool>false</bool> </edit> </match> </fontconfig>

To disable embedded bitmap fonts for a specific font:

<match target="font"> <test qual="any" name="family"> <string>Monaco</string> </test> <edit name="embeddedbitmap"> <bool>false</bool> </edit> </match>

Disable scaling of bitmap fonts

To disable scaling of bitmap fonts (which often makes them blurry), remove . Note this can break the scaling of emoji fonts such as Segoe UI Emoji, making them huge.

Create bold and italic styles for incomplete fonts

FreeType has the ability to automatically create italic and bold styles for fonts that do not have them, but only if explicitly required by the application. Given programs rarely send these requests, this section covers manually forcing generation of missing styles.

Start by editing as explained below. Store a copy of the modifications on another file, because a font update with will overwrite .

Assuming the Dupree font is installed:

"dupree.ttf" 0 "Dupree:style=Regular:slant=0:weight=80:width=100:foundry=unknown:index=0:outline=True:etc...

Duplicate the line, change to or any other style. Also change to for italic, to for bold, or combine them for bold italic:

"dupree.ttf" 0 "Dupree:style=Bold Italic:slant=100:weight=200:width=100:foundry=unknown:index=0:outline=True:etc...

Now add necessary modifications to :

... <match target="font"> <test name="family" qual="any"> <string>Dupree</string> <!-- other fonts here .... --> </test> <test name="weight" compare="more_eq"><int>140</int></test> <edit name="embolden" mode="assign"><bool>true</bool></edit> </match> <match target="font"> <test name="family" qual="any"> <string>Dupree</string> <!-- other fonts here .... --> </test> <test name="slant" compare="more_eq"><int>80</int></test> <edit name="matrix" mode="assign"> <times> <name>matrix</name> <matrix> <double>1</double><double>0.2</double> <double>0</double><double>1</double> </matrix> </times> </edit> </match> ...

Tip: Use the value for existing bold fonts in order to make them even bolder.

Rule priority

Fontconfig processes files in in numerical order. Therefore the rules of and will have the same effect as a single file containing first the rules of then the ones of .

Usually that means the files with the smaller prefix will have higher precedence. However, the fontconfig syntax is flexible and allows that a new rule takes precedence over an existing rule. Therefore it is recommended to #Query the current settings to test the result of the rule interactions.

Note that the user's rules defined in and in the directory are loaded via the file and typically take precedence over the rules defined in files starting with a higher number.

Query the current settings

To find out what settings are in effect, use . eg.

$ fc-match --verbose Sansfamily: "DejaVu Sans"(s) hintstyle: 3(i)(s) hinting: True(s) ...

Look up the meaning of the numbers at fonts-conf(5) Eg. 'hintstyle: 3' means 'hintfull'

Applications without fontconfig support

Some applications like URxvt will ignore fontconfig settings. You can work around this by using , but it is not as flexible as fontconfig. Example (see #Fontconfig configuration for explanations of the options):

~/.XresourcesXft.autohint: 0 Xft.lcdfilter: lcddefault Xft.hintstyle: hintslight Xft.hinting: 1 Xft.antialias: 1 Xft.rgba: rgb

Make sure the settings are loaded properly when X starts with (see X resources for more information).


Force emoji font

Some software may lacks proper Emoji font fallback support.

Note: For Firefox see workaround on Firefox#Font troubleshooting instead.

To force emoji presentation create emoji font fallback preset for your application, to enable see #Presets. Replace application with your application's executable's basename and Noto Color Emoji with your preferred emoji font:

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: was replaced with , but files there should not be edited. (Discuss in Talk:Font configuration)

/etc/fonts/conf.avail/55-emoji-prepend.conf<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <match> <test name="prgname"> <string>application</string> </test> <edit name="family" mode="prepend" binding="weak"> <string>Noto Color Emoji</string> </edit> </match> </fontconfig>

Distorted fonts

Note: 96 DPI is not a standard. You should use your monitor's actual DPI to get proper font rendering, especially when using subpixel rendering.

If fonts are still unexpectedly large or small, poorly proportioned or simply rendering poorly, fontconfig may be using the incorrect DPI.

Fontconfig should be able to detect DPI parameters as discovered by the Xorg server. You can check the automatically discovered DPI with (provided by the xorg-xdpyinfo package):

$ xdpyinfo | grep dots resolution: 102x102 dots per inch

If the DPI is detected incorrectly (usually due to an incorrect monitor EDID), you can specify it manually in the Xorg configuration, see Xorg#Display size and DPI. This is the recommended solution, but it may not work with buggy drivers.

Fontconfig will default to the Xft.dpi variable if it is set. Xft.dpi is usually set by desktop environments (usually to Xorg's DPI setting) or manually in or . Use xrdb to query for the value:

$ xrdb -query | grep dpiXft.dpi: 102

Note: See X resources#No output from xrdb -query if it troubles you.

Those still having problems can fall back to manually setting the DPI used by fontconfig:

... <match target="pattern"> <edit name="dpi" mode="assign"><double>102</double></edit> </match> ...

Calibri, Cambria, Monaco, etc. not rendering properly

Some scalable fonts have embedded bitmap versions which are rendered instead, mainly at smaller sizes. Using Metric-compatible fonts as replacements can improve the rendering in these cases.

You can also force using scalable fonts at all sizes by disabling embedded bitmap, sacrificing some rendering quality.

Applications overriding hinting

Some applications or desktop environments may override default fontconfig hinting and anti-aliasing settings. This may happen with GNOME 3, for example while you are using Qt applications like vlc or smplayer. Use the specific configuration program for the application in such cases. For GNOME, try gnome-tweaks.

Applications not picking up hinting from GNOME settings

For instance, under GNOME it sometimes happens that Firefox applies full hinting even when it's set to "none" in GNOME's settings, which results in sharp and widened fonts. In this case you would have to add hinting settings to your file:

<?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'> <fontconfig> <match target="font"> <edit mode="assign" name="hinting"> <bool>false</bool> </edit> </match> </fontconfig>

In this example, hinting is set to "grayscale".

Incorrect hinting in GTK applications

In some desktop environments, especially outside GNOME and Plasma, some GTK applications could not read font configuration properly. In order to solve this issue, install xsettingsd or xsettingsd-gitAUR and execute it at every system startup. See also Xsettingsd and xsettingsd wiki for more information. It can be configured with the following common configuration:

~/.xsettingsdXft/Hinting 1 Xft/HintStyle "hintslight" Xft/Antialias 1 Xft/RGBA "rgb"

If that is not working in some other applications, you could install xorg-xrdb and provide the following configuration:

~/.XresourcesXft.hinting: 1 Xft.hintstyle: hintslight Xft.antialias: 1 Xft.rgba: rgb

Then you can execute the script at every system startup to apply the options. See also X resources and #Applications without fontconfig support.

Helvetica font problem in generated PDFs

If the following command

fc-match helvetica


helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"

then the bitmap font provided by xorg-fonts-75dpi is likely to be embedded into PDFs generated by "Print to File" or "Export" in various applications. The bitmap font was probably installed as a consequence of installing the whole xorg group (which is usually NOT recommended). To solve the pixelized font problem, you can uninstall the package. Install gsfonts (Type 1) or tex-gyre-fonts (OpenType) for corresponding free subsitute of Helvetica (and other PostScript/PDF base fonts).

You may also experience similar problem when you open a PDF which requires Helvetica but does not have it embedded for viewing.

FreeType breaking bitmap fonts

Some users are reporting problems (FS#52502) with bitmap fonts having changed names after upgrading freetype2 to version 2.7.1, creating havok in terminal emulators and several other programs such as dwm or dmenu by falling back to another (different) font. This was caused by the changes to the PCF font family format, which is described in their release notes[5]. Users transitioning from the old format might want to create a font alias to remedy the problems, like the solution which is described in [6], given here too:

Assume we want to create an alias for terminus-font, which was renamed from to in the previously described freetype2 update:

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: was replaced with , but it is intended for pre-installed files. (Discuss in Talk:Font configuration)

  • Create a configuration file in for the font alias:
/etc/fonts/conf.avail/33-TerminusPCFFont.conf<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <alias> <family>Terminus</family> <prefer><family>xos4 Terminus</family></prefer> <default><family>fixed</family></default> </alias> </fontconfig>
  • Create a symbolic link towards it in the directory. In our example we would link as follows: to make the change permanent.

Everything should now work as it did before the update, the font alias should not be in effect, but make sure to either reload or restart the display server first so the affected programs can use the alias.

Underscores not rendered with Dejavu Monospace

Since Pango 1.44, the underscore characters disappear with certain font sizes when using the DejaVu Sans Mono font. A workaround is to use Liberation Mono as the monospace font, see #Replace or set default fonts.

Debugging FreeType fonts

freetype2-demos provides tools for debugging FreeType font configuration. is a GUI in which you can tweak font rendering settings with a live preview. For example:

$ ftview -e unic -d 1024x768x24 -r 96 10 /usr/share/fonts/noto/NotoSans-Regular.ttf

See also

Add Icons to your Fonts with Nerd Fonts

Growled Fierce. Suddenly Kandyba wheezed and finished. Fierce twitched, spewing streams of sperm into his mouth.

Now discussing:

No, Vitya, no. Do not even think. - Mother-in-law through the robe tried to straighten the bra strap, which treacherously slipped off the shoulder. - Vitya, well, we can't. This is treason.

800 801 802 803 804