|   <sect1 id="config-fonts-main"> | 
 |     <title>Dealing with Fonts</title> | 
 |  | 
 |     <sect2 id="config-windows-fonts"> | 
 |       <title>Fonts</title> | 
 |  | 
 |       <para> | 
 |         Written by &name-alex-korobka; <email>&email-alex-korobka;</email> | 
 |       </para> | 
 |       <para> | 
 |         (Extracted from <filename>wine/documentation/fonts</filename>) | 
 |       </para> | 
 |  | 
 |       <para> | 
 |         <note> | 
 |           <para> | 
 |             The <command>fnt2bdf</command> utility is included with | 
 |             Wine. It can be found in the <filename>tools</filename> | 
 |             directory. Links to the other tools mentioned in this | 
 |             document can be found on wine headquarters: | 
 |             <ulink url="http://www.winehq.com/development/">http://www.winehq.com/development/</ulink> | 
 |           </para> | 
 |         </note> | 
 |       </para> | 
 |  | 
 |       <sect3> | 
 |         <title>How To Convert Windows Fonts</title> | 
 |         <para> | 
 |           If you have access to a Windows installation you should use the | 
 |           <command>fnt2bdf</command> utility (found in the | 
 |           <filename>tools</filename> directory) to convert bitmap | 
 |           fonts (<filename>VGASYS.FON</filename>, | 
 |           <filename>SSERIFE.FON</filename>, and | 
 |           <filename>SERIFE.FON</filename>) into the format that the X | 
 |           Window System can recognize. | 
 |         </para> | 
 |  | 
 |         <orderedlist> | 
 |           <listitem> | 
 |             <para> | 
 |               Extract bitmap fonts with <command>fnt2bdf</command>. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               Convert <filename>.bdf</filename> files produced by Step | 
 |               1 into <filename>.pcf</filename> files with | 
 |               <command>bdftopcf</command>. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               Copy <filename>.pcf</filename> files to the font server | 
 |               directory which is usually | 
 |               <filename>/usr/lib/X11/fonts/misc</filename> (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. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               Run <command>mkfontdir</command> for the directory you | 
 |               copied fonts to. If you are already in X you should run | 
 |               <command>xset fp rehash</command> to make X server aware | 
 |               of the new fonts. You may also or instead have to restart | 
 |               the font server (using e.g. | 
 |               <command>/etc/init.d/xfs restart</command> | 
 |               under Red Hat 7.1) | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               Edit the <filename>~/.wine/config</filename> file to remove | 
 |               aliases for the fonts you've just installed. | 
 |             </para> | 
 |           </listitem> | 
 |         </orderedlist> | 
 |         <para> | 
 |           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; | 
 |         </para> | 
 |         <screen> | 
 | STUB: AddFontResource( SOMEFILE.FON ) | 
 |         </screen> | 
 |         <para> | 
 |           You can convert this file too. Note that | 
 |           <filename>.FON</filename> file may not hold  any bitmap | 
 |           fonts and <command>fnt2bdf</command> 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 | 
 |           <filename>SOMEFILE.FON</filename>. | 
 |           <command>fnt2bdf</command> will only work for Windows 3.1 | 
 |           fonts. It  will not work for TrueType fonts. | 
 |         </para> | 
 |         <para> | 
 |           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 | 
 |           <command>xfstt</command> in | 
 |           <filename>Linux/X11/fonts</filename> on sunsite and mirrors, | 
 |           if you're on FreeBSD you can use the port in | 
 |           <filename>/usr/ports/x11-servers/Xfstt</filename>.  And | 
 |           there is <command>xfsft</command> which uses the freetype | 
 |           library, see <link linkend="ttfont-server">freetype</link> | 
 | 	  description). | 
 |         </para> | 
 |         <para> | 
 |           However, there is a possibility of the native TrueType | 
 |           support via FreeType renderer in the future (hint, hint :-) | 
 |         </para> | 
 |       </sect3> | 
 |  | 
 |       <sect3> | 
 |         <title>How To Add Font Aliases To <filename>~/.wine/config</filename></title> | 
 |         <para> | 
 |           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: | 
 |         </para> | 
 |  | 
 |         <informaltable> | 
 |           <tgroup cols="3"> | 
 |             <thead> | 
 |               <row> | 
 |                 <entry>Windows font</entry> | 
 |                 <entry>...is mapped to...</entry> | 
 |                 <entry>X font</entry> | 
 |               </row> | 
 |             </thead> | 
 |             <tbody> | 
 |               <row> | 
 |                 <entry>"MS Sans Serif"</entry> | 
 |                 <entry align="center">-></entry> | 
 |                 <entry>"-adobe-helvetica-"</entry> | 
 |               </row> | 
 |               <row> | 
 |                 <entry>"MS Serif"</entry> | 
 |                 <entry align="center">-></entry> | 
 |                 <entry>"-bitstream-charter-"</entry> | 
 |               </row> | 
 |               <row> | 
 |                 <entry>"Times New Roman"</entry> | 
 |                 <entry align="center">-></entry> | 
 |                 <entry>"-adobe-times-"</entry> | 
 |               </row> | 
 |               <row> | 
 |                 <entry>"Arial"</entry> | 
 |                 <entry align="center">-></entry> | 
 |                 <entry>"-adobe-helvetica-"</entry> | 
 |               </row> | 
 |             </tbody> | 
 |           </tgroup> | 
 |         </informaltable> | 
 |  | 
 |         <para> | 
 |           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 <command>xfontsel</command> | 
 |           tool). | 
 |         </para> | 
 |         <screen> | 
 | AliasN = [Windows font], [X font] <, optional "mask X font" flag> | 
 |         </screen> | 
 |         <para> | 
 |           Example: | 
 |         </para> | 
 |         <screen> | 
 | Alias0 = System, --international-, subst | 
 | Alias1 = ... | 
 | ... | 
 |         </screen> | 
 |         <para> | 
 |           Comments: | 
 |         </para> | 
 |         <itemizedlist> | 
 |           <listitem> | 
 |             <para> | 
 |               There must be no gaps in the sequence <literal>{0, ..., | 
 |                 N}</literal> otherwise all aliases after the first gap | 
 |               won't be read. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               Usually font mapper translates X font names into font | 
 |               names visible to Windows programs in the following | 
 |               fashion: | 
 |             </para> | 
 |  | 
 |             <informaltable> | 
 |               <tgroup cols="3"> | 
 |                 <thead> | 
 |                   <row> | 
 |                     <entry>X font</entry> | 
 |                     <entry>...will show up as...</entry> | 
 |                     <entry>Extracted name</entry> | 
 |                   </row> | 
 |                 </thead> | 
 |                 <tbody> | 
 |                   <row> | 
 |                     <entry>--international-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"International"</entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-adobe-helvetica-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"Helvetica"</entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-adobe-utopia-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"Utopia"</entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-misc-fixed-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"Fixed"</entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry></entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-sony-fixed-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"Sony Fixed"</entry> | 
 |                   </row> | 
 |                   <row> | 
 |                     <entry>-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry></entry> | 
 |                   </row> | 
 |                 </tbody> | 
 |               </tgroup> | 
 |             </informaltable> | 
 |  | 
 |             <para> | 
 |               Note that since <literal>-misc-fixed-</literal> and | 
 |               <literal>-sony-fixed-</literal> 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. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               "Masking" alias replaces the original extracted name so | 
 |               that in the  example case we will have the following | 
 |               mapping: | 
 |             </para> | 
 |             <informaltable> | 
 |               <tgroup cols="3"> | 
 |                 <thead> | 
 |                   <row> | 
 |                     <entry>X font</entry> | 
 |                     <entry>...is masked to...</entry> | 
 |                     <entry>Extracted name</entry> | 
 |                   </row> | 
 |                 </thead> | 
 |                 <tbody> | 
 |                   <row> | 
 |                     <entry>--international-...</entry> | 
 |                     <entry align="center">-></entry> | 
 |                     <entry>"System"</entry> | 
 |                   </row> | 
 |                 </tbody> | 
 |               </tgroup> | 
 |             </informaltable> | 
 |             <para> | 
 |               "Nonmasking" aliases are transparent to the user and | 
 |               they do not replace extracted names. | 
 |             </para> | 
 |             <para> | 
 |               Wine discards an alias when it sees that the native X | 
 |               font is available. | 
 |             </para> | 
 |           </listitem> | 
 |           <listitem> | 
 |             <para> | 
 |               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 | 
 |               <command>xfontsel</command> application will show you | 
 |               the fonts available to X. | 
 |             </para> | 
 |             <screen> | 
 | Alias.. = System, ...bold font without serifs | 
 |             </screen> | 
 |           </listitem> | 
 |         </itemizedlist> | 
 |         <para> | 
 |           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 | 
 |           <filename>fonts.dir</filename>.  Therefore Wine uses the | 
 |           following entry to determine  which font to check first. | 
 |         </para> | 
 |         <para> | 
 |           Example: | 
 |         </para> | 
 |         <screen> | 
 | Default = -adobe-times- | 
 |         </screen> | 
 |         <para> | 
 |           Comments: | 
 |         </para> | 
 |         <para> | 
 |           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 | 
 |           <filename>../fonts/Type1</filename> and | 
 |           <filename>../fonts/Speedo</filename> directories. | 
 |         </para> | 
 |       </sect3> | 
 |  | 
 |       <sect3> | 
 |         <title>How To Manage Cached Font Metrics</title> | 
 |         <para> | 
 |           Wine stores detailed information about available fonts in | 
 |           the <filename>~/.wine/cachedmetrics.[display]</filename> file. You | 
 |           can copy it elsewhere and add this entry to the [fonts] | 
 |           section  in your <filename>~/.wine/config</filename>: | 
 |         </para> | 
 |         <screen> | 
 | FontMetrics = <file with metrics> | 
 |         </screen> | 
 |         <para> | 
 |           If Wine detects changes in the X font configuration it will | 
 |           rebuild font metrics from scratch and then it will overwrite | 
 |           <filename>~/.wine/cachedmetrics.[display]</filename> with  the new | 
 |           information. This process can take a while. | 
 |         </para> | 
 |       </sect3> | 
 |  | 
 |       <sect3> | 
 |         <title>Too Small Or Too Large Fonts</title> | 
 |         <para> | 
 |           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: | 
 |         </para> | 
 |         <screen> | 
 | Resolution = <integer value> | 
 |         </screen> | 
 |         <para> | 
 |           In general, higher numbers give you larger fonts. Try to | 
 |           experiment with values in the 60 - 120 range. 96 is a good | 
 |           starting point. | 
 |         </para> | 
 |       </sect3> | 
 |  | 
 |       <sect3> | 
 |         <title>"FONT_Init: failed to load ..." Messages On Startup</title> | 
 |         <para> | 
 |           The most likely cause is a broken | 
 |           <filename>fonts.dir</filename> file in one of your font | 
 |           directories. You need to rerun <command>mkfontdir</command> | 
 |           to rebuild this file. Read its manpage for more information. | 
 |           If you can't run <command>mkfontdir</command> on this | 
 |           machine as you are not root, use <command>xset -fp | 
 |             xxx</command> to remove the broken font path. | 
 |         </para> | 
 |       </sect3> | 
 |     </sect2> | 
 |  | 
 |     <sect2 id="ttfont-server"> | 
 |     <title>Setting up a TrueType Font Server</title> | 
 |       <para> | 
 |         written by ??? | 
 |       </para> | 
 |       <para> | 
 |         (Extracted from <filename>wine/documentation/ttfserver</filename>) | 
 |       </para> | 
 |  | 
 |       <para> | 
 |         Follow these instructions to set up a TrueType font server on your system. | 
 |       </para> | 
 |  | 
 |       <orderedlist> | 
 |         <listitem> | 
 |           <para> | 
 |             Get a freetype source archive (<filename>freetype-X.Y.tar.gz</filename> ?). | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Read docs, unpack, configure and install | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Test the library, e.g. <command>ftview 20 /dosc/win95/fonts/times</command> | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Get <filename>xfsft-beta1e.linux-i586</filename> | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Install it and start it when booting, e.g. in an | 
 |             rc-script.  The manpage for <command>xfs</command> | 
 |             applies. | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Follow the hints given by <email>williamc@dai.ed.ac.uk</email> | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             I got <command>xfsft</command> from | 
 |             <ulink url="http://www.dcs.ed.ac.uk/home/jec/progindex.html">http://www.dcs.ed.ac.uk/home/jec/progindex.html</ulink>. | 
 |             I have it running all the time.  Here is | 
 |             <filename>/usr/X11R6/lib/X11/fs/config</filename>: | 
 |           </para> | 
 |           <programlisting> | 
 | 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 | 
 |           </programlisting> | 
 |           <para> | 
 |             Obviously <filename>/c/windows/fonts</filename> is where | 
 |             my Windows fonts on my Win95 <medialabel>C:</medialabel> | 
 |             drive live; could be e.g. | 
 |             <filename>/mnt/dosC/windows/system</filename> for Win31. | 
 |           </para> | 
 |           <para> | 
 |             In <filename>/c/windows/fonts/fonts.scale</filename> I | 
 |             have: | 
 |           </para> | 
 |           <programlisting> | 
 | 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 | 
 |           </programlisting> | 
 |           <para> | 
 |             In <filename>/c/windows/fonts/fonts.dir</filename> I have | 
 |             exactly the same. | 
 |           </para> | 
 |           <para> | 
 |             In <filename>/usr/X11R6/lib/X11/XF86Config</filename> I have | 
 |           </para> | 
 |           <programlisting> | 
 | FontPath "tcp/localhost:7100" | 
 |           </programlisting> | 
 |           <para> | 
 |             in front of the other <literal>FontPath</literal> lines. | 
 |             That's it!  As an interesting by-product of course, all | 
 |             those web pages which specify Arial come up in Arial in | 
 |             Netscape ... | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Shut down X and restart (and debug errors you did while | 
 |             setting up everything). | 
 |           </para> | 
 |         </listitem> | 
 |         <listitem> | 
 |           <para> | 
 |             Test with e.g. <command>xlsfont | grep arial</command> | 
 |           </para> | 
 |         </listitem> | 
 |       </orderedlist> | 
 |  | 
 |       <para> | 
 |         Hope this helps... | 
 |     </para> | 
 |   </sect2> | 
 |  | 
 | </sect1> | 
 |  | 
 | <!-- Keep this comment at the end of the file | 
 | Local variables: | 
 | mode: sgml | 
 | sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "") | 
 | End: | 
 | --> |