Optimal Use of Fonts on Linux

Avi Alkalay

Linux, Open Standards consultant :: IT and Software Architect
IBM Linux Impact Team :: ibm.com/linux

Donovan Rebbechi

Hal Burgiss


Revision History
Revision 2005-02-1818 Feb 2005Revised by: avi
Included BCI support status for Mandrake and GentooAdded link to Firefox configuration hackIncluded link to Scribus siteRemoved broken and outdated info links
Revision 2005-01-1212 Jan 2005Revised by: avi
E-mail addresses more difficult to figure out for machines.
Revision 2004-12-2424 Dec 2004Revised by: avi
Small corrections and DocBook improvements.
Revision 2004-12-1212 Dec 2004Revised by: avi
Typos correction by Scott Brayban (sgrayban borgnet us).Finished links to msfonts and freetype RPMs.
Revision 2004-12-055 Dec 2004Revised by: avi
Merged with FDU-HOWTO.Finished RPM sections.Added "need help" appendix.Finished "About this doc" appendix.Ready for peer revision.
Revision 2004-11-2727 Nov 2004Revised by: avi
Created first sections.Merged with Font-HOWTO.

Table of Contents
1. Introduction
2. Why Fonts on Linux Aren't Straight Forward ?
3. Font Packages
3.1. Bitstream Vera Fonts
3.2. Microsoft Fonts
4. The Easy Steps to Enlighten Your Desktop
4.1. Get a Better FreeType RPM
4.2. Configure Your Desktop
5. Producing Portable Documents
5.1. Linux to Windows and vice-versa
5.2. Linux to Linux
5.3. Any to Any with OpenOffice.org and Bitstream Vera Fonts
5.4. A Very Small Guide of Style
6. Create RPMs of Your Fonts
6.1. Step 1: Prepare Your Environment to Build The Package
6.2. Step 2: Prepare the Fonts Files to Package
6.3. Step 3: Create a .spec File With This Template
6.4. Step 4: Build It
7. Designer's Guide for Modern Good Looking Documents
7.1. Families of Typefaces
7.2. Classifications of Typefaces
7.3. Ligatures, Small caps fonts and expert fonts
7.4. Font Metrics and Shapes
8. Font Technologies
8.1. Bitmap Fonts
8.2. TrueType Fonts
8.3. Type 1 Fonts
8.4. Type3 Fonts
8.5. Type 42 Fonts
8.6. Type 1 vs TrueType -- a comparison
9. Getting Fonts For Linux
9.1. True Type
9.2. Type 1 Fonts and Metafont
10. Useful Font Software for Linux
11. Ethics and Licensing Issues Related to Type
12. References
12.1. Font Information
12.2. Postscript and Printing Information
13. Glossary
A. Enabling Bytecode Interpreter in FreeType
B. We Need Your Help
C. About this Document

1. Introduction

You can have the coolest desktop widget theme, the most enlightened colors combination, and a very nice background wallpaper. Your desktop still won't look professional, clean, beautiful, and most important, comfortable, without good fonts.

It is a common sense nowadays that good fonts are a key element for good desktop usability, because we use to spend hours per day in front of computers, writing documents, dealing with huge spreadsheets, making presentations, browsing and chatting. So we are all the day reading text.

The font subsystem on Linux evolved a lot in the last years, from an old naming, handling and option of fonts, to the support of True Type, Bistream Vera, etc. As of release time of Fedora Core 2, components like Xft, FreeType and FontConfig, and higher level software usage of them has stabilized and is now considered mature. But Linux still has issues with optimal font rendering, most of them related to software patents that we describe in Section 2 bellow.

2. Why Fonts on Linux Aren't Straight Forward ?

Jump to Section 4 if you just want to fix your desktop fonts fast. Read this section if you are interested in the details on how and why make it.

Fonts are used on the screen and for printing. These medias differ a lot in DPI resolution: screens have 72 to 96 DPI, while modern printers use to have 300 DPI. So low-resolution medias as the screen need better font rendering algorithms to workaround the media's limitations.

To get optimal fonts on the screen you need:

  1. Good fonts designed for low resolution media.

    True Type font technology evolved to be the best thing you can get nowadays. But for optimal screen beauty, you also need fonts that were designed for this purpose. We found that Tahoma and Verdana are the best fonts you can get for the screen.

  2. A good font renderer.

    Current Linux distributions include the excelent and very mature FreeType font renderer library.

A .ttf file contains information to draw the characters at any size, so you eventually can convert a text into a scalable outline drawing (built from line segments and quadratic bezier arcs) with tools like OpenOffice.org or CorelDraw.

Font drawing algorithms are extremely complex because they have to decide which pixels to highlight based on the mathematical equations inside the .ttf file. When you need text in big sizes like 48 or 60, one or two pixels these algorithms "forget" to highlight doesn't make much difference, but when you need text at size 8pt or 11px, each pixel counts. And these use to be the text size for KDE and Gnome widgets, text for web browsing, and almost everything else we see on the screen.

To solve this problem more efficiently, beside of the mathematical equations inside a .ttf file, a font designer (a human being with a font creation software) also put some extra information to help the font renderer make correct decisions for this small size text. This process is called grid-fitting or hinting.

The point is: the technologies to interpret this hinting information are patented by Apple, and they are commonly called True Type Byte Code Interpreters (or simply BCI in our document, from now on).

With reverse engineering, the Freetype Project has implemented a byte code interpreter, but due to legal issues in some countries, some Linux distributions disable it at compilation and packaging time. This is a list of distributions that are known to enable or disable BCI. Please send us updates.

Table 1. FreeType Bytecode Interpreter Status per Distribution

SupportNo Native Support
GentooRed Hat, Fedora

FreeType tries to workaround this legal issues developing autohinting algorithms, but in our tests, BCI algorithms gave us much better font rendering results on the screen.

3. Font Packages

3.1. Bitstream Vera Fonts

Bitstream donated to the open world their Vera set of fonts, which are good quality and include a sans, sans serif and monospace fonts. This fonts are not very well hinted but can be used for desktop widgets, programming, fluent text reading and web surfing. Here is a screen shot:

Figure 1. Bitstream Vera Fonts

At these sizes, these fonts look great, specially with anti-aliasing. But unfortunately their bad hinting can be noted at small sizes.

Bitstream Vera fonts are included by default in all modern Linux distributions.

3.2. Microsoft Fonts

These are the best fonts available to be used on the screen. Very well hinted for small sizes makes them perfect for desktop widgets, fluent text, etc.

They are Verdana, Tahoma, Times New Roman, Arial, Trebuchet, Comic Sans, Impact and others. Here is a screen shot of them:

Figure 2. The Microsoft Core Fonts

As we said before, Tahoma and Verdana were designed for the screen, but they are getting overused for many other purposes.

Our objective here is to provide links where you can get good quality RPMs, debs, etc for your distribution. These packages are provided by independent contributors, so if you have the skills to build them for your distribution, please contact us and send the URL for your packages. WE WILL ACCEPT CONTRIBUTIONS.

Packages for distributions:

Some people say these fonts are free only for who have a Microsoft Windows license.

4. The Easy Steps to Enlighten Your Desktop

You'll have to:

  1. Update the FreeType library package on you system with one compiled with BCI support.

  2. Install the Microsoft Fonts package.

  3. Follow the instructions bellow on how to configure your desktop and common applications.

4.1. Get a Better FreeType RPM

FreeType compiled with BCI presented much better screen font rendering results.

Get RPMs for your distribution here:

  • Red Hat and Fedora RPMs.

  • Mandrake RPMs through the Penguin Liberation Front website. This link was provided by a Mandrake user, but I tryied to find the package without success. I hope Mandrake users will find their way there.

  • Please send us your distribution specific BCI-enabled FreeType package to be included here.

WE WILL ACCEPT CONTRIBUTIONS of distribution specific FreeType repackaging, so if you can contact us, we appreciate.

If you are interested in repackaging your own FreeType, see how we repackage the Fedora Core and Red Hat RPMs with BCI on the Appendix A as a reference.

4.2. Configure Your Desktop

General Guidelines

As a general rule, we'll use Tahoma 8pt for desktop widgets, LucidaTypewriter 8pt for monospace text, and Verdana 8pt, 9pt or 10pt for fluent text reading or web surfing.

We choose these fonts, specially Microsoft's Tahoma and Verdana, because they look perfect at small sizes (8pt, due to their excellent hinting), providing a more efficient screen utilization. They'll make your desktop look beautiful, professional, clean and comfortable. These fonts were designed for this purposes.

For window titles or text that will appear in bigger sizes, you may choose whatever you want because bigger sizes hinting are not so relevant.

4.2.1. A Note About Anti-Aliasing

Anti-Aliasing is a technique used to reduce the "steeper" effect on low-resolution medias, so it can be used to improve the quality of text on the screen. It is also used to blur the imperfections of bad hinted fonts at small sizes. For desktop widgets (usually with small size), some people think it makes the desktop look dirty.

So a practical conclusion we found is to use Anti-Aliasing for sizes bigger than 10pt, and use good hinted fonts for smaller sizes without Anti-Aliasing. Currently the best hinted fonts you can find, as we cited before, are the ones found in the Microsoft font package.

4.2.2. KDE

To configure KDE, use the Control Center (kcontrol in the command line). This is how I have it configured.

Figure 3. General KDE font configuration

So we basically choosed Trebuchet 12pt as the window title font, the bitmap font LucidaTypewriter 8pt for fixed size text, and Tahoma 8pt for everything else, which includes menus, buttons, etc. The 2 first should follow your taste, but Tahoma 8pt for all the rest is the optimal configuration, also used by MS Windows 2000 and XP.

One other thing to note is that I disabled anti-aliasing for font sizes up to 9 points. Look at the entire dialog and see how all text is clearly rendered, looks clean precise and professional.

Konqueror (KDE's browser and file manager) also needs font configuration for beautiful web browsing and file management.

Figure 4. Konqueror File Management font configuration

We used the same Tahoma 8pt for rendering the list of files in Konqueror's window, because Tahoma was simply designed with this purpose in mind, with 8pt being its most important size, with no need of anti-aliasing to be clear and beautiful.

Figure 5. Konqueror Web Browsing font configuration

And this is finally for web browsing. We are using Verdana as the general font because it was simply designed for the purpose of fluent text reading on the screen. And the old LucidaTypewriter when a web page requested a fixed size font. Some may choose fonts like Courier or Bistream Vera Mono here.

We left all other fonts blank, to let the page choose it. But you may use Times New Roman as the Serif Font. Read more about serif fonts in Section 7.2.2.

The sizes of the fonts for browsing are a bit personal and depends on how healthy are your eyes, and the resolution of your screen. In my 1024x768 screen I use default size as 8pt, and I don't want web pages to use sizes smaller than 7pt. In the end of the day, to set the size is not so effective because modern web pages use to set them with absolute values. So it is more practical to use the browsers View menu to "zoom" the page you are currently seeing.

One more thing to note is the Default Encoding. This is a quite complex subject that deserves an entire HOWTO, but it is generally OK to leave it as the Language Encoding. You may need to change it if you frequently browse pages with non pure ASCII (international text) made by irresponsible webmasters that still don't use UTF-8 for the web. But here also it may be more practical to use the View menu to set the encoding for the current page you are browsing.

4.2.3. Gnome

We'll use our generic rules here too: Tahoma 8pt for everything.

Figure 6. Gnome Font Configurations

4.2.4. OpenOffice.org

As of Fedora Core 3 time, OpenOffice.org 1.1.2 has look (but not feel) integration with KDE and Gnome. This means that your environment should tell OOo how to use widget fonts. But we found it didn't really work. With further investigation we found that only the non-AA configuration we made was not propagated to OOo. So we used OOo's own dialogs to change it.

Figure 7. OpenOffice.org font configuration, using my KDE themes etc.

So we basically selected Tool, Options menu, and in the View section we enable OOo to do anti-aliasing at font sizes beginning with 12 pixels (approximately 9pt), and the result is what you can see above: clean and comfortable widgets with Tahoma 8pt.

4.2.5. Mozilla Firefox

Mozilla Firefox follows the same Konqueror rules.

Figure 8. Firefox fonts for web browsing

So we Edit->Preferences and then Fonts & Colors, and selected Verdana 14px for general browsing and LucidaTypewriter 11px for monospace text.

Firefox is a Gnome application, so it will use Gnome's font settings for widgets.

Additionaly, a very interesting way to configure some font rendering aspects of Firefox is described in a Mandrake Wiki.

4.2.6. Beautiful Alternatives Without Microsoft Fonts

If you want to stay away from patents and proprietary fonts, the best way to go is with Bitstream Vera Sans 8pt, Nimbus Sans 8 or 9pt, or Luxi Sans 8 or 9pt (also known as Sans, simply) for desktop widgets, and bigger sizes for fluent text reading. You'll need Anti-Aliasing to blur the low quality of the hinting of these fonts.

Here are some screen shots about the usage of these fonts on KDE. You should pay attention on how the widgets text on this window are rendered.

Figure 9. Bitstream Vera 8pt with Anti-Aliasing

Figure 10. Luxi 8pt with Anti-Aliasing

Figure 11. Luxi 9pt with Anti-Aliasing

Figure 12. Nimbus 9pt with Anti-Aliasing

As you can see, the results aren't so good as Tahoma 8pt.

5. Producing Portable Documents

Yes, we know you had created rich documents, presentations, spreadsheets and web pages that looked great in your computer, but when opened in your friend's machine they looked completely unformated. So lets discuss here some good practices we found to avoid these annoying drawbacks.

5.1. Linux to Windows and vice-versa

If you need to exchange documents with Windows users, you should use Windows fonts. This is the general rule. So you should install the Microsoft Fonts package and take care to use only Arial, Times New Roman, Verdana, etc, on your docs.

The combination of these fonts with the cross-platform, high quality OpenOffice.org suite, gives you a truly productive teamwork tool.

5.2. Linux to Linux

The fonts available on modern Linux distributions, to produce good quality documents are the following:

Table 2. General Linux Free Fonts

Bitstream Charter
Bitstream Vera family
Century Schoolbook
Luxi family
Nimbus family
URW Palladio
URW Bookman
URW Chancery
URW Gothic

Using these fonts you'll be able to safely exchange and print documents between different modern Linux distributions.

There are other fonts available on your Linux system, but we not listed them here because they are low-quality (obsolete) bitmap fonts, to be used on the screen, and not for documents.

5.3. Any to Any with OpenOffice.org and Bitstream Vera Fonts

The title says it all. OpenOffice.org's all platform packages include the Bitstream Vera package. So if you'll take care to use only these fonts, your documents will open nicely in any other OpenOffice.org installation.

As a side note, OpenOffice.org excels in portability. In any platform, OOo looks and works the same, and it takes special care with your documents layout. It is simply a great tool.

5.4. A Very Small Guide of Style

To make your documents have a professional look, you should choose the correct font for the document purpose. Our current culture standardized that serif fonts (Times, etc) are the right choice for books and magazines. Now sans-serif fonts (Arial, Helvetica, Verdana) are gaining space and some may feel these fonts provide a more modern look, because of their lack of serifs. We have seen them being used in printed articles and commercial proposals.

For web pages, Arial and Helvetica or specially Verdana, are definitively the right choice.

For further more deep information, please refer to Section 7, by Donovan Rebbechi on typography, about cultural and social facts that influenced font designing evolution, and what are being produced today by designers.

6. Create RPMs of Your Fonts

Do not just throw .ttf files someplace on your system. It makes migrations more difficult, and makes a big mess in your computer. Package management software like RPM lets you easily install your fonts in an organized standard way, manage font upgrades, and make massive font distribution a piece of cake.

Here we'll provide templates and instructions for you to easily build RPM packages of your fonts. We'll accept contributions with instructions to build different types of packages.

6.1. Step 1: Prepare Your Environment to Build The Package

To build RPMs, you need a special structure of directories and some configurations on your environment. You should do everything as a regular user, in all steps. In fact, we recommend that you do not do this as root.

To create this directories, do this:

bash$ cd ~
bash$ mkdir -p src/rpm
bash$ cd src/rpm
bash$ cp -r /usr/src/rpm/* .
bash$ ls

Of course this is on a Red Hat system, but the important point is to have the following directories under src/rpm:

  • BUILD/

  • RPMS/noarch/

  • SRPMS/

Then, you'll have to create the .rpmmacros file in you home directory, with this single line content:

%_topdir        YOUR_HOME_DIR_HERE/src/rpm

And you should substitute YOUR_HOME_DIR_HERE with the absolute name of your $HOME directory.

6.2. Step 2: Prepare the Fonts Files to Package

Now you must think about a name for your font collection. To make things easy in this documentation, we'll use the name myfonts from now on. Then you must create a directory named ~/src/myfonts/myfonts (yes, myfonts two times) and put all your .ttf files right under it. So you'll have something like:

bash$ cd ~/src
bash$ find myfonts/myfonts/

6.3. Step 3: Create a .spec File With This Template

To build an RPM package you'll have to create a .spec file that provides instructions to the package builder on how to organize the files, package description, author, copyright, etc. We provide a template here that you can use to start your work. The template looks like this:

Example 1. The .spec file template

Name: myfonts     (1)
Summary: Collection of My Funny Fonts   (2)
Version: 1.0
Release: 1
License: GPL    (3)
Group: User Interface/X
Source: %{name}.tar.gz
BuildRoot: %{_tmppath}/build-root-%{name}
BuildArch: noarch
Requires: freetype
Packager: Avi Alkalay <avi@unix.sh>    (4)
Prefix: /usr/share/fonts
Url: http://myfonts.com/     (5)

%description    (6)
These are the fonts used in our marketing campaign, designed by our marketing agency specially for us.
The package includes the following fonts: Bodoni, Bodoni Black, Company Logo, Outline Company Logo, etc.


%setup -q -n %{name}


mkdir -p $RPM_BUILD_ROOT/%{prefix}
cp -r %{name}/ $RPM_BUILD_ROOT/%{prefix}



	ttmkfdir -d %{prefix}/%{name} \
		-o %{prefix}/%{name}/fonts.scale
	umask 133
	/usr/X11R6/bin/mkfontdir %{prefix}/%{name}
	/usr/sbin/chkfontpath -q -a %{prefix}/%{name}
	[ -x /usr/bin/fc-cache ] && /usr/bin/fc-cache
} &> /dev/null || :

	if [ "$1" = "0" ]; then
		cd %{prefix}/%{name}
		rm -f fonts.dir fonts.scale fonts.cache*
} &> /dev/null || :

if [ "$1" = "0" ]; then
  /usr/sbin/chkfontpath -q -r %{prefix}/%{name}
[ -x /usr/bin/fc-cache ] && /usr/bin/fc-cache

%changelog    (7)
* Thu Dec 14 2002 Avi Alkalay <avi@unix.sh> 1.0
- Tested
- Ready for deployment
* Thu Dec 10 2002 Avi Alkalay <avi@unix.sh> 0.9
- First version of the template


You must change the following items to meet your package characteristic's (leave everything else untouched):

Put the name of your package or font collection here.
Put a brief summary about your package here.
The usage license of your package here.
The name of the person responsible for this package here.
URL to get more info about this package or fonts here. Can be omitted.
A more detailed description about this fonts here.
The evolution history of this package here. Must follow this layout.

This file must be named as the name of the package. In our example, myfonts.spec. And you must put it under the main directory of the package. So in the end we'll have something like this:

bash$ cd ~/src
bash$ find myfonts

6.4. Step 4: Build It

We are almost ready to go. Next steps:

bash$ cd ~/src
bash$ tar -czvf myfonts.tar.gz myfonts
bash$ rpmbuild -ta myfonts.tar.gz

Done (after seeing a lot of messages about the building process). So we basically created a .tar.gz containing all our font files and myfonts.spec, and then we used rpmbuild on it, that will look for myfonts.spec inside the archive and follow its instructions.

You'll find the generated RPM under ~/src/rpm/RPMS/noarch/ directory, and this is the file you'll deploy and install. Under ~/src/rpm/SRPMS/ you'll find the source RPM file, which you should backup if you need to regenerate the deployable RPM again in the future. When you'll need it, you should do:

bash$ rpmbuild --rebuild myfonts-1.0-1.src.rpm

And the RPM file will be generated again.

7. Designer's Guide for Modern Good Looking Documents

Here, we discuss some typography basics. While this information is not essential, many font lovers will find it interesting.

7.1. Families of Typefaces

Typically, typefaces come in groups of a few variants. For example, most fonts come with a bold, italic, and bold-italic variant. Some fonts may also have small caps, and demibold variants. A group of fonts consisting of a font and its variants is called a family of typefaces. For example, the Garamond family consists of Garamond, Garamond-italic, Garamond-bold, Garamond bold-italic, Garamond demi-bold, and Garamond demi-bold-italic. The Adobe expert Garamond font also makes available Garamond small caps, and Garamond titling capitals.

7.2. Classifications of Typefaces

7.2.1. Fixed versus variable width

There are several classifications of typefaces. Firstly, there are fixed width fonts, and variable width fonts. The fixed width fonts look like typewriter text, because each character is the same width. This quality is desirable for something like a text editor or a computer console, but not desirable for the body text of a long document. The other class is variable width. Most of the fonts you will use are variable width, though fixed width can be useful also ( for example, all the example shell commands in this document are illustrated with a fixed width font ). The most well known fixed width font is Courier.

7.2.2. To serif or not to serif ?

Serifs are little hooks on the ends of characters. For example, the letter i in a font such as Times Roman has serifs protruding from the base of the i and the head of the i. Serif fonts are usually considered more readable than fonts without serifs. There are many different types of serif fonts.

Sans serif fonts do not have these little hooks, so they have a starker appearance. One usually does not write a long book using a sans serif font for the body text. There are sans serif fonts that are readable enough to be well suited to documents that are supposed to be browsed / skimmed ( web pages, catalogues, marketing brochures ). Another application that sans serif fonts have is as display fonts on computer screens, especially at small sizes. The lack of detail in the font can provide it with more clarity. For example, Microsoft touts Verdana as being readable at very small sizes on screen.

Notable sans serif fonts include Lucida Sans, MS Comic Sans, Verdana, Myriad, Avant Garde, Arial, Century Gothic and Helvetica. By the way, Helvetica is considered harmful by typographers. It is somewhat overused, and many books by typographers plead users to stay away from it.

7.2.3. The old and the new -- different types of Serif fonts Old Style

Old style fonts are based on very traditional styles dating as far back as the late 15th century. Old style fonts tend to be conservative in design, and very readable. They are well suited to writing long documents. The name ``old style'' refers to the style of the font, as opposed to the date of its design. There are classic old style fonts, such as Goudy Old Style, which were designed in the 20th century. The old style class of fonts has the following distinguishing features:

  • Well defined, shapely serifs.

  • Diagonal emphasis. Imagine drawing a font with a fountain pen, where lines 45 degrees anticlockwise from vertical are heavy and lines 45 degrees clockwise from vertical are light. Old style fonts often have this appearance.

  • Readability. Old style fonts are almost always very readable.

  • Subtlety and lack of contrast. The old style fonts have heavy lines and light lines but the contrast in weight is subtle, not stark.

Notable Old Style fonts include Garamond, Goudy Old Style, Jenson, and Caslon ( the latter is contentious -- some consider it transitional ) Moderns ( or didone )

The moderns are the opposite of old style fonts. These fonts typically have more character, and more attitude than their old style counterparts, and can be used to add character to a document rather than to typeset a long piece. However, nothing is black and white -- and there are some modern fonts such as computer modern and Monotype modern, and New Century Schoolbook which are very readable ( the contrast between heavy and light is softened to add readability ). They are based on the designs popular in the 19th century and later. Their distinguishing features include:

  • Lighter serifs, often just thin horizontal lines.

  • Vertical emphasis. Vertical lines are heavy, horizontal lines are light.

  • Many moderns have a stark contrast between light and heavy strokes.

  • Modern typefaces with high contrast between light and heavy strokes are not as readable as the old style fonts.

Bodoni is the most notable modern. Other moderns include computer modern, and Monotype modern (on which computer modern is based). Transitional

Transitional fonts fit somewhere in between moderns and old style fonts. Many of the transitional's have the same kind of readability as the old styles. However, they are based on slightly later design. While a move in the direction of the moderns may be visible in these fonts, they are still much more subtle than the moderns. Examples of transitional's include Times Roman, Utopia, Bulmer, and Baskerville. Of these, Times leans towards old style, while Bulmer looks very modern. Slab Serifs

The slab serif fonts are so named because they have thick, block like serifs, as opposed to the smooth hooks of the old styles or the thin lines of some of the moderns. Slab serif fonts tend to be sturdy looking and are generally quite readable. Many of the slab serifs have Egyptian names -- such as Nile, and Egyptienne ( though they are not really in any way Egyptian ). These fonts are great for producing readable text that may suffer some dilution in quality ( such as photocopied documents, and documents printed on newspaper ). These fonts tend to look fairly sturdy. The most notable slab serif fonts are Clarendon, Memphis and Egyptienne, as well as several typewriter fonts. Many of the slab serif fonts are fixed width. Conversely, most ( almost all ) fixed width fonts are slab serif.

7.2.4. The Sans Serif Revolution

Surprisingly, the rise of sans serif fonts is a fairly recent phenomenon. The first well known sans serif fonts were designed in the 19th early 20th century. The earlier designs include Futura, Grotesque and Gill Sans. These fonts represent respectively the ``geometric'', ``grotesque'' and ``humanist'' classes of sans serif fonts. Grotesque

The grotesques where so named because the public were initially somewhat shocked by their relatively stark design. Groteques are very bare in appearance due to the absence of serifs, and the simpler, cleaner designs. Because of their ``in your face'' appearance, grotesques are good for headlines. The more readable variations also work quite well for comic books, and marketing brochures, where the body text comes in small doses. Grotesques don't look as artsy as their geometric counterparts. Compared to the geometrics, they have more variation in weight, more strokes, they are squarer ( because they don't use such circular arcs ). They use a different upper case G and lower case a to the geometrics. While they are minimalistic but don't go to the same extreme as the brutally avant-garde geometrics.

Notable grotesques include the overused Helvetica, Grotesque, Arial, Franklin Gothic, and Univers. Geometric

The Futura font came with the manifesto: form follows function. The geometric class of fonts has a stark minimalistic appearance. Distinguishing features include a constant line thickness ( no weight ). This is particularly conspicuous in the bold variants of a font. Bold groteques and humanist fonts often show some notable variation in weight while this rarely happens with the geometric fonts. Also notable is the precise minimalism of these designs. The characters almost always are made up from straight horizontal and vertical lines, and arcs that are very circular ( to the point where they often look as though they were drawn with a compass ). The characters have a minimal number of strokes. This gives them a contemporary look in that they embrace the minimalistic philosophy that would later take the world of modern art by storm. A tell tale sign that a font is a geometric type is the upper case ``G'', which consists of a minimalistic combination of two strokes -- a long circular arc and a horizontal line. The other character that stands out is the lower case ``a'' -- which is again two simple strokes, a straight vertical line and a circle ( the other ``a'' character is more complex which is why it is not used ). Notable geometrics include Avant Garde, Futura, and Century Gothic. Humanist

As the name might suggest, humanist fonts were designed with a goal of being less mechanical in appearance. In many ways, they are more similar to the serif fonts than the geometrics and the grotesques. They are said to have a ``pen drawn'' look about them. They tend to have subtle variation in weight, especially observable in bold variants. The curve shapes are considerably less rigid than those of the geometrics. Many of them are distinguishable by the ``double story'' lower case g, which is the same shape as the g used in the old style serif fonts. The humanist typefaces are the easiest to use without producing an ugly document as they are relatively compatible with the old style fonts.

7.2.5. Compatible Typefaces

Grouping typefaces is not easy, so it pays to avoid using too many on the one page. A logical choice of two typefaces consists of a serif and a sans serif. Monotype's Typography 101 page provides a category-matchup. They conclude that the moderns and geometrics form good pairs, while the old styles and humanists also go together well. The transitionals are also paired with the humanists. The slab serifs are paired with the grotesques, and some variants of the slab serifs are also said to match the geometrics or humanists.

From reading this, one gets the impression that their philosophy is essentially to match the more conservative serifs with the more moderate sans serifs, and pair the wilder modern serifs with the avant garde looking ( pun unavoidable ) geometrics.

7.3. Ligatures, Small caps fonts and expert fonts

7.3.1. Ligatures

Properly spacing fonts brings with it all sorts of issues. For example, to properly typeset the letters ``fi'', the i should be very close to the f. The problem is that this causes the dot on the i to collide with the f, and the serif on the head of the i to collide with the horizontal stroke of the f. To deal with this problem, font collections include ligatures. For example, the ``fi'' ligature character is a single character that one can substitute for the two character string ``fi''. Most fonts contain fi and fl ligatures. Expert fonts discussed later often include extra ligatures, such as ffl, ffi, and a dotless i character.

7.3.2. Small caps fonts

Small caps fonts are fonts that have reduced size upper case letters in place of the lower case letters. These are useful for writing headings that require emphasis ( and they are often used in LaTeX ). Typically, when one writes a heading in small caps, they use a large cap for the beginning of each word, and small capitals for the rest of the word ( ``title case'' ). The advantage of this over using all caps is that you get something that is much more readable ( using all caps is a big typographic sin ).

7.3.3. Expert fonts

Expert fonts consist of several extras designed to supplement a typeface. These include things like ligatures, ornaments ( much like a mini-dingbats collection designed to go with the typeface ), small caps fonts, and swash capitals ( fancy, calligraphic letters ).

7.4. Font Metrics and Shapes

Font metrics define the spacing between variable width fonts. The metrics include information about the size of the font, and kerning information, which assigns kerning pairs -- pairs of characters that should be given different spacing. For example, the letters ``To'' would usually belong in a kerning pair, because correctly spaced ( or kerned ), the o should partly sit under the T. Typesetting programs such as LaTeX need to know information about kerning so that they can make decisions about where to break lines and pages. The same applies to WYSIWYG publishing programs.

The other important component of a font is the outline, or shape. The components of the fonts shape ( a stroke, an accent, etc ) are called ``glyphs''.

8. Font Technologies

This section contains both non-usefull (nowadays) and usefull information about how font technology evolved, caracteristics of some of them, and the market dynamics that choosed the most widelly used ones.

Nowadays you probably won't find anymore Type 1, Type 3 and Type 42 fonts.

The bottom line is: today the de-facto font standard is True Type, Linux has strong support to it with the FreeType library, and sometimes you may need some bitmap fonts for screen, but never for printing.

8.1. Bitmap Fonts

A bitmap is a matrix of dots. Bitmap fonts are represented in precisely this way -- as matrices of dots. Because of this, they are device dependent -- they are only useful at a particular resolution. A 75 DPI screen bitmap font is still 75 DPI on your 1200 DPI printer.

There are two types of bitmap fonts -- bitmap printer fonts, such as the pk fonts generated by dvips, and bitmap screen fonts, used by X and the console. The bitmap screen fonts typically have a bdf or pcf extension. Bitmap screen fonts are most useful for terminal windows, consoles and text editors, where the lack of scalability and the fact that they are unprintable is not an issue.

8.2. TrueType Fonts

TrueType fonts were developed by Apple. They made the format available to Microsoft, and successfully challenged Adobe's grip on the font market. True type fonts store the metric and shape information in a single file ( usually one with a ttf extension ). Recently, font servers have been developed that make TrueType available to X. And PostScript and ghostscript have supported TrueType fonts for some time. Because of this, TrueType fonts are becoming more popular on linux.

8.3. Type 1 Fonts

The Type 1 font standard was devised by Adobe, and Type 1 fonts are supported by Adobe's PostScript standard. Because of this, they are also well supported under linux. They are supported by X and ghostscript. Postscript fonts have traditionally been the choice of font for anything on UNIX that involves printing.

Typically, a UNIX Type 1 font is distributed as an afm (adobe font metric) file, and an outline file, which is usually a pfb ( printer font binary ) or pfa (printer font ascii) file. The outline file contains all the glyphs, while the metric file contains the metrics.

Type 1 fonts for other platforms may be distributed in different formats. For example, PostScript fonts for windows often use a different format ( pfm ) for the metric file.

8.4. Type3 Fonts

These fonts are distributed in a similar manner to Type 1 files -- in groups of afm font metrics, and pfa files. While they are supported by the PostScript standard, they are not supported by X, and hence have limited use.

8.5. Type 42 Fonts

Type42 fonts are actually just TrueType fonts with headers that enable them to be rendered by a PostScript interpreter. Most applications, such as ghostscript and SAMBA handle these fonts transparently. However, if you have a PostScript printer, it may be necessary to explicitly create Type42 font files.

8.6. Type 1 vs TrueType -- a comparison

Despite the historical feuding between the proponents to Type 1 and TrueType fonts, both have a lot in common. Both are scalable outline fonts. Type 1 fonts use cubic as opposed to quadratic curves for the glyphs. This is in theory at least a slight advantage since they include all the curves available to TrueType fonts. In practice, it makes very little difference.

TrueType fonts have the apparent advantage that their support for hinting is better ( Type 1 fonts do have hinting functionality, but it is not as extensive as that of TrueType fonts ). However, this is only an issue on low resolution devices, such as screens ( the improved hinting makes no discernable difference on a 600dpi printer, even at small point sizes. ) The other point that makes this apparent advantage somewhat questionable is the fact that well hinted TrueType fonts are rare. This is because software packages that support hinting functionality are out of the budget of most small time designers. Only a few major foundries, such as Monotype make well hinted fonts available.

In conclusion, the main differences between TrueType and Type 1 fonts are in availability and application support. The widespread availability of TrueType fonts for Windows has resulted in webpages designed with the assumption that certain TrueType fonts are available. Also, many users have large numbers of TrueType fonts because they ship with the users Windows applications. However, on Linux, most applications support Type 1 fonts but do not have the same level of support for TrueType. Moreover, most major font foundries still ship most of their fonts in Type 1 format. For example, Adobe ships very few TrueType fonts. My recommendation to users is to use whatever works for your application, and try to avoid converting from one format to another where possible ( because the format conversion is not without loss ).

9. Getting Fonts For Linux

9.1. True Type

9.1.1. Commercial Software

True type fonts are very easy to come by, and large amounts of them are typically included in packages like Microsoft Word and Word Perfect. Getting Word Perfect is an easy way to get an enormous amount of fonts (and if you're really cheap, you could buy a legacy version of Word Perfect for windows. The fonts on the CD are readable.)

9.1.2. Luc's Webpage

Luc Devroye's webpage has links to several sites with free fonts available. What's unique about these fonts is that a lot of them are really free, they are not ``warez fonts''.

9.1.3. Web sites with TrueType fonts

There are several web sites offering freely available downloadable fonts. For example, the freeware connection has links to a number of archives.

9.1.4. Foundries

Several foundries sell TrueType fonts. However, most of them are quite expensive, and for the same money, you'd be better of with Type 1 fonts. I'll discuss these more in the Type 1 fonts section. The one place that does do sell TrueType fonts at low prices is buyfonts. Please read the section on ethics before you buy cheap fonts.

9.2. Type 1 Fonts and Metafont

9.2.1. Dealing With Mac and Windows Formats

Many foundries ship fonts with Windows and Mac users in mind. This can sometimes pose a problem. Typically, the ``Windows fonts'' are fairly easy to handle, because they are packed in a zip file. The only work to be done is converting the pfm file to and afm file ( using pfm2afm).

Macintosh fonts are more problematic, because they are typically made available in .sit.bin format -- stuffit archives. Unfortunately, there is no tool for Linux that can unpack stuffit archives created with the newer version of stuffit. The only way to do it is run Executor ( Mac emulator ), or try running stuffit in dosemu or Wine. Once the sit.bin file is unpacked, the Macintosh files can be converted using t1unmac which comes with the t1utils package.

Unfortunately, some vendors only ship Type 1 fonts in Macintosh format (stuffit archives). However, according to font expert Luc Devroye, all major foundries make Type 1 fonts available for Mac and Windows.

9.2.2. Free Stuff

ctan have a number of good fonts, many of which are free. Most of these are in Metafont format, though some are also Type 1 fonts. Also, see Bluesky who have made available Type 1 versions of the computer modern fonts. ( The computer modern fonts are of excellent quality -- to purchase anything of comparable quality and completeness will cost you around $500-. They are comparable to the premium fonts.)

Luc Devroye's webpage has links to several sites with free fonts available. What's unique about these fonts is that a lot of them are really free, they are not ``warez fonts''.

URW have released the standard PostScript fonts resident in most printers to the public domain. These fonts are quite good.

The Walnut Creek Archive has several freely available fonts, and shareware fonts. Some of these are obvious ripoffs ( and not very good ones ). If a font doesn't come with some kind of license, chances are it's a ripoff. Also Winsite have several Type 1 fonts ( in the fonts/atm subsection of their windows 3.x software ). Unfortunately, several of these have afm files which have mistakes and are missing all kerning pairs ( you can fix the afms by editing the "FontName" section of the afm files. It should match the fontname given in the font shape file. Of course, adding kerning pairs is a topic beyond the scope of this document.)

Luc Devroye's webpage includes several free fonts he designed, as well as a lot of links, and fascinating discussion on the topic of typography. This site is a ``must-visit''. There are also several links to many foundries.

9.2.3. Commercial Fonts Value vs Premium: Why Should I buy Premium Fonts ?

So you're wondering -- why do some fonts cost a lot and others are cheap? These fonts are the ``standard PostScript fonts'' resident in most PostScript printers. Also the famous Why should I buy the more expensive ones? My take on it is that for a casual user, the value fonts (such as those on the Bitstream CD) are just fine. However, if you're using the fonts for ``real work'', or you're just a hard core font junkie, then the better quality fonts are a must-have -- and most of the quality fonts are either free (for example, Computer Modern), or they are upmarket commercial fonts.

The advantage of the cheaper fonts is self evident -- they are cheaper. The quality fonts also have their advantages though.

  • Ethical issues: The cheaper fonts are almost always ripoffs. Type design takes a long time and and experienced designer. Fonts that are sold for less than $1-per font were almost certainly not designed by the vendor. CDs with insane quantities of fonts on the are almost always ripoffs (the possible exceptions being collections from major foundries that cost thousands of dollars). Usually, the ripoffs lack the quality of fonts from respectable founries.

  • Completeness: The higher quality fonts (notably from Adobe) come in several variants, with some nice supplements to provide the user with a more complete font family. There are often bold, italic, and demibold variants, swash capitals, small caps, old style figures, and extra ligatures to supplement the font. More recently, Adobe have a multiple master technology which gives the user ( almost ) infinite variation within one font family.

  • Quality: A lot of the freely available fonts or the cheap ripoffs lack fairly essential features such as kerning pairs and decent ligatures. They are basically cheap copies. In contrast, reputable designers take a lot of trouble to study the original design, and rework it to the best of their ability.

  • Authenticity: The person who designed Adobe Garamond (Robert Slimbach) actually studied the original designs of Claude Garamond. In fact reputable foundries always carefully research their designs, rather than just swiping something off the net, and modifying it with Fontographer. Value

  • An excellent place to go for a CD packed with several Type 1 fonts of reasonable quality is Bitstream. Bitstreams more noted products include their 250 font CD and their 500 font CD (the latter goes for $50- at the time of writing). These are fairly good quality fonts, and are a fairly good starting point for the casual user. The fonts used in Corel's products are (mostly) licensed from bitstream.

  • Matchfonts offer more modestly priced fonts -- they are distributed in ``packs'' of about 8 fonts for $30. This includes some nice calligraphic fonts. All fonts seem to be offered in a usable format (the windows ATM fonts come in a .exe file. Don't let the extension fool you -- it's just a zip archive). These are not ripoffs as far as I can tell.

  • EFF sell TrueType fonts for $2- per hit. They also have ``professional range'' PostScript and TrueType fonts for $16- per typeface. Premium

  • Adobe have several high quality, fonts available at Adobe's type website. Some of these are expensive, but they have several more affordable bundles -- see Adobe Type Collections. Adobe have some of the most complete font families on the market, for example, Garamond, Caslon, and their multiple masters (Myriad and Minion, used on their website are among the nicer of their multiple masters.)

  • Berthold Types Limited is a major foundry, who offer several quality fonts. Some of them are resold through Adobe, all are directly available from Berthold. Same price ballpark as Adobe.

  • ITC develop several quality fonts (including some of the ones Corel ships with their products) at http://www.itcfonts.com. They offer family packages for about $100-180 US. Their fonts, come in both Type 1 and TrueType format. It's better to choose the ``Windows'' package, because Mac formats are difficult to handle on Linux.

  • Linotype are a well known foundry who offer fonts by legendary designers including Herman Zapf. (yep, the guy ``Zapf Chancery'' is named after. He also designed Palatino.)

  • Monotype develop most of the fonts shipped with Microsoft products. One of the older and well respected foundries.

  • Tiro Typeworks sell good quality, if somewhat expensive typefaces. Their typefaces are very complete, for example, they include complete sets of ligatures, and smallcaps, titling fonts, etc. UNIX is listed as one of the OS options -- which is a welcome surprise after seeing the words ``Windows or Mac'' too many times. More Links

For links to a bunch of other foundries, see Luc Devroye's page

10. Useful Font Software for Linux

There are several font packages for Linux. Many of them are obsolete, or you really will never have to use them.

11. Ethics and Licensing Issues Related to Type

Font licensing is a very contentious issue. While it is true that there is a wealth of freely available fonts, the chances are that the fonts are ``ripoffs'' in some sense, unless they come with a license indicating otherwise. The issue is made more confusing by intellectual property laws regarding typefaces. Basically, in the USA, font files are protected by copyright, but font renderings are not. In other words, it's illegal to redistribute fonts, but it's perfectly legal to ``reverse-engineer'' them by printing them out on graph paper and designing the curves to match the printout. Reverse engineered fonts are typically cheap and freely available, but of poor quality. These fonts, as well as pirated fonts are often distributed on very cheap CDs containing huge amounts of fonts. So it's not always easy to tell if a font is reverse engineered, or simply pirated. This situation creates an enormous headache for anyone hoping to package free fonts for Linux.

Perhaps one of the most offensive things about the nature of font piracy is that it artificially debases the value of the work that type designers do. Pirated fonts invariably are bundled en masse onto these one zillion font CDs, with no due credit given to the original designers. In contrast, what is commendable about several legitimate font foundries is that they credit their designers.

There are many differing opinions on this issue. See typeright for an explanation of the case in favour of intellectual property rights. Also, see Southern Software, Inc for another opinion -- but don't buy any of their fonts! Their Type 1 fonts (poorly reverse-engineered Adobe fonts) do not have AFMs, and are thus unusable.

The comp.fonts FAQ also discusses the issues of fonts and intellectual property, as does Luc Devroye's homepage. These references are somewhat less extreme in their views.

12. References

12.1. Font Information

12.2. Postscript and Printing Information

13. Glossary

A. Enabling Bytecode Interpreter in FreeType

"Hinting" is a TrueType specific feature, that is generally considered to be a useful technique that improves the appearance of TrueType fonts. Unfortunately, there are some licensing and patent issues involved with this, and it is disabled by default in the freetype sources! And also quite likely that if you are using vendor supplied binaries, it is disabled there as well.

To enable this feature, the sources need to be rebuilt. Look for include/freetype/config/ftoption.h in the freetype source tree, and then search for:


And very simply, make this small change:


Red Hat users can rebuild the src.rpm by toggling one setting at the top, and accomplish the same thing (other distributions RPMs use similar methods):

%define without_bytecode_interpreter    1

And change to:

%define without_bytecode_interpreter    0

Other vendors may have a similar, easy-to-use mechanism.

Then rebuild and install the finished binaries. Be sure to restart X as well since the freetype code is already loaded into memory by X.

B. We Need Your Help

Yes, we always need help, so please send an e-mail to Avi Alkalay with what you have to contribute. These are some things:

C. About this Document

Copyright 2004, Avi Alkalay, Donovan Rebbechi, Hal Burgiss.

This document is a unification of the two former font HOWTOs available at TLDP.org: Donovan Rebbechi's Font-HOWTO, and Hal Burgiss' Font Deuglification HOWTO. Appendix A was written by Hal Burgiss. Sections starting from Section 7 by Donovan Rebbechi. Everything else by Avi Alkalay. Many things changed on Linux' font infrastructure since the former HOWTOs were published, so all obsolete parts were removed.

This document must be distributed under the terms of GNU Free Documentation License. Please translate, adapt, improve, redistrubute using the original XML DocBook source right bellow. Let me know if you want me to put a link to your translation/adaptation/improvement here.

This document is published in the following locations: