Note:
=====
The fnt2bdf utility is included with Wine. It can be found in the tools 
directory.
Links to the other tools mentioned in this document can be found on wine
headquarters: http://www.winehq.com/tools.html


How To Convert Windows Fonts
============================

If you have access to a Windows installation you should use 
fnt2bdf utility (found in the 'tools)' directory to convert
bitmap fonts (VGASYS.FON, SSERIFE.FON, and SERIFE.FON) into 
the format that X Window System can recognize. 

Step 1. Extract bitmap fonts with 'fnt2bdf'.

Step 2. Convert .bdf files produced by the Step 1 into
	.pcf files with 'bdftopcf'.

Step 3. Copy .pcf files to the font server directory which
	is usually /usr/lib/X11/fonts/misc (you will probably 
        need superuser privileges). If you want to create a new
	font directory you will need to add it to the font path.

Step 4. Run 'mkfontdir' for the directory you copied fonts to.
	If you are already in X you should run 'xset fp rehash' 
        to make X server aware of the new fonts.

Step 5. Edit WINE.CONF file to remove aliases for the fonts 
	you've just installed.

WINE can get by without these fonts but 'the look and feel'
may be quite different. Also, some applications try to load
their custom fonts on the fly (WinWord 6.0) and since WINE does
not implement this yet it instead prints out something like;

STUB: AddFontResource( SOMEFILE.FON )

You can convert this file too. Note that .FON file may not hold 
any bitmap fonts and fnt2bdf will fail if this is the case. Also
note that although the above message will not disappear WINE will
work around the problem by using the font you extracted from the
SOMEFILE.FON. fnt2bdf will only work for Windows 3.1 fonts. It 
will not work for TrueType fonts.

What to do with TrueType fonts? There are several commercial
font tools that can convert them to the Type1 format but the 
quality of the resulting fonts is far from stellar. The other
way to use them is to get a font server capable of rendering 
TrueType (Caldera has one, there also is the free Xfstt in
Linux/X11/fonts on sunsite and mirrors, if you're on FreeBSD you
can use the port in /usr/ports/x11-servers/Xfstt.  And there is
xfsft which uses the freetype library, see documentation/ttfserver).

However, there is a possibility of the native TrueType support 
via FreeType renderer in the future (hint, hint :-)


How To Add Font Aliases To WINE.CONF
====================================

Many Windows applications assume that fonts included in original Windows 3.1 
distribution are always present. By default Wine creates a number of aliases
that map them on the existing X fonts:

Windows font		...is mapped to...	X font

"MS Sans Serif"			->		"-adobe-helvetica-"
"MS Serif"			->		"-bitstream-charter-"
"Times New Roman"		->		"-adobe-times-"
"Arial"				->		"-adobe-helvetica-"

There is no default alias for the "System" font. Also, no aliases are 
created for the fonts that applications install at runtime. The recommended 
way to deal with this problem is to convert the missing font (see above). 
If it proves impossible, like in the case with TrueType fonts, you can force 
the font mapper to choose a closely related X font by adding an alias to the 
[fonts] section. Make sure that the X font actually exists (with xfontsel
tool).

AliasN = [Windows font], [X font] <, optional "mask X font" flag>

Example:

Alias0 = System, --international-, subst
Alias1 = ...
...

Comments:
*   There must be no gaps in the sequence {0, ..., N} otherwise all aliases
    after the first gap won't be read.

*   Usually font mapper translates X font names into font names visible to
    Windows programs in the following fashion:

    X font		...will show up as...		Extracted name

    --international-...		->			"International"
    -adobe-helvetica-...	->			"Helvetica"
    -adobe-utopia-...		->			"Utopia"
    -misc-fixed-...		->			"Fixed"
    -...
    -sony-fixed-...		->			"Sony Fixed" 
    -...

    Note that since -misc-fixed- and -sony-fixed- are different fonts
    Wine modified the second extracted name to make sure Windows programs
    can distinguish them because only extracted names appear in the font 
    selection dialogs. 
 
*   "Masking" alias replaces the original extracted name so that in the 
    example case we will have the following mapping:

    --international-		->			"System"

    "Nonmasking" aliases are transparent to the user and they do not 
    replace extracted names.

    Wine discards an alias when it sees that the native X font is
    available.

*   If you do not have access to Windows fonts mentioned in the first 
    paragraph you should try to substitute the "System" font with 
    nonmasking alias. 'xfontsel' will show you the fonts available to
    X.

    Alias.. = System, ...bold font without serifs

Also, some Windows applications request fonts without specifying the 
typeface name of the font. Font table starts with Arial in most Windows 
installations, however X font table starts with whatever is the first line 
in the fonts.dir.  Therefore WINE uses the following entry to determine 
which font to check first.

Example:

Default = -adobe-times-

Comments:
    It is better to have a scalable font family (bolds and italics included) 
    as the default choice because mapper checks all available fonts until 
    requested height and other attributes match perfectly or the end of the 
    font table is reached. Typical X installations have scalable fonts in
    the ../fonts/Type1 and ../fonts/Speedo directories.


How To Manage Cached Font Metrics
=================================

WINE stores detailed information about available fonts in the ~/.wine/.cachedmetrics
file. You can copy it elsewhere and add this entry to the [fonts] section 
in your WINE.CONF:

FontMetrics = <file with metrics>

If WINE detects changes in the X font configuration it will rebuild font
metrics from scratch and then it will overwrite ~/.wine/.cachedmetrics with 
the new information. This process can take a while.


Too Small Or Too Large Fonts
============================

Windows programs may ask WINE to render a font with the height specified
in points. However, point-to-pixel ratio depends on the real physical size 
of your display (15", 17", etc...). X tries to provide an estimate of that 
but it can be quite different from the actual size. You can change this
ratio by adding the following entry to the [fonts] section:

Resolution = <integer value>

In general, higher numbers give you larger fonts. Try to experiment with
values in the 60 - 120 range. 96 is a good starting point.


"FONT_Init: failed to load ..." Messages On Startup
===================================================

The most likely cause is a broken fonts.dir file in one of your font
directories. You need to rerun 'mkfontdir' to rebuild this file. Read
its manpage for more information. If you can't run mkfontdir on this machine
as you are not root, use "xset -fp xxx" to remove the broken font path.
