print Linux font configuration
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
Makefile
README
font-config-info.c

README

font-config-info is a tiny program that queries and prints a Linux system's font
configuration. It is intended to produce brief reports that users can send to
developers to aid in debugging font rendering issues.

Because users deserve choice, the Linux desktop provides a robust collection of
overlapping configuration systems. Developers are then given the opportunity to
use their favorite systems from this set to control each application's behavior.

The following packages are needed to build font-config-info on an Debian 9
"stretch" system:

  gcc
  libc6-dev
  libfontconfig1-dev
  libgtk-3-dev
  libx11-dev

On Fedora 21 the prerequisites are

  gcc
  glibc-devel
  fontconfig-devel
  gtk2-devel
  libxcb-devel

font-config-info currently prints information from the following sources:

- GtkSettings (https://developer.gnome.org/gtk3/stable/GtkSettings.html) is part
  of the GTK+ UI library. It cobbles together settings from various sources
  (XSETTINGS, gtkrc files, programmatically-set values, etc.) for use by GTK+
  applications.

- GtkStyle objects (https://developer.gnome.org/gtk2/stable/GtkStyle.html) store
  theming information used by GTK widgets. I believe that the Pango font
  descriptions stored here determine which font is used for a given GTK widget.

- GSettings (https://developer.gnome.org/gio/stable/GSettings.html) is an
  implementation of the DConf (https://wiki.gnome.org/dconf) configuration
  specification. It stores settings for GNOME applications.

- X resources (http://en.wikipedia.org/wiki/X_resources) are an archaic means of
  storing strings in the X Window System. Decades ago, they were all the rage
  for configuring the appearance of X11 applications. Resources are typically
  listed in a ~/.Xresources or ~/.Xdefaults file that is loaded by the xrdb
  program after the X server starts. In addition to application-specific
  settings, some applications read "Xft."-prefixed resources to configure
  FreeType's text rendering.

- The X server has its own notion of the physical dimensions of connected
  displays, which can be used to compute a dots-per-inch value that may affect
  the size at which text is rendered.

- The XSETTINGS protocol
  (http://standards.freedesktop.org/xsettings-spec/xsettings-spec-0.5.html)
  defines a desktop-agnostic method for storing configuration in the X server.
  Settings are typically defined by the gnome-settings-daemon program. If the
  dump_xsettings program from https://code.google.com/p/xsettingsd/ is
  installed, it will be executed to display the configuration stored in
  XSETTINGS.

- Fontconfig (http://www.freedesktop.org/wiki/Software/fontconfig/) provides
  fine-grained, XML-based configuration of font matching and rendering. A -f
  flag may be used to pass a Pango font description (as described at
  http://goo.gl/ERHHTh); otherwise Fontconfig will be queried using the default
  font for the GtkLabel widget's style.

Disturbingly, the above list does not cover all available mechanisms for
configuration:

- GConf (https://projects.gnome.org/gconf/) is a legacy system that is used to
  store preferences for GNOME 2 applications.

- KDE surely has its own rich history of configuration systems, although I'm
  unfamiliar with them.