NAME¶
ttf2ufm_convert - convenience font conversion script
SYNOPSIS¶
ttf2ufm_convert
[config-file]
DESCRIPTION¶
`
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).
FILES¶
- •
- TTF2UFM_SHAREDIR/scripts/convert.cfg.sample
- •
- TTF2UFM_SHAREDIR/scripts/*
- •
- TTF2UFM_SHAREDIR/README
- •
- TTF2UFM_SHAREDIR/FONTS
- •
- TTF2UFM_SHAREDIR/*
- •
- TTF2UFM_BINDIR/ttf2ufm
SEE ALSO¶
- •
- ttf2ufm(1)
- •
- ttf2ufm_x2gs(1)
- •
- t1asm(1)
BUGS¶
Known problems¶
- •
- 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.