Here are some quick notes on working with fonts on Linux.

X Windows fonts

Fonts are managed by fontconfig. For per-user fonts, you can generally just drop your font into ~/.fonts/, and it will be picked up by X. You can use fc-list to list fonts that X can find.

$ fc-list
Nimbus Sans L:style=Regular Italic

For more details on a font, you can set the format:

$ fc-list -f '%{family}\t%{file}\n'
Ann     /usr/share/fonts/freefonts/ans.pfb
Goudy-Old-Style /usr/share/fonts/freefonts/goudyob.pfb
Nimbus Roman No9 L      /usr/share/fonts/urw-fonts/n021003l.pfb

Or just use --verbose:

$ fc-list -v
Pattern has 15 elts (size 16)
        family: "Ann"(s)
        style: "Stone"(s)

You can use xset to query the font path for your current X server.

$ xset q
Font Path:

I use gucharmap to browse fonts and select unicode characters that I haven't yet bound to the keyboard via Xmodmap or XCompose. There are a number of nice fonts over at the Open Font Library.

Web fonts

Modern desktop fonts are generally TrueType or OpenType. For the web, where bandwidth is important, there is the Web Open Font Format (WOFF), which compresses the desktop formats. I've written a simple script (font-reduce) that uses FontForge to convert subsets of fonts to WOFF for use on the web.

Console fonts

$ setfont /usr/share/consolefonts/gr737b-9x16-medieval.psfu.gz

On Gentoo you can set the default in /etc/conf.d/consolefont.

Authoring fonts

The main open source tool seems to be FontForge.

Further reading

There are more details about fonts on Linux on the Arch wiki page. Kevin Bowling also has some interesting notes about configuring fontconfig. Finally, Nice Web Type has notes about using fonts on the web.