ttf2ufm_convert - convenience font conversion script
ttf2ufm_convert [config-file]
`Convert' is the master conversion script provided with
ttf2ufm. When installed into a public directory it's named
`ttf2ufm_convert' to avoid name collisions with the other
programs.
If the configuration file is not specified as an argument then the
file `"convert.cfg"' in the current
directory is used. This file contains a set of configuration variables. The
distribution contains a sample file file
`"convert.cfg.sample"'. Please copy it to
`"convert.cfg"', look inside it and change
the configuration variables. The more stable configuration variables, such
as the path names of the scripts and encoding files are located in
`"convert"' itself, they are automatically
updated when installing ttf2ufm.
Put all the TTF fonts you want to convert into some directory
(this may be just the directory that already contains all the Windows fonts
on a mounted FAT filesystem). If you have fonts in different source encoding
then put the fonts in each of the encodings into a separate directory. Up to
10 source directories are supported. If you (in a rather unlikely case) have
more source directories then you can make two separate runs of the
converter, converting up to 10 directories at a time.
The variables in the configuration file are:
- "SRCDIRS" - the
list of directories (with absolute paths) with TTF fonts. Each line
contains at least 3 fields: the name of the directory, the language of the
fonts in it (if you have fonts for different languages you have to put
them into the separate directories) and the encoding of the fonts. Again,
if you have some of the TTF typefaces in one encoding, and some in another
(say, CP-1251 and KOI-8), you have to put them into the separate source
directories. Some lines may contain 4 fields. Then the fourth field is the
name of the external map to convert the Unicode fonts into the desirable
encoding. This map is used instead of the built-in map for the specified
language.
*8* An interesting thing is that some languages have more than
one widely used character encodings. For example, the widely used
encodings for Russian are IBM CP-866 (MS-DOS and Unix), KOI-8 (Unix and
VAX, also the standard Internet encoding), IBM CP-1251 (MS Windows).
That's why I have provided the means to generate the converted fonts in
more than one encoding. See the file encodings/README for details about
the encoding tables. Actually, if you plan to use these fonts with
Netscape Navigator better use the aliases cp-866 instead of ibm-866 and
windows-1251 instead of ibm-1251 because that's what Netscape wants.
- "DSTDIR" -
directory for the resulting Type1 fonts. Be careful! This directory gets
completely wiped out before conversion, so don't use any already existing
directory for this purpose.
- "DSTENC{language}"
- the list of encodings in which the destination fonts will be generated
for each language. Each font of that language will be generated in each of
the specified encodings. If you don't want any translation, just specify
both "SRCENC" and
"DSTENC" as iso8859-1 (or if you want
any other encoding specified in the fonts.dir, copy the description of
8859-1 with new name and use this new name for
"SRCENC" and
"DSTENC").
- "FOUNDRY" - the
foundry name to be used in the fonts.dir file. I have set it to `fromttf'
to avoid name conflicts with any existing font for sure. But this foundry
name is not registered in X11 standards and if you want to get the full
standard compliance or have a font server that enforces such a compliance,
use `misc'.
The next few parameters control the general behavior of the
converter. They default values are set to something reasonable.
- "CORRECTWIDTH" - if
the value is set to
"YES" then use the
converter option
"-w",
otherwise don't use it. See the description of this option in the README
file.
- "REMOVET1A" - if
the value is set to
"YES" then after
conversion remove the un-encoded ".t1a"
font files and the intermediate ".xpfa"
font metric files.
- "INSTALLFONTMAP" -
a Ghostscript parameter, if the value is set to
"YES" then install
the entries for the new fonts right into the main
"Fontmap" file. Otherwise just leave the
file "Fontmap.ttf" in the Ghostscript
configuration directory.
- "HINTSUBST" - if
the value is set to
"YES" use the
option
"-H",
otherwise don't use it. This option enables the hint substitution
technique. If you have not installed the X11 patch described above, use
this option with great caution. See further description of this option in
the README file.
- "ENFORCEISO" - if
the value is set to
"YES" then disguise
the resulting fonts as the fonts in ISOLatin1 encoding. Historically this
was neccessary due to the way the installer scripts created the X11 font
configuration files. It is not neccessary any more for this purpose. But
if you plan to use these fonts with some other application that expects
ISOLatin1 encoding then better enable this option.
- "ALLGLYPHS" - if
the value is set to
"YES" then include
all the glyphs from the source fonts into the resulting fonts, even if
these glyphs are inaccessible. If it's set to
"NO" then include
only the glyphs which have codes assigned to them. The glyphs without
codes can not be used directly. But some clever programs, such as the Type
1 library from XFree86 3.9 and higher can change the encoding on the fly
and use another set of glyphs. If you have not installed the X11 patch
described above, use this option with great caution. See further
description of the option option
"-a"
in the README file.
- "GENUID" - if the
value is set to
"YES" then use the
option
"-uA"
of the converter to generate UniqueIDs for the converted fonts. The
standard X11 Type 1 library does not use this ID, so it may only be
neccessary for the other applications. The script is clever enough to
generate different UniqueID for the same font converted to multiple
encodings. Also after conversion it checks all the fonts generacted during
the session for duplicated UniqueID and shows those. Still, this does not
quarantee that these UniqueIDs won't overlap with some other fonts. The
UniqueIDs are generated as hash values from the font names, so it's
guaranteed that if the `"convert"'
script runs multiple times it will generate the same UniqueIDs during each
run. See further description of this option in the README file.
- "GENUID" - if the
value is set to
"YES" then create
the ".pfb" files, otherwise the
".pfa" files. The
".pfb" files are more compact but
contain binary data, so you may experience some troubles when transferring
them through the network.
The following parameters are used to locate the other scripts and
configuration files. By default the scripts do a bit of guessing for them:
they search in the ttf2ufm installation directory if ttf2ufm
was installed or otherwise suppose that you are running
`"convert"' with
`"scripts"' subdirectory being the current
directory.
- "ENCDIR" -
directory containing the descriptions of encodings
- "MAPDIR" -
directory containing the external map files
Besides that a few parameters are built into the
`"convert"' script itself. You probably
won't need to change them:
- •
- "T1ASM",
"TTF2UFM",
"TRANS",
"T1FDIR",
"FORCEISO"
- paths to the other script
Also there are a few parameters controlling the installation of
fonts for Ghostscript. Please look at their description in the Ghostscript
section of documentation or in the
ttf2ufm_x2gs(1) manual page before running
`"convert"'. If these parameters are set,
`"convert"' will call the
`"x2gs"' script automatically to install
the newly converted fonts in Ghostscript.
After creating the configuration file run the
`"convert"' script. Look at the result and
the log file in "DSTDIR".
Add the directory with newly converted fonts to the configuration
of X server or font server. For most of the systems this step is very
straightforward. For HP-UX it's rather tricky and poorly documented, so the
file FONTS.hpux gives a short description.
If you don't have the privileges of the root user, you still can
configure your private font server. Just use some non-standard port number
(see FONTS.hpux for an example, exept that you won't need all the HP-related
stuff on any other system).
- TTF2UFM_SHAREDIR/scripts/convert.cfg.sample
- TTF2UFM_SHAREDIR/scripts/*
- TTF2UFM_SHAREDIR/README
- TTF2UFM_SHAREDIR/FONTS
- TTF2UFM_SHAREDIR/*
- TTF2UFM_BINDIR/ttf2ufm
- One catch is that the X11 Type 1 font library has a rather low limit on
the font size. Because of this the fonts with more complicated outlines
and the enabled hint substitution may not fit into this limit. The same
applies to the fonts with very complicated outlines or with very many
glyphs (especially the fonts with over 256 glyphs). So you will need to
excercise caution with these options if you plan using these fonts with
X11. Some vendors such as HP provide the Type 1 implementation licensed
from Adobe which should have no such problem.
But there is a solution even for the generic X11. A patch
located in the subdirectory
`"app/X11"' fixes this problem as well
as some other minor problems. Its description is provided in
app/X11/README.
To fix the X11 font library, you have to get the X11 sources.
I can recommend the ftp sites of the XFree86 project
ftp://ftp.xfree86.org or of the Open Group ftp://ftp.x.org. This patch
was made on the sources of XFree86 so you may have better success with
applying it to the XFree86 distribution. After you have got the sources,
make sure that you can compile them. Then apply the patch as described.
Make sure that it was applied properly. Compile the sources again
(actually, you need only the fonts library, the fonts server, and
possibly the X server). It would be prudent now to save your old font
library, font server and, possibly, X server. Then install the new
recently compiled versions of these files. Of course, if you know
someone who already has compiled these files for the same OS as yours,
you can just copy the binary fles from him.
Alas, building the X11 system from the source code is not the
easiest thing in the world and if you have no experience it can be quite
difficult. In this case just avoid the aforementioned features or check
each converted font to make sure that it works properly.
- The Type1 font library from the standard X11 distribution does not work on
HP-UX (at least, up to 10.01). The font server supplied with HP-UX up to
10.01 is also broken. Starting from HP-UX 10.20 (I don't know about 10.10)
they supply a proprietary font library and the converted fonts work fine
with it, provided that they are configured properly (see the file
FONTS.hpux).
- The "fonts.scale" files created by the
older versions of the "ttf2ufm"
installation program (up to release 3.1) have conflicted with the language
definitions of the "Xfsft" font server
and parts of it included into XFree86. To overcome this incompatibility
the never versions creats the
"fonts.scale" file describing all the
fonts as belonging to the
"adobe-fontspecific" encoding and the
"fonts.alias" file with the proper
names. The drawback of this solution is that
"xlsfonts" gives the list of twice more
fonts. But as a side effect the option
"ENFORCEISO"
in `"convert.cfg"' is not required for
X11 any more.
- The conversion script has no support for Eastern multi-plane fonts.
Contribution of such a support would be welcome.