
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.
