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

If you have access to 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'
will 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.

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).

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


WINE.CONF And Font Mapper
=========================

Many Windows applications assume that fonts included in original Windows 3.1 
distribution (Arial, Times New Roman, MS Sans Serif, etc.) are always present. 
In order to make font mapper choose a closely related font you can add aliases
to the [fonts] section.

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

Example:

Alias0 = System, --international-, mask
Alias1 = Arial, -adobe-helvetica-
Alias2 = Times New Roman, -adobe-times-
...

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			Converted name

    -adobe-helvetica-...	"Helvetica"
    -adobe-utopia-...		"Utopia"
    -misc-fixed-...		"Fixed"
    -...
    -sony-fixed-...		"Sony Fixed"  (already have "Fixed")
    -...

    Only converted names appear in the font selection dialogs. However, 
    if there is an alias with the "mask" flag set converted name will be 
    replaced by this alias.

    --international-		"System"

    Nonmasking aliases are translated only when program asks for a font
    with the name that matches an alias.

    If you do not have an access to Windows fonts mentioned in the first 
    paragraph you should try to substitute them with similar X fonts.

    Alias.. = System, ...bold font without serifs
    Alias.. = MS Sans Serif, ...helvetica-like font

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.


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 the 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.

