                              Wine Documentation                               
Prev                      Chapter 4. Configuring Wine                      Next
-------------------------------------------------------------------------------

4.8. Dealing with Fonts

4.8.1. Fonts

Written by Alex Korobka <alex@aikea.ams.sunysb.edu>

(Extracted from wine/documentation/fonts)

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              

4.8.1.1. How To Convert Windows Fonts

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

 1. Extract bitmap fonts with fnt2bdf.
   
 2. Convert .bdf files produced by Step 1 into .pcf files with bdftopcf.
   
 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.
   
 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.
    You may also or instead have to restart the font server (using e.g. /etc/
    init.d/xfs restart under RedHat 7.1)
   
 5. Edit the ~/.wine/config 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 :-)

4.8.1.2. How To Add Font Aliases To ~/.wine/config

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:
   
    +-----------------------------------------------------+
    |X font             |...is masked to...|Extracted name|
    |-------------------+------------------+--------------|
    |--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. The 
    xfontsel application 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.

4.8.1.3. How To Manage Cached Font Metrics

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

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.[display]
with the new information. This process can take a while.

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

4.8.1.5. "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.

4.8.2. Setting up a TrueType Font Server

written by ???

(Extracted from wine/documentation/ttfserver)

Follow these instructions to set up a TrueType font server on your system.

 1. Get freetype-1.0.full.tar.gz
   
 2. Read docs, unpack, configure and install
   
 3. Test the library, e.g. ftview 20 /dosc/win95/fonts/times
   
 4. Get xfsft-beta1e.linux-i586
   
 5. Install it and start it when booting, e.g. in an rc-script. The manpage for
    xfs applies.
   
 6. Follow the hints given by <williamc@dai.ed.ac.uk>
   
 7. I got xfsft from http://www.dcs.ed.ac.uk/home/jec/progindex.html. I have it
    running all the time. Here is /usr/X11R6/lib/X11/fs/config:
   
    clone-self = on
    use-syslog = off
    catalogue = /c/windows/fonts
    error-file = /usr/X11R6/lib/X11/fs/fs-errors
    default-point-size = 120
    default-resolutions = 75,75,100,100
              
   
    Obviously /c/windows/fonts is where my Windows fonts on my Win95 C: drive
    live; could be e.g. /mnt/dosC/windows/system for Win31.
   
    In /c/windows/fonts/fonts.scale I have:
   
    14
    arial.ttf -monotype-arial-medium-r-normal--0-0-0-0-p-0-iso8859-1
    arialbd.ttf -monotype-arial-bold-r-normal--0-0-0-0-p-0-iso8859-1
    arialbi.ttf -monotype-arial-bold-o-normal--0-0-0-0-p-0-iso8859-1
    ariali.ttf -monotype-arial-medium-o-normal--0-0-0-0-p-0-iso8859-1
    cour.ttf -monotype-courier-medium-r-normal--0-0-0-0-p-0-iso8859-1
    courbd.ttf -monotype-courier-bold-r-normal--0-0-0-0-p-0-iso8859-1
    courbi.ttf -monotype-courier-bold-o-normal--0-0-0-0-p-0-iso8859-1
    couri.ttf -monotype-courier-medium-o-normal--0-0-0-0-p-0-iso8859-1
    times.ttf -monotype-times-medium-r-normal--0-0-0-0-p-0-iso8859-1
    timesbd.ttf -monotype-times-bold-r-normal--0-0-0-0-p-0-iso8859-1
    timesbi.ttf -monotype-times-bold-i-normal--0-0-0-0-p-0-iso8859-1
    timesi.ttf -monotype-times-medium-i-normal--0-0-0-0-p-0-iso8859-1
    symbol.ttf -monotype-symbol-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
    wingding.ttf -microsoft-wingdings-medium-r-normal--0-0-0-0-p-0-microsoft-symbol
              
   
    In /c/windows/fonts/fonts.dir I have exactly the same.
   
    In /usr/X11R6/lib/X11/XF86Config I have
   
    FontPath "tcp/localhost:7100"
              
   
    in front of the other FontPath lines. That's it! As an interesting
    by-product of course, all those web pages which specify Arial come up in
    Arial in Netscape ...
   
 8. Shut down X and restart (and debug errors you did while setting up
    everything).
   
 9. Test with e.g xlsfont | grep arial
   
Hope this helps...

-------------------------------------------------------------------------------
Prev                                 Home                                  Next
Keyboard                              Up                       Printing in Wine
