Dealing with FontsFonts
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.org/development/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.
Extract bitmap fonts with fnt2bdf.
Convert .bdf files produced by Step
1 into .pcf files with
bdftopcf.
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.
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 Red Hat 7.1)
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 freetype
description).
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/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.
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.
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.
Setting up a TrueType Font Server
Follow these instructions to set up a TrueType font server on your system.
Get a freetype source archive (freetype-X.Y.tar.gz ?).
Read docs, unpack, configure and install
Test the library, e.g. ftview 20 /dosc/win95/fonts/times
Get xfsft-beta1e.linux-i586
Install it and start it when booting, e.g. in an
rc-script. The manpage for xfs
applies.
Follow the hints given by williamc@dai.ed.ac.uk
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 ...
Shut down X and restart (and debug errors you did while
setting up everything).
Test with e.g. xlsfont | grep arial